溫馨提示×

溫馨提示×

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

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

MHA配置文件參數

發布時間:2020-07-28 01:57:17 來源:網絡 閱讀:752 作者:jason_meng 欄目:MySQL數據庫

###
MHA參數整理
2014年09月17日 19:58:41
閱讀數:822

  1. MHA配置文件參數
    Parameter Name

Required?

Parameter Scope

Default Value

hostname

Yes

Local Only

-

ip

No

Local Only

gethostbyname($hostname)

port

No

Local/App/Global

3306

ssh_host

No

Local Only

same as hostname

ssh_ip

No

Local Only

gethostbyname($ssh_host)

ssh_port

No

Local/App/Global

22

ssh_connection_timeout

No

Local/App/Global

5

ssh_options

No

Local/App/Global

""(empty string)

candidate_master

No

Local Only


0

no_master

No

Local Only


0

ignore_fail

No

Local Only


0

skip_init_ssh_check

No

Local Only


0

skip_reset_slave

No

Local/App/Global


0

user

No

Local/App/Global

root

password

No

Local/App/Global

""(empty string)

repl_user

No

Local/App/Global

Master_User value from SHOW SLAVE STATUS

repl_password

No

Local/App/Global

  • (current replication password)

disable_log_bin

No

Local/App/Global


0

master_pid_file

No

Local/App/Global

""(empty string)

ssh_user

No

Local/App/Global

current OS user

remote_workdir

No

Local/App/Global

/var/tmp

master_binlog_dir

No

Local/App/Global

/var/lib/mysql

log_level

No

App/Global

info

manager_workdir

No

App

/var/tmp

manager_log

No

App

STDERR

check_repl_delay

No

App/Global

1

check_repl_filter

No

App/Global

1

latest_priority

No

App/Global

1

multi_tier_slave

No

App/Global


0

ping_interval

No

App/Global

3

ping_type

No

App/Global

SELECT

secondary_check_script

No

App/Global

null

master_ip_failover_script

No

App/Global

null

master_ip_online_change_script

No

App/Global

null

shutdown_script

No

App/Global

null

report_script

No

App/Global

null

init_conf_load_script

No

App/Global

null

Local Scope: 適用于單個server范圍的參數。局部作用域參數需要在 application configuration 文件里面的[server_xxx]塊下面進行設置。
App Scope:用于每組{master, slaves}的參數。這些參數需要在application configuration文件的[server_default] 塊下面進行設置。
Global Scope: 用于所有{master, slaves}組的參數。只有在使用單個manager服務器管理多組{master, slaves}時,全局范圍的參數菜有用。這些參數需要在global configuration 文件中設置。
1.1 hostname
MySQL服務器的Hostname 或者 IP 地址。這個參數是強制性的,在applicationconfiguration文件中的[server_xxx]塊下必須配置。

1.2 ip
MySQL服務器的IP地址。默認值是gethostbyname($hostname).。MHA Manager 和 MHA Node 在內部使用這個IP地址通過MYSQL和SSH連接。通常不需要配置這個參數,因為會自動通過hostname參數解決。

1.3 port
MySQL服務器的端口號。默認是3306。MHA通過IP地址和端口連接MySQL服務器。

1.4 ssh_host
(從0.53開始支持)SSH使用的MySQL服務器的Hostname 或 IP 地址。當使用多VLAN配置的時候,這個參數(以及ssh_port參數)是有用的。默認和hostname一致。

1.5 ssh_ip
(從0.53開始支持)通過SSH使用的MySQL服務器的IP地址。默認值是 gethostbyname($ssh_host)。

1.6 ssh_port
(從0.53開始支持)通過SSH連接的MySQL服務器的端口號。默認是22。

1.7 ssh_connection_timeout
(從0.54開始支持)默認是5秒。在添加這個參數之前,超時時間是固定的,只能在代碼中更改。

1.8 ssh_options
(從0.53開始支持)SSH命令行的額外選項。

1.9 candidate_master
slaves可能會使用不同類型的機器,需要提升最可靠的機器做為new master。(比如:提升RAID1+0的slave,而不是RAID0的slaves)。

通過設置candidate_master為1,只要該服務器符合成為new master的條件,該服務器會優先成為master(比如:開啟binlog,延遲不明顯,等等)所以candidate_master=1不代表指定的host在current master掛掉后總會成為new master,只是用于設置優先級。

