73 lines
2.3 KiB
YAML
73 lines
2.3 KiB
YAML
|
---
|
||
|
|
||
|
# Doc: https://www.percona.com/doc/percona-xtrabackup/2.1/howtos/recipes_ibkx_gtid.html
|
||
|
|
||
|
- name: WAIT_FOR | source data (prevent rsync bug) - TODO find another hack
|
||
|
wait_for: host={{ mysql_slave_import_from }} port=22
|
||
|
|
||
|
- name: COMMAND | Prepare backup another server
|
||
|
command: innobackupex --no-timestamp {{ mysql_backup_dir }} creates={{ mysql_backup_dir }}
|
||
|
delegate_to: "{{ mysql_slave_import_from }}"
|
||
|
register: backup
|
||
|
|
||
|
- name: SHELL | Dump
|
||
|
shell: innobackupex --apply-log {{ mysql_backup_dir }}
|
||
|
delegate_to: "{{ mysql_slave_import_from }}"
|
||
|
when: backup.changed
|
||
|
|
||
|
- name: FILE | Remove mysql db from backup
|
||
|
file: path={{ mysql_backup_dir }}/mysql state=absent
|
||
|
delegate_to: "{{ mysql_slave_import_from }}"
|
||
|
when: backup.changed and not mysql_slave_replicate_mysqldb
|
||
|
|
||
|
- name: MYSQL_VARIABLES | Get datadir
|
||
|
mysql_variables: variable=datadir
|
||
|
register: datadir
|
||
|
|
||
|
- name: SET_FACT | related to mysql datadir
|
||
|
set_fact:
|
||
|
mysql_mysql_datadir: "{{ datadir.msg[0][1] }}"
|
||
|
mysql_binlog_info: "{{ datadir.msg[0][1] }}/xtrabackup_binlog_info"
|
||
|
|
||
|
- name: SERVICE | Stop MySQL before importing data
|
||
|
service: name=mysql state=stopped
|
||
|
|
||
|
- name: COMMAND | Sync backup to slave - TODO remove vagrant as static user (see why mysql_backup_user is not working)
|
||
|
shell: "sudo -E rsync --rsync-path='sudo rsync' -a -e 'ssh -o StrictHostKeyChecking=no' vagrant@{{ mysql_slave_import_from }}:{{ mysql_backup_dir }}/ {{ mysql_mysql_datadir }}/"
|
||
|
become: no
|
||
|
|
||
|
- name: FILE | Re-apply owner
|
||
|
file: >
|
||
|
path={{ mysql_mysql_datadir }}
|
||
|
state=directory
|
||
|
owner=mysql
|
||
|
group=mysql
|
||
|
recurse=yes
|
||
|
|
||
|
- name: SERVICE | Start MySQL
|
||
|
service: name=mysql state=started
|
||
|
|
||
|
- name: SHELL | Get master_log_file
|
||
|
command: awk '{ print $1 }' {{ mysql_binlog_info }}
|
||
|
register: master_log_file
|
||
|
|
||
|
- name: SHELL | Get master_log_pos
|
||
|
command: awk '{ print $2 }' {{ mysql_binlog_info }}
|
||
|
register: master_log_pos
|
||
|
|
||
|
- name: SHELL | Get master GTID
|
||
|
command: awk '{ print $3 }' {{ mysql_binlog_info }}
|
||
|
register: master_gtid
|
||
|
|
||
|
- name: SET_FACT | master_log_file
|
||
|
set_fact:
|
||
|
mysql_master_log_file: "{{ master_log_file.stdout }}"
|
||
|
mysql_master_log_pos: "{{ master_log_pos.stdout }}"
|
||
|
mysql_master_gtid: "{{ master_gtid.stdout }}"
|
||
|
|
||
|
- name: FILE | Delete dump
|
||
|
file: path={{ mysql_backup_dir }} state=absent
|
||
|
delegate_to: "{{ mysql_slave_import_from }}"
|
||
|
when: mysql_slave_import_flush_dump
|
||
|
|