%PDF- %PDF-
| Direktori : /etc/ansible/roles/mysql/tasks/ |
| Current File : //etc/ansible/roles/mysql/tasks/change_master.yml |
---
# Replace master server by one of the slaves
# Options:
# slave_server - name of the replacement
# serverid - id of the replacement
- include: sites-gathering_facts.yml
- include: sites-checks.yml
- include: mysql-check-master.yml
- name: additional variables that present mysql server
set_fact:
new_replication_role: master
new_master_server: "{{ slave_server }}"
old_master_server: "{{ master_server }}"
new_master_serverid: "{{ serverid }}"
new_master_server_ip: "{{ hostvars[slave_server]['bx_netaddr'] }}"
tags: vars
- include: common-etckeeper.yml
when: "slave_server == inventory_hostname or master_server == inventory_hostname"
- include: sites-make_public.yml
when: "inventory_hostname == cluster_web_server"
- name: read-only mode on master server
delegate_to: "{{ master_server }}"
mysql_variables: variable=read_only value=1 login_unix_socket={{ mysql_socket }}
tags: mysql
when: "inventory_hostname == slave_server"
# delete replication from new master
- include: mysql-configure-master.yml
when: "inventory_hostname == slave_server"
- include: mysql-new_master-lock.yml
when: "'bitrix-mysql' in group_names"
vars:
lock: mysql
# use replacement like new master
- name: stop pt-slave-restart
service:
name: pt-slave-restart
state: stopped
enabled: no
when: "inventory_hostname == slave_server"
ignore_errors: yes
- include: mysql-configure-slaves-new-master.yml
when: "'bitrix-mysql' in group_names and inventory_hostname != slave_server"
- include: mysql-pt-slave-restart-start.yml
when: "'bitrix-mysql' in group_names and inventory_hostname != slave_server"
# update runtime options for servers
- name: update master_server variable for web servers
set_fact:
master_server: "{{ new_master_server }}"
master_server_id: "{{ new_master_serverid }}"
tags: new_facts
- name: old master variables
set_fact:
mysql_replication_role: slave
when: "'bitrix-mysql' in group_names and inventory_hostname != new_master_server"
- name: new master variables
set_fact:
mysql_replication_role: master
when: "'bitrix-mysql' in group_names and inventory_hostname == new_master_server"
- include: mysql-new_master-lock.yml
vars:
lock: web
# change sites config files - replace DBHost in site config files: dbconn.php and .settings.php
- include: sites-update_settings.yml
when: "inventory_hostname == slave_server"
# update cluster module, delete master from slaves list in the cluster module
- include: sites-register_master.yml
when: "inventory_hostname == slave_server"
# update cluster module, add/update records for slave servers
- include: sites-register_slave.yml
when: "'bitrix-mysql' in group_names and inventory_hostname != slave_server"
# enable public part of site
- name: create site_stopped variable
set_fact: site_stopped='N'
- include: sites-make_public.yml
when: "inventory_hostname == cluster_web_server"
- name: remove the read-only mode from the master-server
mysql_variables: variable=read_only value=0 login_unix_socket={{ mysql_socket }}
tags: mysqld_master
when: "inventory_hostname == old_master_server"
- include: mysql-inventory-master.yml
when: "inventory_hostname == slave_server"
- name: delete lock files
file: path="/tmp/{{ slave_server }}{{ item }}" state=absent
with_items:
- _mysql.lock
- _web.lock
tags: mysql_sync
when: "inventory_hostname == slave_server"