mysql5.6利用GTIDs構建主從資料庫
【概念】什麼事GTIDS(Global Transactions Identifier)是MySQL5.6.5新加入的一項新特性。
- 當使用GTIDS時,無論是在Master上提交事物還是在Slave上應用,每一個事物都可以被識別並跟蹤;
- 新增新的Slave或者當發生故障需要將Master身份遷移到Slave上時,都無需考慮哪一個二進位制日誌以及哪個position,極大的簡化了操作步驟;
- GTIDs是完全基於事務的。因此,不支援MYISAM儲存引擎;
【關於GTID】GTID由source_id和transaction_id兩部門組成。
- source_id來自於server_uuid,可以在auto.cnf檔案中檢視;
- tranction_id是一個序列數字,從小到達自動生成;
[root@t-db01 mysql]# cat auto.cnf
mysql> show global variables like 'gtid_executed'; |
【構建主從資料庫】
環境說明:
主庫資訊 | 從庫資訊 | |
資料庫版本 | 5.6.23 | 5.6.23 |
IP地址 | 192.168.47.169 | 192.168.47.186 |
同步資料庫 | JOHN_DB | |
同步使用者 | repl |
1、主庫引數的設定
server_id = 1 binlog-format=ROW #建議使用ROW格式 log-bin=mysql-bin #開啟binlog report-port=3306 gtid-mode=on enforce-gtid-consistency=true log-slave-updates=true replicate_do_db=JOHN_DB |
2、從庫引數的設定
server_id = 2 log-bin=mysql-bin report-port=3306 gtid-mode=on enforce-gtid-consistency=true log-slave-updates=true replicate_do_db=JOHN_DB skip-slave-start #啟動的時候自動開啟復制 |
檢查gtid是否啟用:show global variables like ‘%gtid%’;
3、在主庫上面使用者的建立
grant replication slave on JOHN_DB.* to 'repl'@'192.168.47.186' identified by 'repl'; |
4、進行從庫資料的初始化
操作的步驟跟5.5的步驟一樣,這邊就偷懶不再重複了;
5、配置從庫連線主庫
從庫連線主庫: change master to master_host='192.168.47.169', master_user='repl',master_password='repl',master_auto_position=1; 啟動從庫: start slave; 檢查狀態: show slave status\G; mysql> show slave status\G; ERROR: 自動找到binlog位置,並進行同步; |
經過以上操作便完成了mysql主從架構的搭建;
【常見問題的處理方法】
1、場景的模擬
步驟一:主庫上面建立表john,並插入3行資料。(這個時候從庫和主庫的資料是一致的) mysql> select * from john;
步驟二:從庫關閉slave狀態 mysql> stop slave;
步驟三:主庫關閉寫binlog mysql> set sql_log_bin=off; 關閉
步驟四:主庫插入值4 mysql> insert into john values(4);
步驟五:主庫啟動binlog mysql> set sql_log_bin=on;
步驟六:主庫插入值 5 mysql> insert into john values(5);
經過以上步驟,主庫和從庫中john的值已經不一致了; 主庫如下:
從庫如下:
步驟六:修改主庫id為4的行,這個時候從庫就會報錯了 |
Executed_Gtid_Set: a989adc2-2a8e-11e5-a308-000c296ecd05:1-29 從庫執行Gtid序號
2、問題原因:由於id=4是沒有寫日誌的,所以id=4並沒有同步到從庫,當主庫刪除id=4這條記錄的時候,從庫找不到這條記錄所以報錯了;
3、解決方法:GTIDs模式下的主從問題,操作如下:
mysql> stop slave; mysql> set GTID_NEXT=’268e23d1-2216-11e5-abcc-000c296ecd05:1-30’; #跳過當前從庫的該序號 mysql> BEGIN; mysql> COMMIT; mysql> SET GTID_NEXT=’AUTOMATIC’; mysql> START SLAVE; |
經過以上操作完成了基於GTIDs的主從資料庫的配置和常見問題的處理,單從便捷的角度上確實提高了主從搭建的速度;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12679300/viewspace-1733655/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CentOS中MySQL5.6 資料庫主從(Master/Slave)同步安裝與配置詳解CentOSMySql資料庫AST
- Mysql5.6主從複製MySql
- MYSQL資料庫主從同步(一主一從)MySql資料庫主從同步
- 利用KEEPALIVED構建mysql主主複製MySql
- 資料庫主從複製資料庫
- mysql主從資料庫配置MySql資料庫
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- 利用percona-xtrabackup快速搭建MySQL資料庫主從複製MySql資料庫
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- 融合資料庫生態:利用 EventBridge 構建 CDC 應用資料庫
- mysql主庫清理資料,從庫保留MySql
- 8、MySQL主從資料庫配置MySql資料庫
- Mysql資料庫主從心得整理MySql資料庫
- 後期資料庫主從架構的痛點,真的痛資料庫架構
- 使用 Hive 構建資料庫Hive資料庫
- mysql5.6預設有幾個資料庫?mysql5.6初始有幾個資料庫?MySql資料庫
- mysql5.6主從引數詳解MySql
- 利用IDC從資料庫中取得資料 (轉)資料庫
- 資料庫中主庫和從庫的關係資料庫
- 資料庫主鍵、從鍵(易懂版)資料庫
- 搭建 mariadb 資料庫主從同步資料庫主從同步
- dataguard利用從庫的檔案恢復主庫發生異常的資料檔案。
- MySQL資料庫各場景主從高可用架構實戰MySql資料庫架構
- MySQL-主從複製之搭建主資料庫MySql資料庫
- MySQL-主從複製之搭建從資料庫MySql資料庫
- 用 Docker 構建 MySQL 主從環境DockerMySql
- 從0開始構建一個瀚高資料庫Docker映象資料庫Docker
- 利用OpenVSwitch構建多主機Docker網路Docker
- 高併發架構系列:資料庫主從同步的3種方案架構資料庫主從同步
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- MacOS使用Docker建立MySQL主從資料庫MacDockerMySql資料庫
- 使用 Docker 完成 MySQL 資料庫主從配置DockerMySql資料庫
- mysql資料庫實現主從複製MySql資料庫
- Mysql5.6主從複製-基於binlogMySql
- 構建個人記憶體資料庫記憶體資料庫
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- mysql資料庫資料同步/主從複製的配置方法MySql資料庫
- mysql資料庫的主從複製和主主複製實踐MySql資料庫