DEV-380: __fast__ lauffaehig ohne Probleme (TM) ;)
parent
5cac30fede
commit
2c64432d1e
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,116 @@
|
||||
---
|
||||
- debug:
|
||||
msg: "{{ props }}"
|
||||
when: debug
|
||||
|
||||
- name: "Ensure replication user exists on master"
|
||||
mysql_user:
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
name: "{{ mysql_replication_user.name }}"
|
||||
host: "{{ mysql_replication_user.host | default('%') }}"
|
||||
password: "{{ mysql_replication_user.password }}"
|
||||
priv: "{{ mysql_replication_user.priv | default('*.*:REPLICATION SLAVE,REPLICATION CLIENT') }}"
|
||||
state: present
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'master'
|
||||
- mysql_replication_user.name is defined
|
||||
- (mysql_replication_master | length) > 0
|
||||
|
||||
- name: "Create temporarily backup user on master instance to dump all DBs"
|
||||
mysql_user:
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
name: "{{ mysqldump_creds.username }}"
|
||||
host: "{{ mysqldump_creds.host }}"
|
||||
password: "{{ mysqldump_creds.password }}"
|
||||
priv: "{{ mysqldump_creds.priv }}"
|
||||
state: present
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'master'
|
||||
- import_dump | default(False)
|
||||
|
||||
# using shell module due to missing SSL-flag in mysql_db module
|
||||
- name: "Dumpall DBs"
|
||||
# delegate_to: "{{ mysql_replication_slave }}"
|
||||
# no_log: True
|
||||
no_log: False
|
||||
shell: "mysqldump -A -h {{ mysql_replication_master }} -u {{ mysqldump_creds.username }} -p{{ mysqldump_creds.password }} --ssl > {{ backup_target }}"
|
||||
register: mysql_dump
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- import_dump | default(False)
|
||||
|
||||
- name: "Check slave replication status"
|
||||
mysql_replication:
|
||||
mode: getreplica
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
ignore_errors: true
|
||||
register: slaveinfo
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- (mysql_replication_master | length) > 0
|
||||
|
||||
- name: "DEBUG"
|
||||
debug:
|
||||
msg: "return slave: {{ slaveinfo.Is_Replica }}"
|
||||
when:
|
||||
- debug
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- slaveinfo is defined
|
||||
|
||||
- name: "Import dumped DBs from mysql-master"
|
||||
mysql_db:
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
state: import
|
||||
name: all
|
||||
target: "{{ backup_target }}"
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- import_dump | default(False)
|
||||
|
||||
# TODO SSL TRUST
|
||||
- name: "Check master replication status."
|
||||
mysql_replication:
|
||||
mode: getprimary
|
||||
login_host: "{{ mysql_replication_master }}"
|
||||
login_user: "{{ mysql_replication_user.name }}"
|
||||
login_password: "{{ mysql_replication_user.password }}"
|
||||
ca_cert: '/tmp/{{ mysql_replication_master }}.ca.crt'
|
||||
register: masterinfo
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- slaveinfo is defined
|
||||
- (slaveinfo.Is_Replica is defined and not slaveinfo.Is_Replica) or (slaveinfo.Is_Replica is not defined and slaveinfo is failed)
|
||||
- (mysql_replication_master | length) > 0
|
||||
|
||||
- name: "Configure replication on the slave"
|
||||
mysql_replication:
|
||||
mode: changeprimary
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
master_host: "{{ mysql_replication_master }}"
|
||||
master_user: "{{ mysql_replication_user.name }}"
|
||||
master_password: "{{ mysql_replication_user.password }}"
|
||||
master_log_file: "{{ masterinfo.File }}"
|
||||
master_log_pos: "{{ masterinfo.Position }}"
|
||||
ignore_errors: true
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- slaveinfo is defined
|
||||
- (slaveinfo.Is_Replica is defined and not slaveinfo.Is_Replica) or (slaveinfo.Is_Replica is not defined and slaveinfo is failed)
|
||||
- mysql_replication_user.name is defined
|
||||
- (mysql_replication_master | length) > 0
|
||||
|
||||
- name: "Start replication"
|
||||
mysql_replication:
|
||||
mode: startreplica
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
login_password: "{{ mysql_root_password }}"
|
||||
when:
|
||||
- props[inventory_hostname].mysql_replication_role == 'slave'
|
||||
- slaveinfo is defined
|
||||
- (slaveinfo.Is_Replica is defined and not slaveinfo.Is_Replica) or (slaveinfo.Is_Replica is not defined and slaveinfo is failed)
|
||||
- (mysql_replication_master | length) > 0
|
||||
Loading…
Reference in New Issue