MHA常用管理維護筆記

第一部分:mha日常管理

1.查看ssh登陸是否成功

masterha_check_ssh --conf=/app/mha/mha.cnf

2.查看復(fù)制是否建立好

masterha_check_repl --conf=/app/mha/mha.cnf

3.啟動mha

nohup masterha_manager --conf=/app/mha/mha.cnf > /app/mha/log/mha_manager.log 2>&1 &

(1)當有slave節(jié)點宕掉的情況,manager是無法啟動的,

如果在配置文件中設(shè)置ignore_fail=1 ,就可以加上--ignore_fail_on_start ,這時候即使有節(jié)點宕掉也能啟動mha manager。如下:

nohup masterha_manager --conf=/app/mha/mha.cnf --ignore_fail_on_start> /app/mha/log/mha_manager.log 2>&1 &

4.檢查啟動的狀態(tài)

masterha_check_status --conf=/app/mha/mha.cnf

5.停止mha

masterha_stop --conf=/app/mha/mha.cnf

6.failover切換

(1)在failover后,下次重啟mha manager

每次failover 切換后會在管理目錄生成文件app1.failover.complete ,下次在切換的時候會發(fā)現(xiàn)有這個文件導(dǎo)致切換不成功,需要手動清理掉。

rm -rf /masterha/app1/app1.failover.complete

但是,也可以加上參數(shù)--ignore_last_failover 來啟動mha manager

(2)參數(shù)last_failover_minute=(minutes)

? ? 當最近的一個failover 切換發(fā)生在last_failover_minute(默認為8小時) 之內(nèi),MHA manager 將不會在切換。因為它會認為有些問題沒有得到解決。如果設(shè)置了 --ignore_last_failover 參數(shù),參數(shù)(--last_failover_minute) 將會失效

(3)參數(shù)ignore_last_failover

? ? 如果最近failover 失敗,MHA 將不會再次開始failover機制,因為這個問題可能再次發(fā)生。常規(guī)步驟:手動清理failover 錯誤文件,此文件一般在manager_workdir/app_name.failover.error文件,然后在啟動failover機制。如果設(shè)置此參數(shù),MHA 將會繼續(xù)failover 不管上次的failover狀態(tài)

(4)參數(shù)wait_on_failover_error=(seconds)

? ? 在failover的過程,當發(fā)出錯誤了,masterha_manager 等待 wait_no_failover_error 的時間后,退出。如果設(shè)置為了0,直接退出。這個好處,是當后臺運行master monitor 和 failover scripts的時候,masterha_manager 可以在 wait_no_failover_error 時間到達之前重啟監(jiān)控

--remove_dead_master_conf

? ? 如果設(shè)置此參數(shù),當成功failover后,MHA manager將會自動刪除配置文件中關(guān)于dead master的配置選項。

7.手工failover注意事項

手工failover場景,master死掉,但是masterha_manager沒有開啟,這時候可以通過手工failover:

masterha_master_switch --conf=/app/mha/mha.cnf --dead_master_host=master? --master_state=dead --new_master_host=slave01 --ignore_last_failover

#注意:master重啟服務(wù)后,需要change master to (binlog文件及位置見手工切換的輸出日志)

8.masterha_manager是一種監(jiān)視和故障轉(zhuǎn)移的程序。但是另一方面,masterha_master_switch 程序不監(jiān)控主庫。? masterha_master_switch可以用于主庫故障轉(zhuǎn)移,也可用于在線總開關(guān)。

9.手動在線切換方法

(1)、masterha_master_switch --conf=/app/mha/mha.cnf? ? --master_state=alive? --new_master_host=master --orig_master_is_new_slave

或者

(2)、masterha_master_switch? --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf? ? --master_state=alive? --new_master_host=192.168.199.78 --orig_master_is_new_slave --running_updates_limit=10000

--orig_master_is_new_slave切換時加上此參數(shù)是將原master變?yōu)閟lave節(jié)點,如果不加此參數(shù),原來的master將不啟動

--running_updates_limit=10000 切換時候選master如果有延遲的話,mha切換不能成功,加上此參數(shù)表示延遲在此時間范圍內(nèi)都可切換(單位為s),但是切換的時間長短是由recover時relay日志的大小決定

注意:

(1)手動在線切換mha,切換時需要將在運行的mha停掉后才能切換。

(2)在備庫先執(zhí)行DDL,一般先stop slave,一般不記錄mysql日志,可以通過set SQL_LOG_BIN = 0實現(xiàn)。然后進行一次主備切換操作,再在原來的主庫上執(zhí)行DDL。這種方法適用于增減索引,如果是增加字段就需要額外注意。

Online master switch開始只有當所有下列條件得到滿足。

