共計 5608 個字符,預計需要花費 15 分鐘才能閱讀完成。
這篇文章主要講解了“mha 日常維護命令總結”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“mha 日常維護命令總結”吧!
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/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/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 操作等)。可以利用此選項避免鎖表。
感謝各位的閱讀,以上就是“mha 日常維護命令總結”的內容了,經過本文的學習后,相信大家對 mha 日常維護命令總結這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!
正文完