2025-12-23 19:56:26 +08:00

84 lines
2.2 KiB
YAML

---
- name: Wait For MariaDB To Be Ready Before Preparing Replica
ansible.builtin.wait_for:
host: '{{ private_ip }}'
port: 3306
delay: 5
timeout: 600
state: started
- name: Wait Until MariaDB Responds To Query
community.mysql.mysql_query:
login_user: root
login_password: '{{ mariadb_root_password }}'
login_host: '{{ private_ip }}'
login_port: 3306
query: 'SELECT 1;'
register: db_ready
retries: 20
delay: 3
until:
- db_ready.query_result is defined
- db_ready.query_result | length > 0
- db_ready.query_result[0] | length > 0
- "'1' in db_ready.query_result[0][0]"
- db_ready.query_result[0][0]['1'] == 1
- name: Get Current GTID from MariaDB
community.mysql.mysql_query:
login_user: root
login_password: '{{ mariadb_root_password }}'
login_host: '{{ private_ip }}'
login_port: 3306
query: 'SELECT @@GLOBAL.gtid_binlog_pos;'
register: gtid_result
- name: Set GTID fact
set_fact:
current_gtid_pos: '{{ gtid_result.query_result[0][0]["@@GLOBAL.gtid_binlog_pos"] }}'
- name: Check If server-id Exists In MariaDB config
ansible.builtin.shell: "grep -E '^server-id\\s*=' /etc/mysql/conf.d/jingrow.cnf"
register: server_id_line
failed_when: false
changed_when: false
- name: Configure New MariaDB Server ID
ansible.builtin.lineinfile:
path: /etc/mysql/conf.d/jingrow.cnf
regexp: '^server-id\s*='
line: 'server-id = {{ mariadb_server_id }}'
state: present
when: server_id_line.rc == 0
- name: Restart MariaDB Service
ansible.builtin.systemd:
daemon_reload: true
name: mariadb
state: restarted
enabled: yes
- name: Wait for MariaDB to be ready
ansible.builtin.wait_for:
host: '{{ private_ip }}'
port: 3306
delay: 5
timeout: 600
state: started
- name: Reset Replica
community.mysql.mysql_replication:
mode: resetreplica
login_user: root
login_password: '{{ mariadb_root_password }}'
login_host: '{{ private_ip }}'
login_port: 3306
- name: Set Slave GTID Position
community.mysql.mysql_query:
login_user: root
login_password: '{{ mariadb_root_password }}'
login_host: '{{ private_ip }}'
login_port: 3306
query: 'SET GLOBAL gtid_slave_pos = "{{ current_gtid_pos }}";'