MYSQL5.7 MASTER-SLAVE 線上關閉和啟動GTID
原創轉載註明出處
本文參考:MYSQL 5.7官方手冊
本文步驟中master slave代表主庫和從庫都需要更改、 slave代表從庫更改、master代表主庫更改
在MYSQL 5.7.6後可以線上的開啟和關閉gtid功能,為了做到這一點MYSQL對GTID_MODE做了改動
增加了OFF_PERMISSIVE和ON_PERMISSIVE來完成平滑的切換,下面看看有關引數
ENFORCE_GTID_CONSISTENCY:這個引數主要有如下設定,主要用於不讓違反GTID設定的操作執行,如果執行會報錯如:
Statement violates GTID consistency: CREATE TABLE ... SELECT.
? OFF: all transactions are allowed to violate GTID consistency.(所有操作允許)
? ON: no transaction is allowed to violate GTID consistency.(不允許違反gtid的操作,並且報錯)
? WARN: all transactions are allowed to violate GTID consistency, but a warning is generated in this case.
Added in MySQL 5.7.6.(所有操作允許,但是違反GTID的操作會報出警告)
GTID_MODE:這個引數設定如下,主要考慮到了平滑的切換
? OFF(0): Both new and replicated transactions must be anonymous.(生成的是匿名事物,slave也只能應用匿名事物)
? OFF_PERMISSIVE:(1) New transactions are anonymous. Replicated transactions can be either
anonymous or GTID transactions.(生成的是匿名事物,slave可以應用匿名和GTID事物)
? ON_PERMISSIVE(2): New transactions are GTID transactions. Replicated transactions can be either
anonymous or GTID transactions.(生成的是GTID事物,slave可以應用匿名和GTID事物)
? ON(3): Both new and replicated transactions must be GTID transactions(生成的是GTID事物,slave也只能應用GTID事物)
違反gtid的操作:
1、CREATE TABLE ... SELECT.
2、CREATE TEMPORARY TABLE/DROP TEMPORARY TABLE
3、sql_slave_skip_counter
4、delete testii2,testii1 from testii2,testii1 where testii2.id=testii1.id; testii2為MYISAM、testii1為innodb
參考:18.1.3.4 Restrictions on Replication with GTIDs
一、線上啟動gtid
1、master slave
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
確定事物都支援gtid,不會在err log中出現警告如下:
2017-02-26T22:35:24.322055Z 55 [Warning] Statement violates GTID consistency: CREATE TABLE ... SELECT.
2、master slave
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
3、master slave
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
生成的是匿名事物,slave可以應用匿名和GTID事物
4、master slave
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
生成的是GTID事物,slave可以應用匿名和GTID事物
5、master slave
確定已經沒有匿名的事物
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
確定如下一般情況下有值,可能為空(壓力很小甚至沒有事物)
SELECT @@GLOBAL.GTID_OWNED;
確定此時的Retrieved_Gtid_Set Executed_Gtid_Set正常增長
(甚至你可以在slave上使用:
SELECT MASTER_POS_WAIT(file, position);
來強制等待slave端直到指定位置,這個位置就是你確定的使用GTID事物的位置)
到這一步實際上gtid事物已經開始使用了。
6、master slave
SET @@GLOBAL.GTID_MODE = ON;
生成的是GTID事物,slave也只能應用GTID事物
7、slave
stop slave;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
start slave;
8、master slave
修改配置檔案my.cnf
二、線上關閉gtid
1、slave
stop slave;
記錄slave status
Exec_Master_Log_Pos: 7631438
Relay_Master_Log_File: bin_log.000016
執行
CHANGE MASTER TO MASTER_AUTO_POSITION = 0,
MASTER_LOG_FILE = 'bin_log.000016',
MASTER_LOG_POS = 7631438
start slave;
2、master slave
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
生成的是GTID事物,slave可以應用匿名和GTID事物
3、master slave
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
生成的是匿名事物,slave可以應用匿名和GTID事物
4、master slave
SELECT @@GLOBAL.GTID_OWNED;
等到主庫和備庫此顯示為空,並且Retrieved_Gtid_Set Executed_Gtid_Set
不再變動.
(甚至你可以在slave上使用:
SELECT MASTER_POS_WAIT(file, position);
來強制等待slave端直到指定位置,這個位置就是你確定的沒有使用GTID事物的位置)
完成這一步實際上GTID事物已經沒有生成和應用了
5、master slave
SET @@GLOBAL.GTID_MODE = OFF;
6、master slave
修改配置檔案my.cnf
注意線上開啟步驟中第5步和線上關閉的第4步是重點。
作者微信:
本文參考:MYSQL 5.7官方手冊
本文步驟中master slave代表主庫和從庫都需要更改、 slave代表從庫更改、master代表主庫更改
在MYSQL 5.7.6後可以線上的開啟和關閉gtid功能,為了做到這一點MYSQL對GTID_MODE做了改動
增加了OFF_PERMISSIVE和ON_PERMISSIVE來完成平滑的切換,下面看看有關引數
ENFORCE_GTID_CONSISTENCY:這個引數主要有如下設定,主要用於不讓違反GTID設定的操作執行,如果執行會報錯如:
Statement violates GTID consistency: CREATE TABLE ... SELECT.
? OFF: all transactions are allowed to violate GTID consistency.(所有操作允許)
? ON: no transaction is allowed to violate GTID consistency.(不允許違反gtid的操作,並且報錯)
? WARN: all transactions are allowed to violate GTID consistency, but a warning is generated in this case.
Added in MySQL 5.7.6.(所有操作允許,但是違反GTID的操作會報出警告)
GTID_MODE:這個引數設定如下,主要考慮到了平滑的切換
? OFF(0): Both new and replicated transactions must be anonymous.(生成的是匿名事物,slave也只能應用匿名事物)
? OFF_PERMISSIVE:(1) New transactions are anonymous. Replicated transactions can be either
anonymous or GTID transactions.(生成的是匿名事物,slave可以應用匿名和GTID事物)
? ON_PERMISSIVE(2): New transactions are GTID transactions. Replicated transactions can be either
anonymous or GTID transactions.(生成的是GTID事物,slave可以應用匿名和GTID事物)
? ON(3): Both new and replicated transactions must be GTID transactions(生成的是GTID事物,slave也只能應用GTID事物)
違反gtid的操作:
1、CREATE TABLE ... SELECT.
2、CREATE TEMPORARY TABLE/DROP TEMPORARY TABLE
3、sql_slave_skip_counter
4、delete testii2,testii1 from testii2,testii1 where testii2.id=testii1.id; testii2為MYISAM、testii1為innodb
參考:18.1.3.4 Restrictions on Replication with GTIDs
一、線上啟動gtid
1、master slave
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
確定事物都支援gtid,不會在err log中出現警告如下:
2017-02-26T22:35:24.322055Z 55 [Warning] Statement violates GTID consistency: CREATE TABLE ... SELECT.
2、master slave
SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
3、master slave
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
生成的是匿名事物,slave可以應用匿名和GTID事物
4、master slave
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
生成的是GTID事物,slave可以應用匿名和GTID事物
5、master slave
確定已經沒有匿名的事物
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
確定如下一般情況下有值,可能為空(壓力很小甚至沒有事物)
SELECT @@GLOBAL.GTID_OWNED;
確定此時的Retrieved_Gtid_Set Executed_Gtid_Set正常增長
(甚至你可以在slave上使用:
SELECT MASTER_POS_WAIT(file, position);
來強制等待slave端直到指定位置,這個位置就是你確定的使用GTID事物的位置)
到這一步實際上gtid事物已經開始使用了。
6、master slave
SET @@GLOBAL.GTID_MODE = ON;
生成的是GTID事物,slave也只能應用GTID事物
7、slave
stop slave;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
start slave;
8、master slave
修改配置檔案my.cnf
二、線上關閉gtid
1、slave
stop slave;
記錄slave status
Exec_Master_Log_Pos: 7631438
Relay_Master_Log_File: bin_log.000016
執行
CHANGE MASTER TO MASTER_AUTO_POSITION = 0,
MASTER_LOG_FILE = 'bin_log.000016',
MASTER_LOG_POS = 7631438
start slave;
2、master slave
SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
生成的是GTID事物,slave可以應用匿名和GTID事物
3、master slave
SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
生成的是匿名事物,slave可以應用匿名和GTID事物
4、master slave
SELECT @@GLOBAL.GTID_OWNED;
等到主庫和備庫此顯示為空,並且Retrieved_Gtid_Set Executed_Gtid_Set
不再變動.
(甚至你可以在slave上使用:
SELECT MASTER_POS_WAIT(file, position);
來強制等待slave端直到指定位置,這個位置就是你確定的沒有使用GTID事物的位置)
完成這一步實際上GTID事物已經沒有生成和應用了
5、master slave
SET @@GLOBAL.GTID_MODE = OFF;
6、master slave
修改配置檔案my.cnf
注意線上開啟步驟中第5步和線上關閉的第4步是重點。
作者微信:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-2134366/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 線上開啟&關閉GTID模式MySql模式
- mysql的啟動和關閉MySql
- linux svn啟動和關閉Linux
- MySQL Windows下關閉和啟動MySqlWindows
- 資料庫啟動和關閉資料庫
- oracle自動啟動和關閉的方法Oracle
- mysql學習4:第二章:mysql安裝啟動和關閉——mysql5.7安裝MySql
- MySQL啟動和關閉命令總結MySql
- ASM CRS 例項啟動和關閉ASM
- AIX上關閉和啟動X serverAIServer
- Oracle例項的啟動和關閉Oracle
- Oracle自動啟動和關閉的方法 (轉)Oracle
- MySQL5.7關閉NUMA方法MySql
- Oracle DG主備啟動和關閉流程Oracle
- oracle 例項啟動和關閉解讀Oracle
- MySQL 多例項啟動和關閉指令碼MySql指令碼
- oracle啟動和關閉指令碼for LinuxOracle指令碼Linux
- Oracle資料庫的啟動和關閉Oracle資料庫
- ORACLE RAC 的啟動和關閉順序Oracle
- 2 Day DBA-管理Oracle例項-關於例項的啟動和關閉-管理啟動和關閉許可權Oracle
- oracle啟動與關閉Oracle
- ORACLE DataGuard 關閉啟動Oracle
- 啟動/關閉 dynamic viewView
- nginx啟動,重啟,關閉命令Nginx
- 2 Day DBA-管理Oracle例項-關閉和啟動Oracle例項-使用OEMDC關閉和啟動Oracle例項Oracle
- 4.2.1.11 學習如何啟動和關閉CDB
- mysql啟動和關閉外來鍵約束MySql
- ORACLE資料庫的啟動和關閉(轉)Oracle資料庫
- dataguard standby資料庫的關閉和啟動資料庫
- win10系統快速啟動怎麼關閉 關閉Windows快速啟動Win10Windows
- centos下nginx啟動、重啟、關閉CentOSNginx
- ORACLE啟動模式及關閉Oracle模式
- Oracle RAC 啟動與關閉Oracle
- win10快速啟動怎麼關閉_win10如何關閉快速啟動Win10
- Oracle 11gR2 RAC的關閉和啟動Oracle
- db2資料庫的啟動和關閉DB2資料庫
- Linux 下 Oracle隨系統自動啟動和關閉LinuxOracle
- 資料庫自動啟動關閉資料庫