如果在多臺服務器上設置了candidate_master=1,優先級根據block名稱([server_xxx])的順序決定。[server_1] 優先級高于[server_2]。

1.10 no_master
在目標服務器上設置no_master=1,該服務器不會成為new master。如果有一些服務器不應該成為new master,那么該參數是有用的。比如,如果在不可靠的機器(RAID0)上運行了salve,或者在遠程數據中心運行了slave,那可能需要設置no_master=1。如果沒有slave可以成為new master,MHA會退出,并且不會進行監控或故障轉移。

1.11 ignore_fail
默認情況下,如果任意slave運行出錯了(通過SSH不能連接MySQL,SQL線程出錯停止了等待),MHA Manager就不會進行故障轉移。但是一些情況下,如果特定的slave服務器運行出錯,還是希望繼續故障轉移,那么可以在指定的服務器上設置ignore_fail=1,就算這些服務器出錯,MHA還是會繼續故障轉移。默認情況下,該參數值為0。

1.12 skip_init_ssh_check
在啟動初始化時跳過SSH連接。

1.13 skip_reset_slave
(從0.56開始支持)master 轉移之后跳過執行RESET SLAVE (ALL) 。

1.14 user
連接MySQL服務器的管理賬號。該參數應該為root,因為會執行一些管理命令,比如STOP SLAVE,CHANGE MASTER,RESET SLAVE。默認為root。

1.15 password
上述”user”用戶的MySQL密碼。默認為空。

1.16 repl_user
在每臺slave上執行CHANGE MASTER TO master_user ..時使用的復制用戶名。該用戶在master上需要有REPLICATIONSLAVE 權限。默認情況下,使用的是new master(當前還是slave)上SHOW SLAVE STATUS 中 Master_User 這一列的值。

1.17 repl_password
上述"repl_user"用戶的MySQL密碼。默認情況下,是當前replication密碼。如果運行onlinemaster switch并且指定了--orig_master_is_new_slave (意味著當前master會做為new master的slave)參數,如果不指定repl_password開啟slave就會失敗,因為在當前master上replication密碼默認為空(盡管在其他slaves上設置了replication密碼,但是MHA在當前master上執行change master時不指定replication 密碼)。

1.18 disable_log_bin
該參數啟用時,當在slaves上應用差異relay logs時,slaves不產生二進制日志。MHA會將 --disable-log-bin 傳給mysqlbinlog命令。

1.19 master_pid_file
設置master的pid文件。在單個服務器上運行多個MySQL實例時,這個參數是有效的。參照shutdown_script參數查看更多詳細信息。

1.20 ssh_user
MHA Manager 和 MHA Node連接MySQL服務器時使用的操作×××用戶名。使用該參數有多種目的:比如遠程執行命令(Manager->MySQL),從latest slave上復制差異relay logs到其他slaves(MySQL->MySQL),等等。

該用戶在MySQL binary/relay log 文件和relay_log.info 文件上必須至少有read權限。在日志目錄(每臺MySQL服務器上的remote_workdir)必須有write權限。

該用戶必須能夠無交互式的連接到服務器。一般推薦使用SSH公共密鑰驗證。默認情況下ssh_user是manager所在機器上的當前操作×××用戶。

1.21 remote_workdir
每個MHA Node(運行在MySQL服務器上)產生日志文件的路徑。如果該目錄不存在,MHA會自動創建。如果沒有賦予足夠的權限,MHA Node會終止。MHA Manager或MHA Node都不會檢測磁盤空間,所以應該注意這一點。默認情況下,remote_workdir是"/var/tmp"。

1.22 master_binlog_dir
master機器上MySQL產生二進制日志的目錄。當deadmaster可以通過SSH連接的時候該參數是有效的,為了讀取復制必需的二進制日志events。如果MySQL掛掉之后沒有方法自動檢測二進制日志目錄,所以該參數是必需的。

默認情況下,master_binlog_dir 是 "/var/lib/mysql,/var/log/mysql"。/var/lib/mysql是許多MySQL版本的默認binlog輸出目錄,/var/log/mysql是Ubuntu上MySQL包的默認binlog輸出目錄??梢栽O置多個目錄,這些目錄用逗號隔開(i.e /data1,/data2,…)。

1.23 log_level
MHA Manager打印出來的日志的臨界值。默認情況下是info,還可以設置 debug/info/warning/error。

1.24 manager_workdir
MHA Manager產生相關狀態的文件目錄。如果沒有設置,會使用/var/tmp。

