GTID主從複製
阿新 • • 發佈:2020-07-25
目錄
一、基於GTID的主從複製
1.什麼是GTID
1.全域性事務識別符號
2.組成:UUID + TID
f03a53e0-cd46-11ea-a2c4-000c292c767e:1
2.GTID主從複製的優點
1.GTID同步時開啟多個SQL執行緒,每一個庫同步時開啟一個執行緒,由原本的序列sql執行緒變成並行開啟多個sql執行緒,加快讀取中繼日誌速度。 2.binlog在rows模式下,binlog內容比尋常的主從更加簡潔 3.GTID主從複製會記錄主從資訊,不需要手動配置binlog和位置點
3.GTID主從複製的缺點
1.備份時更加麻煩,需要額外加一個引數 --set-gtid=on
2.主從複製出現錯誤,沒有辦法跳過錯誤
4.搭建GTID主從複製
1)配置三臺資料庫
#配置第一臺主庫 [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
mysql> 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
#主庫配置
[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)擴充套件
#配置log-slave-updates引數的場景
1.基於GTID的主從複製
2.雙主架構+keepalived
3.級聯複製
4.MHA
5)主庫建立使用者
mysql> grant replication slave on *.* to rep@'172.16.1.5%' identified by '123';
6)主庫資料同步到從庫
mysqldump -uroot -p -R --triggers --master-data=2 --single-transaction -A > /tmp/full.sql
scp
mysql < full.sql
7)從庫配置主從
mysql> 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複製和傳統複製的區別
GTID複製:
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複製模式後,
會自動尋找複製起點