久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL中的MHA怎么用

135次閱讀
沒有評論

共計 3144 個字符,預計需要花費 8 分鐘才能閱讀完成。

本篇文章為大家展示了 MySQL 中的 MHA 怎么用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

提到 MySQL 高可用性,很多人會想到,亦或者 +,不過這些方案的復雜性常常讓人望而卻步,與之相對,利用 MySQL 復制實現(xiàn)高可用性則顯得容易很多,目前大致有,,等方案可供選擇:MMM 是最常見的方案,可惜它問題太多(,);至于 PRM,它還是個新項目,暫時不推薦用于產(chǎn)品環(huán)境,不過作為的作品,它值得期待;如此看來目前只能選 MHA 了,好在經(jīng)過大規(guī)模的實踐應用證明它是個靠譜的工具。
 
安裝:
作為前提條件,應先配置 MySQL 復制,并設置 SSH 公鑰免密碼登錄。下面以 CentOS 為例來說明,最好先安裝 EPEL,不然 YUM 可能找不到某些軟件包。
 
MHA 由 Node 和 Manager 組成,Node 運行在每一臺 MySQL 服務器上,也就是說,不管是 MySQL 主服務器,還是 MySQL 從服務器,都要安裝 Node,而 Manager 通常運行在獨立的服務器上,但如果硬件資源吃緊,也可以用一臺 MySQL 從服務器來兼職 Manager 的角色。
 
安裝 Node:
 
shell yum install perl-DBD-MySQL
shell rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.52-0.noarch.rpm 安裝 Manager:
 
shell yum install perl-DBD-MySQL
shell yum install perl-Config-Tiny
shell yum install perl-Log-Dispatch
shell yum install perl-Parallel-ForkManager
shell rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-node-0.52-0.noarch.rpm
shell rpm -Uvh http://mysql-master-ha.googlecode.com/files/mha4mysql-manager-0.52-0.noarch.rpm 配置:
配置全局設置:
 
shell cat /etc/masterha_default.cnf
[server default]
user=…
password=…
ssh_user=… 配置應用設置:
 
shell cat /etc/masterha_application.cnf
[server_1]
hostname=…
 
[server_2]
hostname=… 注:MHA 配置文件中參數(shù)的詳細介紹請參考官方文檔。
 
檢查
檢查 MySQL 復制:
 
shell masterha_check_repl –conf=/etc/masterha_application.cnf 檢查 SSH 公鑰免密碼登錄:
 
shell masterha_check_ssh –conf=/etc/masterha_application.cnf 實戰(zhàn)
首先啟動 MHA 進程:
 
shell masterha_manager –conf=/etc/masterha_application.cnf 注:視配置情況而定,可能會提示 read_only,relay_log_purge 等警告信息。
 
然后檢查 MHA 狀態(tài):
 
shell masterha_check_status –conf=/etc/masterha_application.cnf 注:如果正常,會顯示『PING_OK』,否則會顯示『NOT_RUNNING』。
 
到此為止,一個基本的 MHA 例子就能正常運轉了,不過一旦當前的 MySQL 主服務器發(fā)生故障,MHA 把某臺 MySQL 從服務器提升為新的 MySQL 主服務器后,如何通知應用呢?這就需要在配置文件里加上如下兩個參數(shù):
 
master_ip_failover_script
master_ip_online_change_script
說到 Failover,通常有兩種方式:一種是虛擬 IP 地址,一種是全局配置文件。MHA 并沒有限定使用哪一種方式,而是讓用戶自己選擇,虛擬 IP 地址的方式會牽扯到其它的軟件,這里就不贅述了,以下簡單說說全局配置文件,以 PHP 為實現(xiàn)語言,代碼如下:
 
#!/usr/bin/env
?php
$longopts = array(
  command: ,
  ssh_user: ,
  orig_master_host: ,
  orig_master_ip: ,
  orig_master_port: ,
  new_master_host:: ,
  new_master_ip:: ,
  new_master_port:: ,
);
 
$options = getopt(null, $longopts);
 
if ($options[ command] == start ) {
  $params = array(
  ip   = $options[new_master_ip],
  port = $options[new_master_port],
  );
 
  $string = ?php return . var_export($params, true) . ?
 
  file_put_contents(config.php , $string, LOCK_EX);
}
 
exit(0);
? 注:用其它語言實現(xiàn)這個腳本也是 OK 的,最后別忘了給腳本加上可執(zhí)行屬性。
 
如果要測試效果的話,可以 kill 掉當前的 MySQL 主服務器,稍等片刻,MHA 就會把某臺 MySQL 從服務器提升為新的 MySQL 主服務器,并調用 master_ip_failover_script 腳本,如上所示,我們在 master_ip_failover_script 腳本里可以把新的 MySQL 主服務器的 ip 和 port 信息持久化到配置文件里,這樣應用就可以使用新的配置了。
 
有時候需要手動切換 MySQL 主服務器,可以使用 masterha_master_switch 命令,不過它調用的不是 master_ip_failover_script 腳本,而是 master_ip_online_change_script 腳本,但調用參數(shù)類似,腳本可以互用。
 
shell masterha_master_switch –conf=/etc/masterha_application.cnf –master_state=dead –dead_master_host=…
shell masterha_master_switch –conf=/etc/masterha_application.cnf –master_state=alive –new_master_host=… 注:針對原來的 MySQL 主服務器是否已經(jīng)宕機,執(zhí)行命令所需的參數(shù)有所不同。
 
需要說明的是,缺省情況下,如果 MHA 檢測到連續(xù)發(fā)生宕機,且兩次宕機時間間隔不足八小時的話,則不會進行 Failover,之所以這樣限制是為了避免 ping-pong 效應。不過為了自動化,我們往往希望能取消這種限制,此時可以用如下方式啟動 Manager:
 
shell nohup masterha_manager –conf=/etc/masterha_application.cnf –ignore_last_failover –remove_dead_master_conf 注:請確保 Manager 的運行用戶對 masterha_application.cnf 有寫權限

上述內容就是 MySQL 中的 MHA 怎么用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計3144字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 大理市| 定南县| 清河县| 冀州市| 拜城县| 土默特右旗| 东丰县| 广汉市| 凤庆县| 蒙自县| 铜陵市| 淮北市| 宾川县| 灵山县| 喀喇沁旗| 方城县| 滕州市| 清徐县| 铜川市| 拜泉县| 类乌齐县| 江门市| 阿图什市| 莱芜市| 大埔区| 社会| 怀远县| 苍南县| 赫章县| 墨脱县| 平安县| 西城区| 广水市| 民乐县| 天津市| 宝鸡市| 清丰县| 南召县| 双辽市| 旬阳县| 永春县|