亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL5.7不停業務將傳統復制變更為GTID復制的實例

2024-07-24 13:12:38
字體:
來源:轉載
供稿:網友

由于GTID的優勢,我們需要將傳統基于file-pos的復制更改為基于GTID的復制,如何在線變更成為我們關心的一個點,如下為具體的方法:

目前我們有一個傳統復制下的M-S結構:

port 3301 master

port 3302 slave

master上(3301):[zejin] 3301>select * from t_users;+----+------+| id | name |+----+------+| 1 | hao || 2 | zhou |+----+------+rows in set (0.00 sec)  slave上(3302):[zejin] 3302>show slave status/G*************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.1.240Master_User: replMaster_Port: 3301Connect_Retry: 60Master_Log_File: binlog57.000002Read_Master_Log_Pos: 417Relay_Log_File: zejin240-relay-bin.000004Relay_Log_Pos: 628Relay_Master_Log_File: binlog57.000002Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 417Relay_Log_Space: 884Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 3301Master_UUID: a97983fc-5a29-11e6-9d28-000c29d4dc3fMaster_Info_File: /home/mysql/I3302/master.infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Slave has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:row in set (0.00 sec) [zejin] 3302>select * from t_users;+----+------+| id | name |+----+------+| 1 | hao || 2 | zhou |+----+------+rows in set (0.00 sec)

如下為在線變更的具體的操作步驟:

前提:

1.要求所有的mysql版本5.7.6或更高的版本。

2.目前拓撲結構中所有的mysql的gtid_mode的值為off狀態。

3.如下的操作步驟都是有序的,不要跳躍著進行。

補充一下全局系統變量GTID_MODE變量值說明:  

OFF   新事務是非GTID,  Slave只接受不帶GTID的事務,傳送來GTID的事務會報錯

OFF_PERMISSIVE  新事務是非GTID,  Slave即接受不帶GTID的事務也接受帶GTID的事務

ON_PERMISSIVE  新事務是GTID,  Slave即接受不帶GTID的事務也接受帶GTID的事務

ON   新事務是GTID,  Slave只接受帶GTID的事務

需要注意的是,這幾個值的改變是有順序的,即

off<--->OFF_PERMISSIVE<--->ON_PERMISSIVE<--->ON

不能跳躍執行,會報錯。

step1:在每個mysql實例上,將ENFORCE_GTID_CONSISTENCY設置為warning,哪臺先執行不影響結果。

[zejin] 3302>set @@global.enforce_gtid_consistency=warn;Query OK, 0 rows affected (0.00 sec)[zejin] 3301>set @@global.enforce_gtid_consistency=warn;Query OK, 0 rows affected (0.00 sec)

注意:執行完這條語句后,如果出現GTID不兼容的語句用法,在錯誤日志會記錄相關信息,那么需要調整應該程序避免不兼容的寫法,直到完全沒有產生不兼容的語句,可以通過應該程序去排查所有的sql,也可以設置后觀察錯誤日志一段時間,這一步非常重要。

step2:在每個mysql實例上,設置ENFORCE_GTID_CONSISTENCY為ON,哪臺先執行不影響結果

在第一步完成后,就可以將值設置為on。

[zejin] 3301>set @@global.enforce_gtid_consistency=on;Query OK, 0 rows affected (0.03 sec) [zejin] 3302>set @@global.enforce_gtid_consistency=on;Query OK, 0 rows affected (0.00 sec)

step3:在每個mysql實例上,設置GTID_MODE為off_permissiv;哪臺先執行不影響結果

[zejin] 3301>SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;Query OK, 0 rows affected (0.00 sec) [zejin] 3302>SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;Query OK, 0 rows affected (0.00 sec)

step4:在每個mysql實例上,設置GTID_MODE為on_permissiv;;哪臺先執行不影響結果

[zejin] 3302>SET @@GLOBAL.GTID_MODE = on_permissive;Query OK, 0 rows affected (0.00 sec)[zejin] 3301>SET @@GLOBAL.GTID_MODE = on_permissive;Query OK, 0 rows affected (0.01 sec)

step5:在每個mysql實例上檢查變量ONGOING_ANONYMOUS_TRANSACTION_COUNT

[zejin] 3301>SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';+-------------------------------------+-------+| Variable_name      | Value |+-------------------------------------+-------+| Ongoing_anonymous_transaction_count | 0  |+-------------------------------------+-------+row in set (0.02 sec)  [zejin] 3302>SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';+-------------------------------------+-------+| Variable_name      | Value |+-------------------------------------+-------+| Ongoing_anonymous_transaction_count | 0  |+-------------------------------------+-------+row in set (0.02 sec)

需要等到此變量為0

step6: 確保所有的匿名事務(非GTID事務)已經被完全復制到所有的server上。

檢查方法:

