天天看點

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

GTID相關:

在mysql5.6之前,mysql主從複制是slave通過配置master的binlog位置實作的,且每一個slave自身的binlog卻不同。而在mysql5.6版本後引入了GTID(全局事務辨別符),這個值在master生成,slave隻要在開啟主從複制時指定master的使用者,密碼,就可擷取master的GTID實作同步,而無需再每次去檢視master的binlog位置,大大友善了主從同步的配置。GTID的唯一性強化了資料的主備一緻性,故障恢複,以及容錯能力。

延遲複制相關:

在之前的部落格中介紹過mysql的延遲複制,當時是基于第三方工具percona-toolkit實作的。在mysql5.6版本後,mysql自帶了延遲複制的功能,且配置十分簡單。

實驗環境:

主庫:192.168.52.128:3306

從庫:192.168.52.135:3306

配置GTID複制:

1:安裝mysql(不贅述)

2:開啟GTID模式,主從庫都要:

在my.cnf配置檔案中加入binlog以及gtid相關配置,并重新開機mysql。

主:[mysqld]

binlog-format=ROW

log-bin=master-bin-log

log-slave-updates=true

gtid-mode=on                ----開啟gtid

enforce-gtid-consistency=true       ---強制GTID一緻性

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=2          ---設定從伺服器的SQL線程數

binlog-checksum=CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

server-id=1

從:[mysqld]

server-id = 2

log-bin=mysql-bin

binlog_format=row

log-slave-updates=true

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=4

binlog-checksum=CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log_events=1

重新開機mysql:service mysqld restart

檢視主庫及叢庫的gtid是否開啟:

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制
mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

這時主庫上會配置設定一個gtid号:

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制
mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

3:在主庫上建立複制所需的賬戶:mysql>grant replication slave on *.* to [email protected].% identified by '123456';

mysql>flush privileges;

4:從庫上配置同步。mysql>change master to master_host='192.168.52.128',master_user='repl',master_password='123456',master_auto_position=1;

mysql>slave start;

可以看到這裡不用去主庫查找binlog與相關的位置資訊,直接使用master_auto_position=1,mysql會自動查找同步的位置

5:檢視效果:

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

可以看到同步已經正常進行中,同步位置為7。

進行一些操作,驗證同步效果:

主:建立一個執行個體,并建立一張表,插入一些資料

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制
mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

從:

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

同步正常,使用show slave stautus\G檢視同步狀态,可以看到同步位置執行到了10;

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制
mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

複制延遲配置:mysql>stop slave;

mysql>CHANGE MASTER TO MASTER_DELAY = 100;         -------機關為秒

mysql>start slave;

mysql>show slave status \G;

mysql5.6 主從 延遲_mysql5.6,基于GTID的主從同步與延遲複制

SQL_Delay:字段變為100,表示此時從庫與主庫的同步開始有了100秒的固定延遲。

SQL_Remaining_Delay:當主庫有了新的操作,該字段會進入倒計時,從配置的延遲時間(這裡為100)開始。正常情況下為NULL。