1. 程式人生 > 實用技巧 >GTID主從複製

GTID主從複製

目錄

一、基於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複製模式後,
會自動尋找複製起點