在master上:[zejin] 3301>show master status;+-----------------+----------+--------------+------------------+-------------------+| File   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-----------------+----------+--------------+------------------+-------------------+| binlog57.000005 |  154 |    |     |     |+-----------------+----------+--------------+------------------+-------------------+row in set (0.00 sec)  在slave上, [zejin] 3302>show slave status/G*************************** 1. row ***************************……  Relay_Master_Log_File: binlog57.000005   Exec_Master_Log_Pos: 154……

檢查這兩項Relay_Master_Log_File的值大于binlog57.000005,

或者等于Relay_Master_Log_File等于binlog57.000005并且Exec_Master_Log_Pos的值大于等于154即可 

或者slave直接用函數:

[zejin] 3302>SELECT MASTER_POS_WAIT('binlog57.000005', 154);+-----------------------------------------+| MASTER_POS_WAIT('binlog57.000005', 154) |+-----------------------------------------+|          0 |+-----------------------------------------+row in set (0.00 sec)

返回結果大于等于0就說明匿名事務已經全部復制完成 

step7: 確認整個拓撲結構中已經沒有匿名事務的存在,如之前產生的所有匿名事務已經全部被執行完畢,甚至二進制日志中也不要有匿名事務,可以通過flush logs,并讓mysql來自動清理舊的二進制日志文件。 

step8: 在每個mysql實例上,設置GTID_MODE為on,

[zejin] 3301>SET @@GLOBAL.GTID_MODE = ON;Query OK, 0 rows affected (0.04 sec) [zejin] 3302>SET @@GLOBAL.GTID_MODE = ON;Query OK, 0 rows affected (0.04 sec)

step9: 在每個mysql實例的配置文件my.cnf上,增加gtid-mode=ON

驗證:

[zejin] 3301>insert into t_users values(3,'chen');Query OK, 1 row affected (0.02 sec)[zejin] 3301>update t_users set name='li' where id=1;Query OK, 1 row affected (0.03 sec)Rows matched: 1 Changed: 1 Warnings: 0[zejin] 3301>select * from t_users;+----+------+| id | name |+----+------+| 1 | li || 2 | zhou || 3 | chen |+----+------+rows in set (0.00 sec)  [zejin] 3302>show slave status/G*************************** 1. row ***************************    Slave_IO_State: Waiting for master to send event     Master_Host: 192.168.1.240     Master_User: repl     Master_Port: 3301    Connect_Retry: 60    Master_Log_File: binlog57.000006   Read_Master_Log_Pos: 462    Relay_Log_File: zejin240-relay-bin.000012    Relay_Log_Pos: 673  Relay_Master_Log_File: binlog57.000006    Slave_IO_Running: Yes   Slave_SQL_Running: Yes    Replicate_Do_DB:    Replicate_Ignore_DB:    Replicate_Do_Table:   Replicate_Ignore_Table:   Replicate_Wild_Do_Table:  Replicate_Wild_Ignore_Table:      Last_Errno: 0     Last_Error:      Skip_Counter: 0   Exec_Master_Log_Pos: 462    Relay_Log_Space: 969    Until_Condition: None    Until_Log_File:     Until_Log_Pos: 0   Master_SSL_Allowed: No   Master_SSL_CA_File:    Master_SSL_CA_Path:     Master_SSL_Cert:    Master_SSL_Cipher:     Master_SSL_Key:   Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No    Last_IO_Errno: 0    Last_IO_Error:     Last_SQL_Errno: 0    Last_SQL_Error:  Replicate_Ignore_Server_Ids:     Master_Server_Id: 3301     Master_UUID: a97983fc-5a29-11e6-9d28-000c29d4dc3f    Master_Info_File: /home/mysql/I3302/master.info     SQL_Delay: 0   SQL_Remaining_Delay: NULL  Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates   Master_Retry_Count: 86400     Master_Bind:   Last_IO_Error_Timestamp:   Last_SQL_Error_Timestamp:     Master_SSL_Crl:    Master_SSL_Crlpath:    Retrieved_Gtid_Set: a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-2   Executed_Gtid_Set: a97983fc-5a29-11e6-9d28-000c29d4dc3f:1-2    Auto_Position: 0   Replicate_Rewrite_DB:      Channel_Name:    Master_TLS_Version: row in set (0.00 sec)

至此完成從傳統復制到GTID復制的在線轉換。

