幺妹直播官方版_幺妹直播直播视频在线观看免费版下载_幺妹直播安卓高清版下载

首頁 > 問答 > 關(guān)鍵詞  > MySQL最新資訊  > 正文

MySQL傳統(tǒng)點位復(fù)制在線轉(zhuǎn)為GTID模式復(fù)制

2020-07-13 13:58 · 稿源:數(shù)據(jù)庫干貨鋪

1. GTID優(yōu)缺點

MySQL傳統(tǒng)點位復(fù)制在5. 7 版本前是主要的主從復(fù)制模式,而隨著MySQL5. 6 版本引入GTID,并且MySQL5. 7 進行各方面的優(yōu)化以后,在mySQL5.7(尤其是MySQL5.7.6)版本后GTID模式的主從復(fù)制方式成為一個新的選擇方式。要使用GTID模式,首先也需知其優(yōu)缺點,其主要的優(yōu)缺點如下:

1.1 優(yōu)點

a) 更簡單的實現(xiàn)failover,無需找log_file和log_Pos。

b) 更簡單的搭建主從復(fù)制。

c) 復(fù)制集群有一個統(tǒng)一的方式識別復(fù)制位置,給集群管理帶來了便利。

d) 正常情況下,GTID是連續(xù)沒有空洞的,因此主從庫出現(xiàn)數(shù)據(jù)沖突時,可以用添加空事物的方式進行跳過

1.2限制

a) 在一個事務(wù)里面混合使用引擎如Innodb(支持事務(wù))、MyISAM(不支持事務(wù)), 造成多個GTIDs和同一個事務(wù)相關(guān)聯(lián)出錯

b) CREATE TABLE…..SELECT 不能使用,該語句產(chǎn)生的兩個event在某一情況 會使用同一個GTID(同一個GTID在slave只能被使用一次),使用時會報如下錯誤:

錯誤代碼:1786StatementviolatesGTIDconsistency:CREATETABLE...SELECT.

需改為 create table like tb; insert into tb ... select 方式處理

c) CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 不能在事務(wù)內(nèi)使用 (啟用了--enforce-gtid-consistency參數(shù))

2. 傳統(tǒng)點位復(fù)制在線轉(zhuǎn)為GTID模式復(fù)制

2.1 在線調(diào)整的條件

a) 要求MySQL 5.7. 6 及以后版本。

b) 所有組中節(jié)點的gtid_mode 為off狀態(tài)。

2.2 在線調(diào)整

2.2.1 查看當前狀態(tài)

/**傳統(tǒng)復(fù)制下enforce_gtid_consistencygtid_mode均為OFF**/mysql>showglobalvariableslike'enforce_gtid_consistency';+--------------------------+-------+|Variable_name|Value|+--------------------------+-------+|enforce_gtid_consistency|OFF|+--------------------------+-------+1rowinset(0.00sec)
mysql>showglobalvariableslike'gtid_mode';+---------------+-------+|Variable_name|Value|+---------------+-------+|gtid_mode|OFF|+---------------+-------+1rowinset(0.00sec)

2.2.2 修改enforce_gtid_consistency

所有節(jié)點均先將其修改為 WARN,同時注意查看日志是否出現(xiàn)警告信息,生產(chǎn)環(huán)境想調(diào)整為GTID模式時,需提前一段時間調(diào)整此參數(shù),觀察一段時間,確定無警告后再調(diào)整。

/**所有節(jié)點均調(diào)整,主從無先后順序**/mysql>setglobalenforce_gtid_consistency=warn;
QueryOK,0rowsaffected(0.00sec)

開啟后觀察數(shù)據(jù)庫日志,只有在無警告的情況下才可以進行后續(xù)的操作。

2019-10-13T06:00:19.723310Z10588[Note]ChangedENFORCE_GTID_CONSISTENCYfromOFFtoWARN.

2.2.3 修改enforce_gtid_consistency = on

將各節(jié)點enforce_gtid_consistency 設(shè)置為 on,不分順序,但需要全部執(zhí)行完畢后再進行下一步

