# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # Needs for further tests: - name: Stop slave mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: stopslave - name: Reset slave all mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: resetslaveall # Get master log pos: - name: Get master status mysql_replication: login_host: 127.0.0.1 login_port: "{{ primary_db.port }}" mode: getmaster register: primary_status # Test changemaster mode: - name: Run replication with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: changemaster master_host: 127.0.0.1 master_port: "{{ primary_db.port }}" master_user: "{{ replication_user }}" master_password: "{{ replication_pass }}" master_log_file: mysql-bin.000001 master_log_pos: '{{ primary_status.Position }}' connection_name: '{{ conn_name }}' register: result - assert: that: - result is changed - result.queries[0] is match("CHANGE MASTER ('\S+' )?TO MASTER_HOST='[0-9.]+',MASTER_USER='\w+',MASTER_PASSWORD='[*]{8}',MASTER_PORT=\d+,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=\d+") # Test startslave mode: - name: Start slave with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: startslave connection_name: "{{ conn_name }}" register: result - assert: that: - result is changed - result.queries == ["START SLAVE \'{{ conn_name }}\'"] # Test getslave mode: - name: Get standby statu with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: getslave connection_name: "{{ conn_name }}" register: slave_status - assert: that: - slave_status.Is_Slave == true - slave_status.Master_Host == '127.0.0.1' - slave_status.Exec_Master_Log_Pos == primary_status.Position - slave_status.Master_Port == {{ primary_db.port }} - slave_status.Last_IO_Errno == 0 - slave_status.Last_IO_Error == '' - slave_status is not changed # Test stopslave mode: - name: Stop slave with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: stopslave connection_name: "{{ conn_name }}" register: result - assert: that: - result is changed - result.queries == ["STOP SLAVE \'{{ conn_name }}\'"] # Test reset - name: Reset slave with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: resetslave connection_name: "{{ conn_name }}" register: result - assert: that: - result is changed - result.queries == ["RESET SLAVE \'{{ conn_name }}\'"] # Test reset all - name: Reset slave all with connection_name mysql_replication: login_host: 127.0.0.1 login_port: "{{ replica_db.port }}" mode: resetslaveall connection_name: "{{ conn_name }}" register: result - assert: that: - result is changed - result.queries == ["RESET SLAVE \'{{ conn_name }}\' ALL"]