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
- 融合資料庫生態:利用 EventBridge 構建 CDC 應用資料庫
- 資料庫主從複製資料庫
- mysql主從資料庫配置MySql資料庫
- [資料庫]MYSQL主從同步資料庫MySql主從同步
- 【mysql】mysql的資料庫主從(一主一從)MySql資料庫
- 8、MySQL主從資料庫配置MySql資料庫
- 搭建 mariadb 資料庫主從同步資料庫主從同步
- 後期資料庫主從架構的痛點,真的痛資料庫架構
- Mysql(Mariadb)資料庫主從複製MySql資料庫
- 資料庫主鍵、從鍵(易懂版)資料庫
- MySQL資料庫各場景主從高可用架構實戰MySql資料庫架構
- MySQL-主從複製之搭建主資料庫MySql資料庫
- 從0開始構建一個瀚高資料庫Docker映象資料庫Docker
- MySQL-主從複製之搭建從資料庫MySql資料庫
- 高併發架構系列:資料庫主從同步的3種方案架構資料庫主從同步
- MYSQL5.6主從+keepalive高可用自動切換MySql
- Linux實現MySql資料庫的主從複製(一主一從)LinuxMySql資料庫
- mysql資料庫實現主從複製MySql資料庫
- MacOS使用Docker建立MySQL主從資料庫MacDockerMySql資料庫
- 【資料庫】mysql5.6升級至5.7(物理方式)資料庫MySql
- 用 Docker 構建 MySQL 主從環境DockerMySql
- 如何從資料庫提取海波龍的組織主資料資料庫
- mysql資料庫的主從複製和主主複製實踐MySql資料庫
- mysql伺服器主從資料庫同步配置MySql伺服器資料庫
- 資料庫系列:主從延時最佳化資料庫
- mysql資料庫互為主從配置方法分享MySql資料庫
- 從新建資料夾開始構建UtopiaEngine(1)
- 達夢資料庫如何解除主從關係資料庫
- (7)資料庫讀寫分離,主從同步實現方法(資料庫設定)資料庫主從同步
- postgresql資料庫利用方式SQL資料庫
- 資料庫-單表結構-建表語句資料庫
- 基於 EventBridge 構建資料庫應用整合資料庫
- 利用反射讀取資料庫資料反射資料庫
- 如何構建自己的雲資料庫?建立雲資料庫是否要收費?資料庫
- MySQL 資料主從同步MySql主從同步
- 資料庫讀寫分離,主從同步實現方法資料庫主從同步
- 資料庫主從不一致,怎麼解?資料庫
- linux下mysql主從複製,實現資料庫同步LinuxMySql資料庫