亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL如何在線開啟/關閉GTID

發布時間:2021-11-06 17:32:31 來源:億速云 閱讀:493 作者:小新 欄目:MySQL數據庫

小編給大家分享一下MySQL如何在線開啟/關閉GTID,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一 前言

MySQL DBA大都熟悉 MySQL 5.6版本開始提供基于 GTID模式的主從復制,該特性簡化復制和降低主從復制維護的難度,提高復制的可運維性,不再依賴binlog文件名和文件中的位置。 但是它有很多限制,5.7版本MySQL支持對GTID做了如下改進:

a 不需要重啟MySQL服務器.

b 配置過程在線,整個復制集群仍然對外提供讀和寫的服務.

c 不需要改變復制拓撲結構.

d 可以在任何結構的復制集群中在線啟用GTID功能.

在線修改GTID時,必須按照如下順序 

OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON

不能跳過其中環節,比如gtid_mode 從off 不能直接變為on,否則MySQL會進行提示。

ERROR 1788 (HY000): The value of @@GLOBAL.GTID_MODE can only be changed one step at a time: OFF <-> OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON. Also note that this value must be stepped up or down simultaneously on all servers. See the Manual for instructions.

在實踐online升級之前,我們需要了解MySQL 5.7版本的GTID_MODE 的含義:

OFF            :不產生GTID,Slave只接受不帶GTID的事務
OFF_PERMISSIVE :不產生GTID,Slave即接受不帶GTID的事務,也接受帶GTID的事務
ON_PERMISSIVE  :產生GTID,Slave即接受不帶GTID的事務,也接受帶GTID的事務
ON             :產生GTID,Slave只能接受帶GTID的事務。

二 在線開啟GTID

需要說明的是只有數據庫版本是5.7.6以及之后的版本才能支持在線開啟GTID. 在測試開啟GTID的同時模擬主庫的讀寫壓測:

sysbench --test=oltp.lua --oltp-tables-count=1 --oltp-table-size=500000 --mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3316/run/mysql.sock --max-time=600 --num-threads=1 --oltp-test-mode=complex run

2.1 在主從復制結構中所有的實例中執行

set global1.不支持非事務引擎。
2.不支持create table ... select 語句(在主庫執行時直接報錯)。
3.不允許一個SQL同時更新一個事務引擎和非事務引擎的表。
4.不支持create temporary table和drop temporary語句。

如果沒有任何warning 出現,則在所有實例上執行:

set global ENFORCE_GTID_CONSISTENCY = ON;

2.2 在主從復制結構中所有實例中執行:

set global GTID_MODE = OFF_PERMISSIVE;

讓主庫不產生GTID,Slave實例即接受不帶GTID的事務,也接受帶GTID的事務。確保一定要在所有實例中執行完該命令之后再執行接下來的步驟。

2.3 在主從復制結構中所有實例中執行:

set global GTID_MODE = ON_PERMISSIVE;

主庫開始產生GTID,Slave即接受不帶GTID的事務,也接受帶GTID的事務。

2.4 在主從復制結構中所有的實例中執行:

在各個實例節點上執行如下命令檢查匿名事務是否消耗完畢,最好多檢查幾次,以便確認該參數的值是0.

[RW][TEST:3316]>SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+
1 row in set (0.00 sec)

如果在從庫上檢查只需要一次滿足為0 即可。

2.5 確保第四步之前的binlog全部為應用。

確保操作之前的所有binlog都已經被其他服務器應用了,因為匿名的GTID必須確保已經復制應用成功,才可以進行下一步操作。如何檢查呢? 其實最簡單的方式是在從庫庫執行show slave status檢查應用位點的情況。如果追上了,則可以繼續。否則需要等待從庫應用完binlog之后在進行下一步。

2.5 在主從復制結構中所有的實例中執行:

set global GTID_MODE = ON;

該參數的功能是讓系統產生GTID ,Slave只能接受帶GTID的事務。

2.6 在從庫上執行:

設置slave 復制中MASTER_AUTO_POSITION=1。

[RO][TEST:3316]>stop slave;
[RO][TEST:3316]>CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
[RO][TEST:3316]>[RW][TEST:3316]>start slave;

至此,將基于位點的復制關系升級為GTID模式。結束了嗎?還沒呢,記得修改my.cnf 添加

gtid_mode = on
enforce_gtid_consistency = on

三 在線關閉GTID

關閉GTID的步驟其實和開啟的步驟相反:

3.1 關閉slave 復制中的 MASTERAUTOPOSITION
[RO][TEST:3316]>stop slave;
[RO][TEST:3316]>CHANGE MASTER TO MASTER_LOG_FILE = file,
MASTER_LOG_POS = position  MASTER_AUTO_POSITION = 0;
[RO][TEST:3316]>[RW][TEST:3316]>start slave;
3.2 在所有的實例上執行:

set global GTID_MODE = ON_PERMISSIVE;

3.3 在所有的實例上執行:

set global GTID_MODE = OFF_PERMISSIVE;

3.4 等待 @@GLOBAL.GTID_OWNED 的值是一個空字符串為止。

SELECT @@GLOBAL.GTID_OWNED;

3.5 檢查master上的binlog中的日志都已經被slave應用完畢
3.6 在所有實例上設置GTID_MODE 為off

set global GTID_MODE = OFF;

3.7 在所有實例上執行:

SET global GTID_MODE = OFF;

SET global ENFORCE_GTID_CONSISTENCY = OFF;

以上是“MySQL如何在線開啟/關閉GTID”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长治县| 八宿县| 金昌市| 河曲县| 玉田县| 武清区| 安顺市| 东平县| 汾西县| 九江市| 枞阳县| 屯昌县| 安达市| 凤翔县| 武胜县| 望谟县| 甘德县| 乌拉特前旗| 奎屯市| 大兴区| 鄂托克前旗| 清新县| 新野县| 阳东县| 天门市| 巩义市| 怀仁县| 绥江县| 于都县| 望都县| 高阳县| 开平市| 珲春市| 竹北市| 钟山县| 天镇县| 兴山县| 新源县| 浮梁县| 台中县| 浑源县|