mysql>setglobalenforce_gtid_consistency=on;
QueryOK,0rowsaffected(0.00sec)

2.2.4 修改gtid_mode = off_permissive

將各節(jié)點gtid_mode設(shè)置為 off_permissive,不分順序,但需要全部執(zhí)行完畢后再進行下一步

mysql>setglobalgtid_mode=off_permissive;
QueryOK,0rowsaffected(0.00sec)

2.2.5 修改gtid_mode=on_permissive

建議先修改從庫的gtid_mode為on_permissive,之后再修改主庫的。此步驟執(zhí)行完畢后生成的日志是帶GTID的

mysql>setglobalgtid_mode=on_permissive;
QueryOK,0rowsaffected(0.01sec)

2.2.6 查看狀態(tài)

/**確定傳統(tǒng)方式復(fù)制完畢,此時各節(jié)點Ongoing_anonymous_transaction_count狀態(tài)為0**/mysql>showstatuslike'ongoing_anonymous_transaction_count';+-------------------------------------+-------+|Variable_name|Value|+-------------------------------------+-------+|Ongoing_anonymous_transaction_count|0|+-------------------------------------+-------+1rowinset(0.00sec)
/**切換日志**/mysql>flushlogs;QueryOK,0rowsaffected(0.16sec)

需要所有的節(jié)點ongoing_anonymous_transaction_count均為0.

2.2.7 啟用gtid_mode

前面的步驟確認正常后,各節(jié)點開啟GTID_MODE

mysql>setglobalgtid_mode=on;
QueryOK,0rowsaffected(0.01sec)

2.3 將傳統(tǒng)復(fù)制轉(zhuǎn)為GTID模式

停止原有復(fù)制,切換為gtid模式后,設(shè)置為自動查找位置復(fù)制。

ql>stopslave;
QueryOK,0rowsaffected(0.00sec)
mysql>changemastertomaster_auto_position=1;
QueryOK,0rowsaffected(0.01sec)
mysql>startslave;
QueryOK,0rowsaffected(0.01sec)

修改后復(fù)制即變?yōu)間tid模式。

mysql>SHOWGLOBALVARIABLESLIKE'%gtid%';+----------------------------------+--------------------------------------------------------------------------------------------+|Variable_name|Value|+----------------------------------+--------------------------------------------------------------------------------------------+|binlog_gtid_simple_recovery|ON||enforce_gtid_consistency|ON||gtid_executed|e29d3917-9dbb-11e9-8b64-e4434b6e2c80:1-93632,
e595a4ee-9dbb-11e9-a0f5-e4434b6e3094:1-30042||gtid_executed_compression_period|1000||gtid_mode|ON||gtid_owned|||gtid_purged|e29d3917-9dbb-11e9-8b64-e4434b6e2c80:1-4803,
e595a4ee-9dbb-11e9-a0f5-e4434b6e3094:1-30042||session_track_gtids|OFF|+----------------------------------+--------------------------------------------------------------------------------------------+8rowsinset(0.01sec)

3. 修改配置文件

在配置文件中添加GTID相關(guān)參數(shù),涉及到gtid的參數(shù)如下:

server-id:每個MySQL實例的ID值,不能相同。必選項
gtid_mode=ON:MySQL是開啟GTID模式.
enforce-gtid-consistency=on:開啟GTID復(fù)制是,保證GTID的一致性.log-bin:MySQL必須開啟binlog.
binlog_format=row:MySQLbinlog的事實標準,其他格式會導(dǎo)致數(shù)據(jù)丟失.log-slave-updates=on:級聯(lián)復(fù)制,當slave接受到master的更新且執(zhí)行完畢之后,執(zhí)行的binlog是否寫入slave的binlog記錄中.

本文轉(zhuǎn)載自微信公眾號【數(shù)據(jù)庫干貨鋪】。

舉報

  • 相關(guān)推薦

熱文

  • 3 天
  • 7天