1.25 manager_log
MHA Manager產生日志的完整目錄。如果沒有設置,MHAManager會輸出到STDOUT/STDERR。當執行手動切換時(交互式故障切換),MHAManager會忽略manager_log,并且總是輸出到STDOUT/STDERR。

1.26 check_repl_delay
默認情況下,如果一個slave落后master超過100MB的relay logs(相當于會應用超過100MB的relay logs),MHA就不會選擇該slave作為new master,因為恢復過程會花費太長時間。通過設置check_repl_delay=0,在選擇new master的時候MHA就會忽略復制延遲。如果在某個指定的host上設置了candidate_master=1,并且想要確保該host成為new master,那這個選項是有用的。

1.27 check_repl_filter
默認情況下,如果master和salves有不同的binary log/replication過濾規則,MHA會打印錯誤,并且不會開始監控或者故障切換。這是為了防止在恢復的時候出現不期望的錯誤,比如"Table not exists"。如果你可以100%的確保設置不同的過濾規則不會導致恢復出現問題,可以設置check_repl_filter = 0。在應用差異relaylogs的時候MHA不會檢查過濾規則,所以如果設置check_repl_filter = 0有可能會出現"Table not exists" (或者其他)錯誤。設置這個參數的時候應該謹慎一點。

1.28 latest_priority
默認情況下,latest slave(接受到最新的binlog events的slave)會被優先選為new master。如果想控制優先順序(i.e. host2->host3->host4),可以設置latest_priority=0。

1.29 multi_tier_slave
從MHA Manager 0.52版本開始,開始支持多主復制配置。默認情況下,是不允許在MHA配置文件中設置3層或者更多層的replication hosts。比如,假設host2從host1復制,host3從host2上復制。默認情況下是不允許在配置文件中配置host1,host2,host3的,因為這是一個三層的復制,MHA Manager會報錯停止。通過設置multi_tier_slave ,MHA Manager 不會因為三層復制終止,但是會忽略第三層的hosts。如果host1(master)宕機,host2就會被選為新的master,host3還是繼續從host2復制。

1.30 ping_interval
這個參數表示MHA Manager多久ping一次master(執行sql語句)。丟失三次連接后,MHA Manager決定MySQL master掛掉。默認是3秒。如果因為連接太多或者驗證錯誤導致MHA Manager連接失敗,不會記錄到ping失敗的次數里面。

1.31 ping_type
(從0.53開始支持)默認情況下,MHA建立了一個到master的持久連接,通過執行"SELECT 1" (ping_type=SELECT)來驗證master的可用性。但是在一些情況下,每次都斷開連接再重新連接時更好的,因為更嚴格,而且可以更快檢測到TCP連接層的失敗。通過設置ping_type=CONNECT可以實現這個。從0.56開始,添加了ping_type=INSERT。

1.32 secondary_check_script
通常來說,非常推薦使用兩個貨更多的網絡線路檢測MySQL master服務器的可用性。默認情況下,MHA Manager只是用單個線路檢測:從Manager到Master。但是這個并不推薦。MHA通過調用一個額外的腳本(通過secondary_check_script參數指定),實際上可以有兩個或更多的檢查線路。配置示例:

secondary_check_script =masterha_secondary_check -s remote_host1 -s remote_host2

masterha_secondary_check在MHA Manager包中已經包含。內置的masterha_secondary_check 腳本在大多數情況下都是比較好的,這里也可以調用其他任意腳本。

在上述示例中,MHA Manager通過Manager-(A)->remote_host1-(B)->master_host和 Manager-(A)->remote_host2-(B)->master_host檢測MySQL master服務器。如果在兩個線路中都會出現:connection A是成功的,但是B是不成功的,則masterha_secondary_check會退出(返回0),并且MHAManager決定MySQL master真的掛掉了,然后會進行failover。如果A是不成功的,masterha_secondary_check會退出(返回2),并且MHAManager猜測發生網絡問題,不會進行failover。如果B是成功的,masterha_secondary_check會退出(返回3),并且MHAManager 推斷MySQL master是存活的,不會進行failover。

一般來講,remote_host1 和 remote_host2 應該位于不同的網段(從MHA Manager和MySQL服務器)。

MHA 調用secondary_check_script參數定義的腳本,自動傳一下參數(所以不需要再配置文件中設置以下參數)。 masterha_secondary_check 在許多情形下是適宜的,但是如果你需要更多功能可以自己寫一些網絡監測腳本。