以上這篇MySQL5.7不停業務將傳統復制變更為GTID復制的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97福利一区二区| 精品久久久久久久中文字幕| 国模gogo一区二区大胆私拍| 中文字幕免费精品一区| 亚洲伊人第一页| 免费97视频在线精品国自产拍| 欧美黄色成人网| 欧美电影院免费观看| 欧美成人国产va精品日本一级| 国产情人节一区| 97人人爽人人喊人人模波多| 亚洲精品不卡在线| 这里只有精品视频| 91精品国产网站| 日本高清不卡在线| 亚洲第一区第一页| 77777亚洲午夜久久多人| 日韩高清电影免费观看完整| 亚洲天堂av综合网| 亚洲综合精品一区二区| 国产精品91久久久久久| 91九色视频导航| 欧洲成人免费aa| 欧美洲成人男女午夜视频| 国产综合福利在线| 国产精品久久久久久av福利| 日韩av影院在线观看| 日韩av电影手机在线观看| 久久视频在线直播| 亚洲国产成人精品电影| 久久在线免费视频| 亚洲国产精品久久| 欧美韩国理论所午夜片917电影| 久久视频免费观看| 亚洲韩国青草视频| 国外日韩电影在线观看| 欧美精品亚州精品| 日韩精品极品在线观看| 欧美多人乱p欧美4p久久| 亚洲第一区中文99精品| 97碰碰碰免费色视频| 久久国产精品影视| 国产激情999| 日产日韩在线亚洲欧美| 亚洲iv一区二区三区| 久久久天堂国产精品女人| 久久中文字幕国产| 国产日韩综合一区二区性色av| 日韩在线视频网| 色偷偷av一区二区三区| 韩国视频理论视频久久| 日产精品99久久久久久| 日韩电影免费观看中文字幕| 日韩电影在线观看永久视频免费网站| 在线观看欧美www| 欧美国产精品va在线观看| 欧美一区二区.| 亚洲人午夜精品| 成人综合国产精品| 欧美性猛交xxxx免费看久久久| 国产经典一区二区| 欧美高跟鞋交xxxxhd| 国产精品自拍偷拍| 亚洲aa在线观看| 国产精品福利小视频| 日韩成人中文字幕在线观看| 精品国产老师黑色丝袜高跟鞋| 伊人伊成久久人综合网站| 国产亚洲精品va在线观看| 亚洲人成啪啪网站| 国产精品毛片a∨一区二区三区|国| 欧美黄色片在线观看| 欧美激情奇米色| 2019亚洲日韩新视频| 久久资源免费视频| 国产精品91久久| 亚洲一区二区免费在线| 国产成人综合精品在线| 欧美激情精品久久久久久久变态| 亚洲国产精品久久久久久| 亚洲精品视频网上网址在线观看| 欧美老妇交乱视频| 日本欧美黄网站| 国产999视频| 国产欧美精品日韩精品| 国产欧美精品在线| 在线成人一区二区| 欧美超级免费视 在线| 国产成人精品综合| 97在线视频国产| 成人激情视频在线观看| 欧美激情精品久久久久久大尺度| 91九色视频在线| 亚洲一区二区三| 久久综合国产精品台湾中文娱乐网| 日韩av片电影专区| 中文字幕日本精品| 日韩a**站在线观看| 97色在线视频观看| 亚洲a区在线视频| 国产一区av在线| 日韩a**中文字幕| 亚洲激情 国产| 久久艹在线视频| 久99久在线视频| 亚洲福利影片在线| 成人妇女淫片aaaa视频| 久久视频这里只有精品| 欧美成人午夜剧场免费观看| 久久天天躁日日躁| 久久久久国产精品一区| 国产精品主播视频| 亚洲色在线视频| 亚洲精品午夜精品| 亚洲电影免费在线观看| 国产亚洲视频在线| 亚洲裸体xxxx| 亚洲成人免费在线视频| 欧美激情在线有限公司| 亚洲成色777777女色窝| 粉嫩av一区二区三区免费野| 夜夜躁日日躁狠狠久久88av| 欧美怡红院视频一区二区三区| 91精品国产色综合久久不卡98| 久久亚洲国产成人| 日韩成人久久久| 色婷婷综合久久久久中文字幕1| 国产va免费精品高清在线观看| 日韩一区二区久久久| 永久免费毛片在线播放不卡| 欧美极品少妇xxxxⅹ免费视频| 亚洲а∨天堂久久精品9966| 色偷偷噜噜噜亚洲男人的天堂| 亚洲欧美另类国产| 日韩成人网免费视频| 日韩经典第一页| 久久久久国色av免费观看性色| 欧美性猛交xxxx富婆| 亚洲天堂影视av| 日韩视频免费看| 青青久久aⅴ北条麻妃| 久久影视免费观看| 亚洲欧美国产一本综合首页| 69久久夜色精品国产69| 精品少妇v888av| 国模视频一区二区三区| 中文字幕亚洲一区| 热久久免费国产视频| 538国产精品一区二区在线| 国产91精品久久久久久| 日韩中文字幕在线看| 欧美做爰性生交视频| 亚洲国产精品va在线看黑人动漫| 亚洲精品一区在线观看香蕉| 欧美一级视频一区二区| 日韩av在线网站| 亚洲免费电影在线观看| 日韩精品免费看| 日韩欧美亚洲综合| 成人福利在线观看| 欧美韩国理论所午夜片917电影| 欧美一级在线播放| 日韩一区二区欧美| 欧美亚洲视频一区二区|