【MHA】mha日常維護命令

小亮520cl發表於2016-07-29

mha 日常維護命令

1.檢視ssh登陸是否成功
masterha_check_ssh --conf=/etc/masterha/app1.cnf 
2.檢視複製是否建立好
masterha_check_repl --conf=/etc/masterha/app1.cnf 
3.啟動mha
nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log  < /dev/null 2>&1 & 
當有slave節點宕掉的情況是啟動不了的,加上--ignore_fail_on_start即使有節點宕掉也能啟動mha
nohup masterha_manager --conf=/etc/masterha/app1.cnf  --ignore_fail_on_start > /tmp/mha_manager.log  < /dev/null 2>&1
4.檢查啟動的狀態
masterha_check_status --conf=/etc/masterha/app1.cnf 
5.停止mha
masterha_stop  --conf=/etc/masterha/app1.cnf 
6.failover後下次重啟
每次failover切換後會在管理目錄生成檔案app1.failover.complete ,下次在切換的時候會發現有這個檔案導致切換不成功,需要手動清理掉。
rm -rf /masterha/app1/app1.failover.complete
也可以加上引數--ignore_last_failover 
7.手工failover
手工failover場景,master死掉,但是masterha_manager沒有開啟,可以透過手工failover:
masterha_master_switch --conf=/etc/masterha/app1.cnf --dead_master_host=10.50.2.10 --master_state=dead --new_master_host=10.50.2.12 --ignore_last_failover 
8.masterha_manager是一種監視和故障轉移的程式。另一方面,masterha_master_switch程式不監控主庫。 masterha_master_switch可以用於主庫故障轉移,也可用於線上總開關。 
9.手動線上切換
masterha_master_switch --conf=/etc/app1.cnf --master_state=alive --new_master_host=192.168.119.74 --orig_master_is_new_slave
或者
masterha_master_switch --conf=/etc/app1.cnf --master_state=alive --new_master_host=192.168.119.74 --orig_master_is_new_slave --running_updates_limit=10000 --orig_master_is_new_slave切換時加上此引數是將原master變為slave節點,如果不加此引數,原來的master將不啟動
--running_updates_limit=10000 切換時候選master如果有延遲的話,mha切換不能成功,加上此參數列示延遲在此時間範圍內都可切換(單位為s),但是切換的時間長短是由recover時relay日誌的大小決定
手動線上切換mha,切換時需要將在執行的mha停掉後才能切換。
在備庫先執行DDL,一般先stop slave,一般不記錄mysql日誌,可以透過set SQL_LOG_BIN = 0實現。然後進行一次主備切換操作,再在原來的主庫上執行DDL。這種方法適用於增減索引,如果是增加欄位就需要額外注意。
可以透過如下命令停止mha
masterha_stop --conf=/etc/app1.cnf

常用引數介紹:

--master_state=dead
    強制的引數,引數值為"dead" 或者 "alive" . 如果 設定為 alive 模式,masterha_master_switch 開始線上主庫切換操作。

--dead_master_host=(hostname)
    強制引數,當機的主庫所在的主機名稱。--dead_master_ip 和 --dead_master_port 是可選引數,如果這些引數沒有設定,--dead_master_ip 就是 --dead_master_host 解析的IP地址。--dead_master_port 為 3306

--new_master_host=(hostname)
    新主機地址,可選引數,這個引數在你明確新的主庫的主機,非常有用。(這就意味著你不需要讓MHA來決定新的主庫)。如果不設定此引數,MHA 將會利用自動failover的規則來選擇新的主庫。如果設定--new_master_host,MHA選擇此主機為新的主庫,如果不能成為主庫,MHA將會退出

--interactive=(0|1)
    如果設定為0,在masterha_master_switch,它自動執行故障轉移(非互動式)。這實際上是和masterha_manager的內部執行機制一樣,這種非互動式故障轉移是有用的,如果你已經證實了master死了,但你想盡快做故障轉移。非互動式故障轉移也是有用的,如果你使用其他現有的主監控軟體和要呼叫的非互動式故障轉移命令軟體。典型的例子是masterha_master_switch呼叫從叢集軟體像起搏器。

--ssh_reachable=(0|1|2)
    指定master 經過SSH是否可達。0:不可達、1:可達、2:未知(預設值)。 如果設定為了2,此命令內部將會檢測透過SSH 是否可達master,並且跟新SSH 狀態。如果可達,且設定master_ip_failover_script 或者 shutdown_script .將會執行"--command=stopssh"。否則,執行 "--command=stop"。另外,如果當機的master透過SSH可達,failover指令碼試圖從當機的master機器上複製沒有沒有傳送的binlog。

--skip_change_master
    如果設定此引數,當發生failover的時候,MAH 在應用完不同的relay log退出,忽略CHANGE MASTER 和 START SLAVE 操作。所以 slaves 不會指向 新的master. 開啟此引數,有利於手動的二次檢查slave 恢復是否成功

