--- - name: WAIT_FOR | source data (prevent rsync bug) - TODO find another hack wait_for: host: "{{ mariadb_slave_import_from }}" port: 22 - block: - name: FILE | Create backup directory file: path: "{{ mariadb_backup_dir }}" state: directory - name: COMMAND | Prepare backup another server command: "mariabackup --backup -u root --target-dir={{ mariadb_backup_dir }}" args: creates: "{{ mariadb_backup_dir }}/xtrabackup_info" register: backup - name: SHELL | Dump shell: "mariabackup --prepare --target-dir={{ mariadb_backup_dir }}" when: backup.changed register: prep changed_when: "'This target seems to be not prepared yet' in prep.stderr" - name: FILE | Remove mysql db from backup file: path: "{{ mariadb_backup_dir }}/mysql" state: absent when: backup.changed and not mariadb_slave_replicate_mysqldb delegate_to: "{{ mariadb_slave_import_from }}" - name: MYSQL_VARIABLES | Get datadir mysql_variables: variable: datadir register: datadir - name: SET_FACT | related to mysql datadir set_fact: mariadb_datadir: "{{ datadir.msg }}" mariadb_binlog_info: "{{ datadir.msg }}/xtrabackup_binlog_info" - name: SERVICE | Stop MariaDB before importing data service: name: mysql state: stopped # TODO: add an "ignore warning" - name: COMMAND | Sync backup to slave - TODO remove vagrant as static user (see why mariadb_backup_user is not working) shell: "sudo -E rsync --rsync-path='sudo rsync' -a -e 'ssh -o StrictHostKeyChecking=no' {{ mariadb_backup_user }}@{{ mariadb_slave_import_from }}:{{ mariadb_backup_dir }}/ {{ mariadb_datadir }}/" become: no - name: FILE | Re-apply owner file: path: "{{ mariadb_datadir }}" state: directory owner: mysql group: mysql recurse: yes - name: SHELL | Remove InnoDB redo logs shell: "rm -f {{ mariadb_datadir }}/ib_logfile*" args: removes: "{{ mariadb_datadir }}/ib_logfile0" - name: SERVICE | Start MariaDB service: name: mysql state: started - name: SHELL | Get master_log_file command: "awk '{ print $1 }' {{ mariadb_binlog_info }}" register: master_log_file - name: SHELL | Get master_log_pos command: "awk '{ print $2 }' {{ mariadb_binlog_info }}" register: master_log_pos - name: SHELL | Get master GTID command: "awk '{ print $3 }' {{ mariadb_binlog_info }}" register: master_gtid - name: SET_FACT | master_log_file set_fact: mariadb_master_log_file: "{{ master_log_file.stdout }}" mariadb_master_log_pos: "{{ master_log_pos.stdout }}" mariadb_master_gtid: "{{ master_gtid.stdout }}" - name: FILE | Delete dump file: path: "{{ mariadb_backup_dir }}" state: absent delegate_to: "{{ mariadb_slave_import_from }}" when: mariadb_slave_import_flush_dump