--user=(遠程hosts的SSH用戶名。ssh_user 參數的值會被傳入)
--master_host=(master的hostname)
--master_ip=(master的ip 地址)
--master_port=(master的端口號)
內置的masterha_secondary_check 腳本依賴于IO::Socket::INETPerl包,從Perl v5.6.0開始已經默認包含。masterha_secondary_check 腳本也是通過SSH連接到遠程服務器,所以也需要SSH公共密鑰驗證。還有,masterha_secondary_check 腳本嘗試從遠程服務器(set by -s)到MySQLmaster建立TCP連接。my.cnf中設置的max_connections參數不會影響,如果TCP連接成功,master上的aborted_connects值會加1。

1.33 master_ip_failover_script
在常見的HA環境中,許多情形下會在master上分配一個虛擬IP地址。如果master掛掉,HA軟件(比如:Pacemaker)會接管虛擬IP到備機上。

另一個常見的處理方式是創建一個全局性的目錄數據庫,該數據庫包含應用名稱和讀寫IP地址之間的映射(i.e. {app1_master1, 192.168.0.1}, {app_master2, 192.168.0.2}, …)。這種情形下,在當前master掛掉之后需要更新目錄數據庫。

兩者方式各有優勢和劣勢。MHA不強制使用其中一種方式,允許用戶使用任何一種IP地址故障切換的解決辦法,master_ip_failover_script參數被用于解決這個。 換句話說,需要編寫一個腳本使應用透明的連接到new master,必須定義在master_ip_failover_script 參數中。實例如下:

master_ip_failover_script= /usr/local/sample/bin/master_ip_failover
示例及保本位于(MHA Manager包)/samples/scripts/master_ip_failover。 示例腳本在MHA Managertarball和GitHup分支中包含。

MHA Manager 調用master_ip_failover_script 三次。第一次在進入master監控之前(腳本有效性檢查),第二次是在調用shutdown_script腳本之前,第三次是在應用差異relay log到new master之后。MHA Manager 傳入以下參數(不需要在配置文件中配置)。

Checking 階段
--command=status
--ssh_user=(當前master的ssh username)
--orig_master_host=(當前master 的 hostname)
--orig_master_ip=(當前 master的 ip地址)
--orig_master_port=(當前master的端口號)
當前master shutdown階段
--command=stop 或 stopssh
--ssh_user=(dead master的 ssh username,如果可以通過SSH訪問)
--orig_master_host=(current(dead) master的 hostname)
--orig_master_ip=(current(dead) master的 ip 地址)
--orig_master_port=(current(dead) master的 端口號)
New master 激活階段
--command=start
--ssh_user=(new master的 ssh username)
--orig_master_host=(dead master的 hostname)
--orig_master_ip=(dead master的 ip 地址)
--orig_master_port=(dead master的端口號)
--new_master_host=(new master的 hostname)
--new_master_ip=(new master的 ip 地址)
--new_master_port(new master的端口號)
--new_master_user=(new master的用戶)
--new_master_password(new master的密碼)
如果在master上使用了一個共享的虛擬IP地址,只要在之后shutdown_script中關掉了機器,在shutdown階段可能不需要做任何事。在newmaster激活階段,可以在new master上指定虛擬IP。

如果使用了目錄數據庫的方式,在master shutdown階段需要delete或者update dead master的記錄。在new master激活階段,可以insert/update new master的記錄。還有,可以做任何你需要做的事,使得應用可以寫入new master。比如,SET GLOBAL read_only=0,創建擁有write權限的數據庫用戶,等等。

MHA Manager 檢查該腳本退出的code(return code)。如果腳本返回的code為0或者10,MHA Manager 繼續操作。 如果腳本返回的code不是0或者10,MHA Manager終止,不會繼續故障切換。參數默認為空。

1.34 master_ip_online_change_script
類似于master_ip_failover_script 參數,但是該參數不是用于master故障切換的命令,用于master在線切換命令(masterha_master_switch--master_state=alive)。傳入以下參數。

