05ha.yml 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ---
  2. - name: Create readonly user
  3. mysql_user:
  4. name: repl
  5. password: "{{ repl_password | d(db_password) }}"
  6. host: '%'
  7. priv: '*.*:ALL'
  8. state: present
  9. login_user: "{{ db_user }}"
  10. login_password: "{{ db_password }}"
  11. - include_tasks: 10ha.yml
  12. when: inventory_hostname == groups['mariadb_ha_nodes'][0]
  13. - include_tasks: 20ha.yml
  14. when: inventory_hostname == groups['mariadb_ha_nodes'][1]
  15. - when: inventory_hostname == groups['mariadb_ha_nodes'][0]
  16. block:
  17. - name: Get primary binlog file name and binlog position
  18. mysql_replication:
  19. mode: getprimary
  20. login_user: "{{ db_user }}"
  21. login_password: "{{ db_password }}"
  22. delegate_to: "{{ groups['mariadb_ha_nodes'][1] }}"
  23. register: repl_info
  24. - name: Stop replica
  25. mysql_replication:
  26. mode: stopreplica
  27. login_user: "{{ db_user }}"
  28. login_password: "{{ db_password }}"
  29. - name: Change primary to db02 for db01
  30. mysql_replication:
  31. mode: changeprimary
  32. primary_host: "{{ hostvars[groups['mariadb_ha_nodes'][1]]['ansible_host'] }}"
  33. primary_log_file: "{{ repl_info.File }}"
  34. primary_log_pos: "{{ repl_info.Position }}"
  35. primary_user: "repl"
  36. primary_password: "{{ repl_password | d(db_password) }}"
  37. login_user: "{{ db_user }}"
  38. login_password: "{{ db_password }}"
  39. ignore_errors: true
  40. - name: Start replica
  41. mysql_replication:
  42. mode: startreplica
  43. login_user: "{{ db_user }}"
  44. login_password: "{{ db_password }}"
  45. - include_tasks: keepalived.yml