---

# 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