您好,登錄后才能下訂單哦!
這篇文章主要講解了“MYSQL的MHA參數有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MYSQL的MHA參數有哪些”吧!
Local : 指每一個配置塊內部。 Local功能的參數需要放置在[server_xxx] 塊下面
App : 參數作用于master/slave, 這些參數需要配置在[server_default]塊的下面
Global : 作用于master/slave, Global級別的參數用于管理多組master/slave結構,可以統一化管理一些參數。
hostname
配置MySQL服務器的機器名或是IP地址,這個配置項是必須的,而且只能配置在[server_xxx]這個塊下面。
如:
參數名 是否必須 作用域 默認值 例子及說明
hostname Yes Local Only – hostname=mysql_server1, hostname=192.168.0.1, etc
ip
MySQL服務器的ip地址。 默認從gethostname($hostname)中獲得。 默認不用配置這個參數,MHA可以通過hostname自動獲取,MHA通過IP地址連接MySQL服務器及SSH連接。
如:
參數名 是否必須 作用域 默認值 例子及說明
ip No Local Only 通過gethostbyname($hostname)獲得 ip=192.168.1.3
port
MySQL運行的端口號。 默認是3306. MHA使用IP和端口號連接MySQL
如:
參數名 是否必須 作用域 默認值 例子及說明
port No Local/App/Glbal 3306 port=3306
ssh_host
(從MHA 0.53后開始支持) MHA要ssh上MySQL目標服務器使用hostname 或是ip地址。這個參數主要用于在使用多個VLAN的環境中。為了安全原因ssh默認不允許。默認這個參數和hostname相同。
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_host No Local Only 和hostname相同 ssh_host=mysql_server1, ssh_host=192.168.0.1, etc
ssh_ip
(從MHA 0.53后開始支持) 和ssh_host作用相同。 默認是gethostname($ssh_host)獲得。
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_ip No Local Only gethostbyname($ssh_host) ssh_ip=192.168.1.3
ssh_port
(從MHA 0.53后開始支持) SSH使用的端口號,默認是22.
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_port No Local/App/Global 22 ssh_port=22
ssh_connection_timeout
(從MHA 0.54后支持)默認是5秒。在沒添加這個參數之前ssh超時時間是寫死的。
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_connection_timeout No Local/App/Global 5 ssh_connect_timeout=5
ssh_options
(從MHA 0.53后支持) 添加ssh命令行的支持參數,例如加上特別文件名的key的支持等。
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_options No Local/App/Global “” 空的 ssh_options=”-i /root/.ssh/id_dsa2″
candidate_master
你可能對于同一組slave中有著不同的規劃,有的其望在Master故障時,提升為新的Master(如: Raid1的slave比Raid0的slave更適合做Master)
這個參數的作用是當設計candidate_master = 1時,這個服務器有較高的優先級提升為新的master(還要具備: 開啟binlog, 復制沒有延遲)。 所以當設置了candidate_master = 1的機器在master故障時必然成為新的master. 但這是很有用的設置優先級的一個參數。
如果設置了多臺機器的caddidate_master = 1 , 優先策略依賴于塊名字([server_xxx]). [server_1] 優銜權高于[server_2].
如:
參數名 是否必須 作用域 默認值 例子及說明
candidate_master No Local Only 0 candidate_mast=1
no_master
當設置了no_master = 1的服務器,這個服務器永遠不會提升為新的master. 這個參數據對于永遠不期望成為master的機器很有用。 如: 你可能需要在使用raid0的機器上設置no_master = 1 或是你希望在遠程的idc里運行一個slave. 注意: 當沒有可以成為新master的機器是MHA就直接退出來了同時停止監控和master故障切換。
如:
參數名 是否必須 作用域 默認值 例子及說明
no_master No Local Only 0 no_master=1
ignore_fail
在默認情況下,MHA manager不會在slave存在故障的情況下(已經不能通過SSH/MySQL進行連接,或是SQL Thread已經停止出錯,其它原因)的情況下進行Master的故障切換(當不存在slave時MHA manager也會退出)。 但有些情況下你期望在slave存在問題的情況下,也進行故障切換。 所以當設置了ignore_fail = 1時,MHA會在所有的機器有問題的時間也會進行故障切換。 默認是0.
如:
參數名 是否必須 作用域 默認值 例子及說明
ignore_fail No Local Only 0 ignore_fail=1
#skip_init_ssh_check#
在MHA manager啟動時跳過ssh檢查。
如:
參數名 是否必須 作用域 默認值 例子及說明
skip_init_ssh_check No Local Only 0 skip_init_ssh_check=1
skip_reset_slave
(從MHA 0.56開始支持) Master故障切換后新的master上執行RESET SLAVE(ALL).
如:
參數名 是否必須 作用域 默認值 例子及說明
skip_reset_slave No Local/App/Global 0 skip_reset_slave=1
user
用于管理MySQL的用戶名。這個最后需要root用戶,因為它需要執行:stop slave; change master to , reset slave. 默認: root
如:
參數名 是否必須 作用域 默認值 例子及說明
user No Local/App/Global root user=mysql_root
password
MySQL的管理用戶的密碼。 默認是空的
如:
參數名 是否必須 作用域 默認值 例子及說明
password No Local/App/Global 空的 password=rootpass
repl_user
MySQL用于復制的用戶,也是用于生成CHANGE MASTER TO 每個slave使用的用戶。 這個用戶必須有REPLICATION SLAVE權限在新的Master上。默認情況下 repl_user會在將來成為master的機器上運行show slave status獲取到。
如:
參數名 是否必須 作用域 默認值 例子及說明
repl_user No Local/App/Global 從show slave status repl_user=repl
repl_password
MySQL中repl_user用戶的密碼。 默認是當前復制用的密碼。 當你使用online_master_switch時,當使用–orig_master_is_new_slave(原來的Master成為新Master的一個slave)時,如果沒有repl_password 開啟同步就會失敗了。因為當前master上用于復制的用戶名和密碼都是空的(MHA在原來的Master上執行change master to 時沒有帶復制的密碼,雖然其它slave上設置了復制的密碼)
如:
參數名 是否必須 作用域 默認值 例子及說明
repl_password No Local/App/Global 當前復制用的密碼 repl_password=replpas
disable_log_bin
當設置了這個參數,在slave應用差異的relay log時不會產生二進制日志。 內部實現通過mysqlbinlog的disable-log-bin實現。
如:
參數名 是否必須 作用域 默認值 例子及說明
disable_log_bin No Local/App/Global 0 disable_log_bin=1
master_pid_file
指定MySQL的pid文件。 這個參數在一臺服務器上運行多個MySQL服務進程時非常有用。
如:
參數名 是否必須 作用域 默認值 例子及說明
master_pid_file No Local/App/Global – master_pid_file=/var/lib/mysql/master1.pid
ssh_user
MHA Mananger, MHA node系統上的用戶。 這個帳號需要在遠程機器上有執行權限(Manager->MySQL),在slave成員之間復制差異的relay-log(MySQL->MySQL)
這個用戶必須有讀取MySQL的binary/relay日志和relay_log.info的權限,還需要對遠程MySQL上remote_workdir目錄的寫權限。
這個用戶還必須可以直接ssh到遠程機順上, 推薦使用ssh pbulic key . 一般使用的ssh_user也是運行manager那個那個用戶。
如:
參數名 是否必須 作用域 默認值 例子及說明
ssh_user No Local/App/Global 當前使用的系統用戶 ssh_user=root
remote_workdir
MHA node上工作目錄的全路徑名。如果不存在,MHA node會自動創建,如果不允許創建,MHA Node自動異常退出。 需要注意MHA manager 或是MHA node上需要檢查空間是否可用,所以需要注意檢查這個。 一般默認, remote_workdir是的”/var/tmp”
如:
參數名 是否必須 作用域 默認值 例子及說明
remote_workdir No Local/App/Global /var/tmp remote_workdir=/var/log/masterha/app1
master_binlog_dir
master上用于存儲binary日志的全路徑。這個參數用于當master上mysql死掉后,通過ssh連到mysql服務器上,找到需要binary日志事件。這個參數可以幫助用于無法找到master進程死掉后binary日志存儲位置。
一般: master_binlog_dir是”/var/lib/mysql/, /var/log/mysql”. “/var/lib/mysql/”是大多數系統發行版本的存放位置,”/var/log/mysql”是ubuntu發行版本的存放位置。 你也可以設置多個存放位置用逗號隔開。
如:
參數名 是否必須 作用域 默認值 例子及說明
master_binlog_dir No Local/App/Gobal /var/lib/mysql master_binlog_dir=/data/mysql1,/data/mysql2
log_level
設置MHA manager記錄LOG的級別。 默認是info級別而且大多數情況也是比較適合。 同樣可以設置為: debug/info/warning/error.
如:
參數名 是否必須 作用域 默認值 例子及說明
log_level No App/Global info log_level=debug
manager_workdir
用于指定mha manager產生相關狀態文件全路徑。 如果沒設置 默認是/var/tmp
如:
參數名 是否必須 作用域 默認值 例子及說明
manager_workdir No App /var/tmp manager_workdir=/var/log/masterha
manager_log
指定mha manager的絕對路徑的文件名日志文件。 如果沒設置MHA Manager將打印到STDOUT/STDERR。 當手工執行故障切換(交互模式切換),MHA Manager會忽略manager_log設置直接將日志輸出到STDOUT/STDERR.
如:
參數名 是否必須 作用域 默認值 例子及說明
manager_log No App STDERR manager_log=/var/log/masterha/app1.log
check_repl_delay
在默認情況下,當一個slave同步延遲超過100M relay log(需要應用超過100M relay log), MHA在做故障切換時不會選擇這個slave做為新的master,因為恢復需要經過很長時間.當設置了check_repl_delay = 0, MHA將忽略被選擇的slave上的同步延遲。 這個選項在設置了candidate_master = 1特聲明的期望這臺機器成為master的情況下特別有用。
如:
參數名 是否必須 作用域 默認值 例子及說明
check_repl_delay No App/Golbal 1 check_repl_delay=0
check_repl_filter
在默認下情況,當master和slave設置了不同了binary log/replication 過濾規則時,MHA直接報錯不會進行監控和故障切換。 這些將會導致出現一些異想不到的錯誤”Table not exists”。如果你100%確認不同的過濾規則不會導致恢復中的錯誤,設置check_repl_filter=0。 需要注意: 當使用了check_repl_filter = 0時,MHA不會檢查過濾規則在應用差異的relay日志,所以有可能會出現”Table not exists”的錯誤。當你設置了這個參數請小心處理。
如:
參數名 是否必須 作用域 默認值 例子及說明
check_repl_filter No App/Global 1 check_repl_filter=0
latest_priority
在默認情況下,和Master最接近的slave(一個slave從Master上獲得了最一個binlog事件)是最有優先權成為新的master。 如果你想控制一下切換的策略(如: 先選擇host2,如果不行,選host3;host3不行,選host4…) 那么設置latest_priority = 0 就可以了。
如:
參數名 是否必須 作用域 默認值 例子及說明
latest_priority No App/Global 1 latest_priority=0
multi_tier_slave
從MHA 0.52開始, 多層復制可以支持了。在默認情況下,不支持三層或是更多層的復制配置。 如果: host2從host1上復制,host3從host2上復制。 在默認配置的情況下不支持寫host{1,2,3},因為這是一個三層的復制,MHA Manager會停止報錯。 當設置了multi_tier_slave, MHA Manager就不會在三層復制報錯停止。 但是會忽略第三層的機器。也就是如果host1掛了,host2將會成為新的master,host3還是從host2上進行復制。
這個參數在MHA Manager 0.52后的版開始支持。
如:
參數名 是否必須 作用域 默認值 例子及說明
muli_tier_slave No App/Global 0 multi_tier_slave=1
ping_interval
這個參數設置MHA Manager多長時間去ping一下master(執行一些SQL語句). 當失去和master三次償試,MHA Manager會認為MySQL Master死掉了。也就是說,最大的故障切換時間是4次ping_interval的時間,默認是3秒。
如果MHA Manager在和MySQL創建連接時都收到多連接錯誤或是認證錯誤,這個就不做重試就會認為master已經掛掉。
如:
參數名 是否必須 作用域 默認值 例子及說明
ping_interval No App/Global 3 ping_interval=5
ping_type
(從MHA 0.53后開始支持) 在默認情況下, MHA manager和MySQL創建一個連接執行”select 1″(ping_type=select)用于檢查master是否健康。 但有一些情況: 每次檢測都連接/然后斷開會比較好一點,這樣對于tcp方面的錯誤感知更快一點。設置ping_type=CONNECT 就行了。從MHA 0.56后pint_type=INSERT也被添加。
如:
參數名 是否必須 作用域 默認值 例子及說明
ping_type No App/Global SELECT ping_type=CONNECT
secondary_check_script
一般來講, 非常推薦使用更多網絡上機器是不同路由策略上的機器來檢查MySQL Master是否存活。 默認情況下,只有MHA Manager通過一個路由來檢查Master是否存活。這個也是不推薦的。MHA可以通過外部secondary_check_script配置的腳本來做到從多個路由策略下進行檢查。
secondary_check_script = masterha_secondary_check -s remote_host1 -s remote_host2
secondary_check_script包含在MHA Manager發行包中。 MHA中內置的secondary_check_script在大多數情況下工作良好,但并不是任何地都可以使用這個腳本。
在上面的例子中, MHA Manager通過Manager->(A)->remote_host1->(B)->master_host 和Manager->(A)-remote_host2->(B)->master_host來檢查MySQL master是否存活。如果在連接過程中通過A可以都成功,通過B是都失敗,secondary_\check_\script返回0,而且認為master已經死掉,進行故障切換。如果通過A成功,但返回代碼為: 2,則MHA manager有會認為是網絡問題,則不會進行故障切換。如果A成功,B也成功,masterha_secondary_check 退出返回:3 則MHA Manager就為認為MySQL Master為存活狀態, 則不會進行故障切換。
一般來講, remote_host1和remote_host2是和MHA Manager及MySQL Server位于不同的網段中。
MHA會調用secondary_check_script聲明的腳本并自動帶上一些參數。 masterha_secondary_check在很多場景都是適用的,但是你也可以自已實現這個程序帶有更多的功能。
–user=(在遠程機器上使用的SSH用戶名。 ssh_user的值將被使用)
–master_host = (master的hostname)
–master_ip = (master的ip地址)
–master_port = ( master的端口號)
注意: 內置的masterha_secondary_check腳本依賴于的Perl的IO::Socket::INET(Perl 5.6.0中是默認支持包含這個模塊)。 masterha_secondary_check需要通過ssh連接到遠程的機器上,所以需要manager到遠程機器上建立public key信任。另外masterha_secondary_check是通過和Master建立TCP的連接測試Master是否存活,所以mysql設置的max_connections不起作用。 但每次TCP連接成功后,MySQL的Aborted_connects 值都會加1。
如:
參數名 是否必須 作用域 默認值 例子及說明
secondary_check_script No App/Global null secondary_check_script= masterha_secondary_check -s remote_dc1 -s remote_dc2
master_ip_failover_script
如:
參數名 是否必須 作用域 默認值 例子及說明
master_ip_failover_script No App/Global null master_ip_failover_script=/usr/local/custom_script/master_ip_failover
master_ip_online_changes_script
這個參數有點類似于master_ip_failover_script,但這個參數不用于master 故障轉意,只使用到master在線的切換。
凍結Master寫的過程:
–command=stop or stopssh
–orig_master_host = (當前master的主機名)
–orig_master_ip = (當前master的ip地址)
–orig_master_port = (當前master的port端口號)
–orig_master_user = (當前master的用戶)
–orig_master_password = (當前master的用戶名)
–orig_master_ssh_user = (從0.56支持,當前master的ssh的用戶名)
–orig_master_is_new_slave = (從 0.56 ,是否把原Master更改為新的slave)
新的Master接受寫的過程:
–command=start
–orig_master_host = ( 原master的機器名 )
–orig_master_ip = ( 原master的ip )
–orig_master_port = ( 原master的端口號 )
–new_master_host = (新master的機器名)
–new_master_ip = (新master的ip)
–new_master_port = (新master的端口號)
–new_master_user = (新master上的用戶名)
–new_master_password = (新master上的用戶名及密碼)
–new_master_ssh_user = (從0.56支持, 新master上的ssh用戶)
MHA在凍結寫的切換過程中會在Master上執行FlUSH TABLES WITH READ LOCK,在這個優雅的切換過程不會有任何寫入的。在新的Master在開始授權寫的過程中,你可以做和master_ip_failover_script一樣的事情。 例如: 創建用戶及權限, 執行set global read_only=0, 更新數據庫路由表竺。 如果腳本執行退出碼不是0 或是10, MHA Manager異常退出并發不會繼續進行master切換。
默認這個參數是空的,所以MHA Manager在默認情況下什么也不做。
可以在(MHA Manager package)/samples/scripts/master_ip_online_change。里找到例子腳本。例子腳本包含于MHA Manager源文件或是GitHub的分支中。
如:
參數名 是否必須 作用域 默認值 例子及說明
master_ip_online_change_script No App/Global null master_ip_online_change_script= /usr/local/custom_script/master_ip_online_change
shutdown_script
如:
參數名 是否必須 作用域 默認值 例子及說明
shutdown_script No App/Global null shutdown_script= /usr/local/custom_script/master_shutdown
report_script
在Master故障完畢后,也許想發一個送一個報告(如email)報告一下切換完畢或是發生的錯誤。report_script可以完成這個工作。MHA Manager可以通過以下參數使用:
–orig_master_host = (死掉master機器名)
–new_master_host = (新的master機器名)
–new_slave_hosts = (新的slave機器名列表,用逗號隔開)
–subject = (郵件名)
–body = (正文)
默認這些參數是空的。 所以默認MHA Manager什么事情也不做。
可以在(MHA Manager package)/samples/scripts/send_report里找到例子腳本。例子腳本包含于MHA Manager源文件或是GitHub的分支中。
如:
參數名 是否必須 作用域 默認值 例子及說明
report_script No App/Global null report_script= /usr/local/custom_script/report
init_conf_load_script
這個參數用于不想設置明文在配置文件中(如:密碼相關)。 只用返回”name=value”這樣的值。 這個可以用來復蓋global配置中的一些值。一個例子腳本如下。
#!/usr/bin/perl
print “password=$ROOT_PASS\n”;
print “repl_password=$REPL_PASS\n”;
如:
參數名 是否必須 作用域 默認值 例子及說明
init_conf_load_script No App/Global null report_script= /usr/local/custom_script/init_conf_loader
感謝各位的閱讀,以上就是“MYSQL的MHA參數有哪些”的內容了,經過本文的學習后,相信大家對MYSQL的MHA參數有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。