mysql_replication – Manage MySQL replication

New in version 1.3.

Synopsis

  • Manages MySQL server replication, slave, master status get and change master host.

Requirements

The below requirements are needed on the host that executes this module.

  • PyMySQL (Python 2.7 and Python 3.X), or
  • MySQLdb (Python 2.x)

Parameters

Parameter Choices/Defaults Comments
config_file
-
added in 2.0
Default:
"~/.my.cnf"
Specify a config file from which user and password are to be read.
connect_timeout
-
added in 2.1
Default:
30
The connection timeout when connecting to the MySQL server.
login_host
-
Default:
"localhost"
Host running the database.
login_password
-
The password used to authenticate with.
login_port
-
Default:
3306
Port of the MySQL server. Requires login_host be defined as other then localhost if login_port is used.
login_unix_socket
-
The path to a Unix domain socket for local connections.
login_user
-
The username used to authenticate with.
master_auto_position
-
added in 2.0
does the host uses GTID based replication or not
master_connect_retry
-
same as mysql variable
master_host
-
same as mysql variable
master_log_file
-
same as mysql variable
master_log_pos
-
same as mysql variable
master_password
-
same as mysql variable
master_port
-
same as mysql variable
master_ssl
-
    Choices:
  • 0
  • 1
same as mysql variable
master_ssl_ca
-
same as mysql variable
master_ssl_capath
-
same as mysql variable
master_ssl_cert
-
same as mysql variable
master_ssl_cipher
-
same as mysql variable
master_ssl_key
-
same as mysql variable
master_user
-
same as mysql variable
mode
-
    Choices:
  • getslave ←
  • getmaster
  • changemaster
  • stopslave
  • startslave
  • resetslave
  • resetslaveall
module operating mode. Could be getslave (SHOW SLAVE STATUS), getmaster (SHOW MASTER STATUS), changemaster (CHANGE MASTER TO), startslave (START SLAVE), stopslave (STOP SLAVE), resetslave (RESET SLAVE), resetslaveall (RESET SLAVE ALL)
relay_log_file
-
same as mysql variable
relay_log_pos
-
same as mysql variable
ssl_ca
-
added in 2.0
The path to a Certificate Authority (CA) certificate. This option, if used, must specify the same certificate as used by the server.
ssl_cert
-
added in 2.0
The path to a client public key certificate.
ssl_key
-
added in 2.0
The path to the client private key.

Notes

Note

  • Requires the PyMySQL (Python 2.7 and Python 3.X) or MySQL-python (Python 2.X) Python package on the remote host. For Ubuntu, this is as easy as apt-get install python-pymysql. (See apt.) For CentOS/Fedora, this is as easy as yum install python2-PyMySQL. (See yum.)
  • Both login_password and login_user are required when you are passing credentials. If none are present, the module will attempt to read the credentials from ~/.my.cnf, and finally fall back to using the MySQL default login of ‘root’ with no password.

Examples

# Stop mysql slave thread
- mysql_replication:
    mode: stopslave

# Get master binlog file name and binlog position
- mysql_replication:
    mode: getmaster

# Change master to master server 192.0.2.1 and use binary log 'mysql-bin.000009' with position 4578
- mysql_replication:
    mode: changemaster
    master_host: 192.0.2.1
    master_log_file: mysql-bin.000009
    master_log_pos: 4578

# Check slave status using port 3308
- mysql_replication:
    mode: getslave
    login_host: ansible.example.com
    login_port: 3308

Status

Authors

  • Balazs Pocze (@banyek)

Hint

If you notice any issues in this documentation you can edit this document to improve it.