一、基于GTID的主从复制#
1.什么是GTID
Copy1.全局事务标识符
2.组成:UUID + TID
f03a53e0-cd46-11ea-a2c4-000c292c767e:1
2.GTID主从复制的优点
Copy1.GTID同步时开启多个SQL线程,每一个库同步时开启一个线程,由原本的串行sql线程变成并行开启多个sql线程,加快读取中继日志速度。
2.binlog在rows模式下,binlog内容比寻常的主从更加简洁
3.GTID主从复制会记录主从信息,不需要手动配置binlog和位置点
3.GTID主从复制的缺点
Copy1.备份时更加麻烦,需要额外加一个参数 --set-gtid=on
2.主从复制出现错误,没有办法跳过错误
4.搭建GTID主从复制
1)配置三台数据库
Copy#配置第一台主库 [root@db01 ~]# vim /etc/my.cnf [mysqld] server_id=1 log_bin=/usr/local/mysql/data/mysql-bin
#配置第一台从库 [root@db02 ~]# vim /etc/my.cnf [mysqld] server_id=2
#配置第二台从库 [root@db03 ~]# vim /etc/my.cnf [mysqld] server_id=3
2)查看是否开启GTID
Copymysql> show variables like '%gtid%';
+---------------------------------+-----------+
| Variable_name | Value |
+---------------------------------+-----------+
| binlog_gtid_simple_recovery | OFF |
| enforce_gtid_consistency | OFF |
| gtid_executed | |
| gtid_mode | OFF |
| gtid_next | AUTOMATIC |
| gtid_owned | |
| gtid_purged | |
| simplified_binlog_gtid_recovery | OFF |
+---------------------------------+-----------+
8 rows in set (0.00 sec)
3)开启GTID
Copy#主库配置 [root@db01 ~]# vim /etc/my.cnf [mysqld] server_id=1 log_bin=/usr/local/mysql/data/mysql-bin gtid_mode=on enforce_gtid_consistency log-slave-updates
#从库1的配置 [root@db02 ~]# vim /etc/my.cnf [mysqld] server_id=2 log_bin=/usr/local/mysql/data/mysql-bin gtid_mode=on enforce_gtid_consistency log-slave-updates
#从库2的配置 [root@db02 ~]# vim /etc/my.cnf [mysqld] server_id=3 log_bin=/usr/local/mysql/data/mysql-bin gtid_mode=on enforce_gtid_consistency log-slave-updates
4)扩展
Copy#配置log-slave-updates参数的场景
1.基于GTID的主从复制
2.双主架构+keepalived
3.级联复制
4.MHA
5)主库创建用户
Copymysql> grant replication slave on *.* to rep@'172.16.1.5%' identified by '123';
6)主库数据同步到从库
Copymysqldump -uroot -p -R --triggers --master-data=2 --single-transaction -A > /tmp/full.sql
scp
mysql < full.sql
7)从库配置主从
Copymysql> change master to
-> master_host='172.16.1.51',
-> master_user='rep',
-> master_password='123',
-> master_auto_position=1;
Query OK, 0 rows affected, 2 warnings (0.03 sec)
5.GTID复制和传统复制的区别
CopyGTID复制: CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_USER='repl', MASTER_PASSWORD='123' , MASTER_AUTO_POSITION=1; 指明为GTID复制模式
传统复制: CHANGE MASTER TO MASTER_HOST='10.0.0.51', MASTER_USER='repl', MASTER_PASSWORD='123', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=887, MASTER_CONNECT_RETRY=10;
总结: MASTER_AUTO_POSITION=1; 指明为GTID复制模式后, 会自动寻找复制起点