開源在線DDL工具--gh-ost

1. gh-ost工作模式

gh-ost有三種工作模式:

a:

連接到從庫,在主庫做遷移。

b:

連接到主庫,遷移過程所有操作都在主上操作,包括讀取binlog等等。

c:

在從庫做遷移測試。



三種方法各有優缺點,先說a的缺點,a會在從上面讀取binlog,但數據庫主從數據爲什麼會造成不一致,一個很重要的原因是主庫的binlog沒有完全在從庫執行。

所以感覺a方法有丟失數據的風險。b方法任何操作都會再主庫操作,或多或少會對主庫負載造成影響,但是可以通過調整一些參數降低和時刻關注這些影響.

至於c方法是偏向測試用的,這裏不做過多介紹,但是c方法裏有一個細節,cut-over階段有會stop slave一個操作,其實這個操作風險特別高,

有時stop slave 時間會很長,務必會對線上數據庫使用造成影響,所以如果使用c方法做測試也要在線下數據庫。



2.參數介紹。

gh-ost參數很多,但我使用到的有限,這裏只對使用到的參數進行介紹,再強調一下,這裏測試的是b方法。

 

--max-load

遷移過程中,gh-ost會時刻關注負載情況,負載閥值是使用者自己定義,比如數據庫的最大連接數,如果超過閥值,gh-ost不會退出,會等待到負載在閥值以下繼續執行。

 --critical-load

這個指的是gh-ost退出閥值,當負載超過這個閥值,gh-ost會停止並退出

 

--chunk-size

遷移過程是一步步分批次完成的,這個參數是指事務每次提交的行數,默認是1000。

 

--max-lag-millis

會監控從庫的主從延遲情況,如果延遲秒數超過這個閥值,遷移不會退出,等待延遲秒數低於這個閥值繼續遷移。



--throttle-control-replicas

和--max-lag-millis參數相結合,這個參數指定主從延遲的數據庫實例。

 

--initially-drop-ghost-table

gh-ost執行前會創建兩張xx_ghc和xx_gho表,如果這兩張表存在,且加上了這個參數,那麼會自動刪除原gh表,從新創建,

否則退出。xx_gho表相當於老表的全量備份,xx_ghc表數據是數據更改日誌,理解成增量備份。

--initially-drop-socket-file

gh-ost執行時會創建socket文件,退出時不會刪除,下次執行gh-ost時會報錯,加上這個參數會刪除老的socket文件,重新創建。

 

--ok-to-drop-table

go-ost執行完以後是否刪除老表,加上此參數會自動刪除老表。

--host

數據庫實例地址。

 

--port

數據庫實例端口。

 

--user

數據庫實例用戶名。

 

--password

數據庫實例密碼。

 

--database

數據庫名稱。

 

--table

表名。

 

-verbose


--alter

操作語句。

 

--cut-over

自動執行rename操作。

 

--debug

輸出詳細日誌。

 

--panic-flag-file

這個文件被創建,遷移操作會被立即終止退出。

 

--execute

如果確定執行,加上這個參數。

 

--allow-on-master

整個遷移所有操作在主庫上執行,也就是數的b方法。

 

--throttle-flag-file

此文件存在時操作暫停,刪除文件操作會繼續。


./gh-ost -host="192.168.15.104"  --max-load=Threads_connected=3000 

-port=3306 -user="dlan" -password="root123" -database="aaa" -table="team_member_20161109"  

--alter="add column yuhao2 char(11)" --allow-on-master --initially-drop-ghost-table --initially-drop-old-table  

-initially-drop-ghost-table --initially-drop-ghost-table --initially-drop-socket-file --initially-drop-socket-file

 --ok-to-drop-table --cut-over=default --execute

以上測試加的參數,測試的心碎,2事務就出問題

發佈了87 篇原創文章 · 獲贊 30 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章