1.所有從庫的 IO線程正常運行。

2. 所有從庫的SQL線程正常運行。

3.? 所有從庫上slave參數(shù)Seconds_Behind_Master小于或者等于--running_updates_limit的時間

4.? 主庫上,沒有更新查詢操作多于running_updates_limit seconds? 在show processlist輸出結(jié)果上。


第二部分:配置文件部分參數(shù)說明

1、candidate_master

? ? 如果設(shè)置candidate_master的值為1,那么這個server會優(yōu)先成為master,但是前提是它需要滿足成為master的條件(binlog開啟的,沒有嚴重的復(fù)制延時等)

2、no_master

? ? 當設(shè)置了no_master=1的服務(wù)器,這個服務(wù)器永遠不會提升為新的master. 這個參數(shù)據(jù)對于永遠不期望成為master的機器很有用。

 比如:在一些特定場景下,使用raid0的機器上設(shè)置no_master = 1;或者,是希望在遠程的idc里運行一個slave.

注意:當沒有可以成為新master的機器是MHA就直接退出來了同時停止監(jiān)控和master故障切換。

3、disable_log_bin

當設(shè)置了這個參數(shù),在slave應(yīng)用差異的relay log時不會產(chǎn)生二進制日志。 內(nèi)部實現(xiàn)通過mysqlbinlog的disable-log-bin實現(xiàn)。

4、check_repl_delay

? ? 在默認情況下,當一個slave同步延遲超過100M relay log(需要應(yīng)用超過100M relay log), MHA在做故障切換時不會選擇這個slave做為新的master,因為恢復(fù)需要經(jīng)過很長時間.當設(shè)置了check_repl_delay = 0, MHA將忽略被選擇的slave上的同步延遲?!∵@個選項在設(shè)置了candidate_master = 1特聲明的期望這臺機器成為master的情況下特別有用。

5、latest_priority

在默認情況下,和Master最接近的slave(一個slave從Master上獲得了最一個binlog事件)是最有優(yōu)先權(quán)成為新的master?!∪绻阆肟刂埔幌虑袚Q的策略(如: 先選擇host2,如果不行,選host3;host3不行,選host4…) 那么設(shè)置latest_priority = 0 就可以了。

6、log_level

MHA manager 的日志級別,默認是info級別,在大多數(shù)環(huán)境下沒有問題.可用的級別有.debug/info/warning/error四種級別。

7、multi_tier_slave

從MHA 0.52開始, 多層復(fù)制可以支持了。在默認情況下,不支持三層或是更多層的復(fù)制配置

8、ping_interval

這個參數(shù)設(shè)置MHA Manager多長時間去ping一下master(執(zhí)行一些SQL語句). 當失去和master三次償試,MHA Manager會認為MySQL Master死掉了。即最大的故障切換時間是4次ping_interval的時間,默認是3秒。

9、ping_type

? ? MHA 0.53后出現(xiàn)的參數(shù).(1)在默認情況下,MHA manager和MySQL創(chuàng)建一個連接執(zhí)行”select 1″(ping_type=select)用于檢查master是否健康。

? (2)每次檢測都連接/然后斷開會比較好一點,這樣對于tcp方面的錯誤感知更快一點。設(shè)置ping_type=CONNECT 就行了。

? (3) 從MHA 0.56后pint_type=INSERT也被添加。


第三部分:腳本說明

1、master_ip_failover_script

? ? 負責(zé)故障切換動作的腳本

2、master_ip_online_change_script

? 負責(zé)在線切換動作的腳本

3、secondary_check_script

? ? 默認MHA是通過一個路由檢測:從manager到master.但是secondary_check_script腳本,讓MHA manager可以通過t參數(shù)調(diào)用一個內(nèi)部腳本來實現(xiàn)兩個或者多個路由的檢測.

4、shutdown_script

? 為避免腦裂,有時候需要強制關(guān)閉master服務(wù)器,避免他再次提供服務(wù)。

如:shutdown_script= /usr/local/custom_script/master_shutdown

相關(guān)參數(shù):

--command=stopssh (這個意思就是指停止服務(wù),不會關(guān)機)

--ssh_user=(ssh username so that you can connect to the master)

--host=(master's hostname)

--ip=(master's ip address)

--port=(master's port number)

--pid_file=(master's pid file)

5、report_script

? 這個腳本的功能:是在Master故障完畢后,也許想發(fā)一個送一個報告(如email)報告一下切換完畢或是發(fā)生的錯誤。

相關(guān)參數(shù):

--orig_master_host = (死掉master機器名)

--new_master_host = (新的master機器名)

--new_slave_hosts = (新的slave機器名列表,用逗號隔開)

--subject = (郵件名)–body = (正文)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容