First, prepare the environment
[root@localhost ~]# vim /etc/hosts
Master2 Master1 192.168.40.129 192.168.40.154
192.168.40.138 192.168.40.128 slave1 slave2
Note: Four virtual machine configuration are the same, and the firewall is turned off
Second, the main settings bis
master1 (its database is getting ready library in advance)
1、[root@localhost ~]# vim /etc/my.cnf
log_bin
server-id=1
gtid_mode=ON
enforce_gtid_consistency=1
2、[root@localhost ~]# systemctl restart mysqld
3、授权:mysql>grant replication slave,replication client on *.* to 'rep'@'192.168.40.%' identified by 'Zjz@5740';
4, mysql> flush privileges; (refresh)
5、备份:mysqldump -p'Zjz@5740' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F`-mysql-all.sql
6、#scp -r 2017-1-1-mysql-all.sql master2:/tmp
7, the split point was observed binary log
CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000002', MASTER_LOG_POS=154;
master2
1, [root @ localhost ~] #vim /etc/my.cnf (binary log start, the server ID, GTID)
log_bin
server-id=2
gtid_mode=ON
enforce_gtid_consistency=1
2、[root@localhost ~]# systemctl restart mysqld
Also manually synchronize data recovery
mysql>set sql_log_bin=0;
mysql>source /tmp/2017-1-1-mysql-full.sql
mysql>select * from master1db.master1tab;
3, the primary server
mysql> change master to
master_host='master1',
master_user='rep',
master_password='Zjz@5740',
master_auto_position=1;
start slave;
show slave status\G;
master1 recognize master2 based
master2授权:mysql>grant replication slave,replication client on *.* to 'rep'@'192.168.40.%' identified by 'Zjz@5740';
flush privileges; (refresh)
master1: primary server
mysql> change master to
master_host='master2',
master_user='rep',
master_password='Zjz@5740',
master_auto_position=1;
start slave;
show slave status\G;
mysqldump -p'Zjz@5740' --all-databases --single-transaction --master-data=2 --flush-logs > `date +%F`-mysql-all.sql
scp -r 2017-8-9-mysql-all.sql slave1:/tmp
scp -r 2017-8-9-mysql-all.sql slave2:/tmp
Third, the bis provided
slave1 # mysql -p'Zjz@5740' < /tmp/2017-8-9-mysql-all.sql
slave2 #mysql -p'Zjz@5740' < /tmp/2017-8-9-mysql-all.sql
Start from the server ID, gtid
slave1 slave2
#vim /etc/my.cnf # vim /etc/my.cnf
server-id=3 server-id=4
gtid_mode=ON gtid_mode=ON
enforce_gtid_consistency=1 enforce_gtid_consistency=1
master-info-repository=TABLE master-info-repository=TABLE
relay-log-info-repository=TABLE relay-log-info-repository=TABLE
#systemctl restart mysqld #systemctl restart mysqld
Primary server
Slave1 (identify two main servers)
mysql> change master to mysql> change master to
master_host='master1', master_host='master2',
master_user='rep', master_user='rep',
master_password='Zjz@5740', master_password='Zjz@5740',
master_auto_position=1 for channel 'master1'; master_auto_position=1 for channel 'master1';
mysql>start slave;
mysql> show slave status \ G; (yes double success)
slave2 above operation
IV Summary
1, appears connettion, restart the computer to try
2, some of the steps and then stop slave operation
3、[root@slave1 ~]# mysql -p'Zjz@5740' < /tmp/2019-08-29-mysql-all.sqlmysql:
[Warning] Using a password on the command line interface can be insecure.
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
Solution: mysql> reset master; (enter slave1)
Query OK, 0 rows affected (0.10 sec)
mysql> \q
Bye