Current master阻塞寫入階段
--command=stop 或 stopssh
--orig_master_host=(current master的 hostname)
--orig_master_ip=(current master的 ip 地址)
--orig_master_port=(current master的端口號)
--orig_master_user=(current master的用戶)
--orig_master_password=(current master的密碼)
--orig_master_ssh_user=(從0.56支持, current master的 ssh user)
--orig_master_is_new_slave=(從0.56支持, 表示原來的master是否會成為新的slave)
New master 賦write權限階段
--command=start
--orig_master_host=(orig master的hostname)
--orig_master_ip=(orig master的 ip 地址)
--orig_master_port=(orig master的端口號)
--new_master_host=(new master的 hostname)
--new_master_ip=(new master的ip 地址)
--new_master_port(new master的端口號)
--new_master_user=(new master的用戶)
--new_master_password=(new master的密碼)
--new_master_ssh_user=(從0.56支持, new master的 ssh user)
當前master阻塞寫階段,MHA 在當前master上執行 FLUSH TABLES WITH READ LOCK 。在new master賦wirte權限階段,可以做和master_ip_failover_script一樣的事情。比如,創建有權限的用戶,執行SET GLOBAL read_only=0,更新目錄數據庫,等等。如果腳本返回的code不是0或10,則MHA Manager 會終止,并且不會繼續master切換。

默認參數為空。

示例腳本位于(MHA Manager包)/samples/scripts/master_ip_online_change。

1.35 shutdown_script
為了防止master重啟服務,需要強制關閉掉master服務器。對于防止腦裂很重要。示例如下:

shutdown_script= /usr/local/sample/bin/power_manager

示例腳本位于(MHA Manager包)/samples/scripts/power_manager。示例腳本在MHA Managertarball和GitHup分支中包含。

調用shutdown_script之前, MHA Manager輝縣檢查MySQL master能否通過SSH訪問。如果SSH可達(OS 是可用的,但是mysqld不運行了,i.e. 數據文件損壞了), MHA Manager 傳入以下參數。

--command=stopssh
--ssh_user=(用于連接master的ssh username)
--host=(master的 hostname)
--ip=(master的ip 地址)
--port=(master的端口號)
--pid_file=(master的 pid 文件)
如果master通過SSH不可達,MHA Manager傳入以下參數。

--command=stop
--host=(master的 hostname)
--ip=(master的 ip 地址)
示例腳本工作方式如下:如果傳入--command=stopssh ,該腳本通過ssh連接master然后kill掉所有的mysqld 和mysqld_safe進程。如果也傳入了 --pid_file ,或者kill掉所有mysqld和mysqld_safe進程失敗的時候,該腳本只會kill掉指定的進程。在master上運行多個實例時該參數是有用的。如果command=stopssh成功,則該腳本返回code 10。如果返回code為10, MHA Manager 之后會連接到master,并且保存必需的二進制日志。如果通過SSH連接master失敗,或者傳入--command=stop,則該腳本會嘗試關閉機器。關機命令依賴于 H/W。對于HP(iLO),通常使用ipmitool 或 SSL 。對于Dell(DRAC),通常使用dracadm 。如果關機成功,該腳本會返回code 0。否則會返回code 1。如果返回的code為0,則MHA Manager開始故障切換。如果返回的code不是0 或 10, MHA Manager 終止故障切換。默認該參數為空。

還有,MHA Manager在開始監控的時候調用shutdown_script。以下參數在這個時候傳入??梢栽谶@一步進行設置??刂苝ower依賴于H/W,所以強烈推薦在這一步檢查power status。如果一些地方出錯,在開始監控之前就可以意識到。

--command=status
--host=(master的 hostname)
--ip=(master的 ip 地址)
1.36 report_script
failover完成或者因為錯誤結束的時候可能需要發送報告(i.e. e-mail)。report_script 用于這個目的。MHA Manager傳入以下參數。

--orig_master_host=(dead master的 hostname)
--new_master_host=(new master的 hostname)
--new_slave_hosts=(new slaves 的 hostnames,通過逗號分隔)
--subject=(mail subject)
--body=(body)
參數默認為空。

示例腳本位于(MHA Manager 包)/samples/scripts/send_report。示例腳本在MHA Managertarball 和 GitHub分支中包含。

1.37 init_conf_load_script
當不想在配置文件中設置純文本(i.e. password和repl_password)的時候可以使用該腳本。通過從該腳本返回 "name=value" 對,可以覆蓋全局配置文件的參數。示例如下。

#!/usr/bin/perl
print "password=$ROOT_PASS\n";
print "repl_password=$REPL_PASS\n";
參數默認為空。

以上內容均為自己翻譯,有錯誤的地方麻煩之處,謝謝。
###

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女