--skip_disable_read_only
    設定此引數,MHA 將不會在新的主庫上執行 SET GLOBAL read_only =0 操作,有利於手動操作

--last_failover_minute=(minutes)
    參考master_manager 

--ignore_last_failover
    參考master_manager

--wait_on_failover_error=(seconds)
    類似於master_manager, 此引數只用於自動的/非互動式的failover。如果沒有設定--interval=0,wait_on_failover_error 將會被忽略,在發生錯誤的時候不會sleep。

--remove_dead_master_conf
    參考masterha_manager

--wait_until_gtid_in_sync(0|1)
    此引數從0.56版本開始可用,如果設定成1,當基於GITD的failover時,MHA 會等待所有的從庫追上新主庫的GITD

--skip_change_master
    此引數從0.56版本開始可用,如果開啟此選項,MHA 跳過 CHANGE MASTER 的操作

--skip_disable_read_only
    此引數從0.56版本開始可用,如果開啟此選項,MHA 將會在新的master 跳過 SET GLOBAL read_only = 0;

--ignore_binlog_server_error
    此引數從0.56版本開始可用,如果開啟此選項,當執行failover的時,MHA忽略binlog server上任何錯誤

非互動式Failover

如果在masterha_master_switch中設定"--interactive=0", 它自動執行故障轉移(非互動式)。這實際上是和masterha_manager的內部執行機制一樣,這種非互動式故障轉移是有用的,如果你已經證實了master死了,但你想盡快做故障轉移。非互動式故障轉移也是有用的,如果你使用其他現有的主監控軟體和要呼叫的非互動式故障轉移命令軟體。典型的例子是masterha_master_switch呼叫從叢集軟體像起搏器。

[線上] 切換主庫的開關 (Scheduled (Online) Master Switch)

    有時你可能想做預定的主切換,即使當前的master正在執行。典型的例子是取代部分損壞的硬體或升級主伺服器。你不能取代一個RAID控制器或增加記憶體沒有停止伺服器。在這種情況下,您需要分配一個預定的維護時間,你必須遷移到不同的伺服器的master。
masterha_master_switch命令可以用來執行計劃總開關。
$ masterha_master_switch --master_state=alive --conf=/etc/app1.cnf --new_master_host=host2
--master_state=alive必須設定。排程主開關的程式流與從主故障轉移有稍微的不同。例如,你不需要關閉主伺服器,但你需要確保寫查詢不在主上執行。透過設定主ip網上變更指令碼,您可以控制阻塞當前master不允許寫(即drop可寫的使用者,設定read_only = 1,等等)在執行FLUSH TABLES WITH READ LOCK,和如何讓寫在新master。
Online master switch開始只有當所有下列條件得到滿足。
 1. IO threads on all slaves are running   // 在所有slave上IO執行緒執行。
 2. SQL threads on all slaves are running  //SQL執行緒在所有的slave上正常執行。
 3. Seconds_Behind_Master on all slaves are less or equal than --running_updates_limit seconds  // 在所有的slaves上 Seconds_Behind_Master 要小於等於  running_updates_limit seconds
 4. On master, none of update queries take more than --running_updates_limit seconds in the show processlist output  // 在主上,沒有更新查詢操作多於running_updates_limit seconds 在show processlist輸出結果上。
這些限制的原因是出於安全原因,並儘快切換到新主庫。masterha_master_switch需要以下引數切換時主線上。

    --new_master_host=(hostname)
        新主機地址,可選引數,這個引數在你明確新的主庫的主機,非常有用。(這就意味著你不需要讓MHA來決定新的主庫)。如果不設定此引數,MHA 將會利用自動failover的規則來選擇新的主庫。如果設定--new_master_host,MHA選擇此主機為新的主庫,如果不能成為主庫,MHA將會退出

   --orig_master_is_new_slave
        當完成主庫切換後,原先的主庫將作為現在主庫的slave執行。預設:不開啟(原先的主庫不會加入到新的複製環境中)。如果開啟此選項,需要在配置檔案中設定repl_password引數,由於當期的Master並不知道新的Master的replication的密碼

  --remove_orig_master_conf 
        如果設定此引數,當成功failover後,MHA manager將會自動刪除配置檔案中關於dead master的配置選項。

  --skip_lock_all_tables
        當在做主庫切換的時候,MHA會在原先的主庫上執行FLUSH TABLES WITH READ LOCK 操作,確保沒有跟新操作,但是FLUSH TABLES WITH READ LOCK 操作是非常耗費資源的,並且你可以在原先的主庫確定沒有跟新操作(透過master_ip_online_change_script 中kill all clients操作等)。可以利用此選項避免鎖表。
連結地址:http://blog.chinaunix.net/uid-28396214-id-4984777.html 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2122721/,如需轉載,請註明出處,否則將追究法律責任。

相關文章