A high end ansible role to setup Percona server version 5.7 or greater with best practices in terms of security and performance tunning.
- Best Practices(Performance Tunning)
- Backup Server Management
- Database and User Management
No special requirement, only root access of the server is required.
We have categorized variables into two part i.e. Manadatory and Optional
| Variable | Default Value | Possible Values | Description |
|---|---|---|---|
| mysql_root_username | root |
Root Username | Name of the admin user of MySQL |
| mysql_root_password | N0Tweak$_@123! |
Any Strong Password | A strong password for MySQL root user |
| mysql_replication_user.name | slave |
Any Username | Name of the slave user |
| mysql_replication_user.password | slaveMaster@123! |
Any Strong Password | A strong password for MySQL Slave |
| mysql_backup_user.name | backup |
Any Username | Name of the Percona xtrabackup user |
| mysql_backup_user.password | backUpMaster@123! |
Any Strong Password | A strong password for Percona xtrabackup user |
| mysql_install_packages | true |
true or false | Whether you want to install MySQL packages. Set the value false if you need only configuration part |
| replication | true |
true or false | If you don't want to setup slave, set the value false |
| backup | true |
true or false | If you don't want to setup backup server, set the value false |
| users_creation | true |
true or false | Whether you want to include tasks for user creation or not |
| database_creation | true |
true or false | Whether you want to include tasks for database creation or not |
| Variable | Default Value | Possible Values | Description |
|---|---|---|---|
| mysql_config_file | /etc/mysql/percona-server.conf.d/mysqld.cnf |
Any Linux Path | Configuration file location of MySQL |
| mysql_slow_query_log_file | /var/log/mysql/mysql-slow.log |
Any Linux Path | Log file location of MySQL slow query |
| mysql_log_error | /var/log/mysql/mysql.err |
Any Linux Path | Log file location of MySQL errors |
| mysql_max_binlog_size | 100M |
Size in MB | Maximum size of bin log files in MySQL |
| mysql_binlog_format | MIXED |
ROW or COLOUMN or MIXED | Binlog format of MySQL |
| version | 5.7 | MySQL Version greater than 5.7 | Which version of MySQL you want to install on Debian System |
The rest of the things are in defaults
An example inventory could be like this:-
[master]
master_server1
[slave]
slave_server1 mysql_server_id=2
slave_server2 mysql_server_id=3 mysql_backup_server=true
[mysql]
master_server1
slave_server1
slave_server2
[mysql_cluster:children]
mysql
master
slave
[mysql_cluster:vars]
ansible_user=ubuntuNote:
-
Leave blank
masterandslaveif you want to setup standalone server. -
Define
mysql_backup_serverif you want server work as backup server
Here is an example of playbook to execute this role:-
---
- hosts: mysql_cluster
roles:
- role: percona_server
become: yesThere are multiple ways of executing the playbook according to your environment
- To run complete role
ansible-playbook -i hosts site.yml- To create users
ansible-playbook -i hosts site.yml --tags "create_user"- To create databases
ansible-playbook -i hosts site.yml --tags "create_database"Here we do have some of our OpsTree blog's regarding MySQL.
