中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

MySQL中的MHA怎么用

發布時間:2021-10-13 16:07:42 來源:億速云 閱讀:106 作者:柒染 欄目:數據庫

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

提到MySQL高可用性,很多人會想到,亦或者+,不過這些方案的復雜性常常讓人望而卻步,與之相對,利用MySQL復制實現高可用性則顯得容易很多,目前大致有,,等方案可供選擇:MMM是最常見的方案,可惜它問題太多(,);至于PRM,它還是個新項目,暫時不推薦用于產品環境,不過作為的作品,它值得期待;如此看來目前只能選MHA了,好在經過大規模的實踐應用證明它是個靠譜的工具。
 
安裝:
作為前提條件,應先配置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配置文件中參數的詳細介紹請參考官方文檔。
 
檢查
檢查MySQL復制:
 
shell> masterha_check_repl --conf=/etc/masterha_application.cnf檢查SSH公鑰免密碼登錄:
 
shell> masterha_check_ssh --conf=/etc/masterha_application.cnf實戰
首先啟動MHA進程:
 
shell> masterha_manager --conf=/etc/masterha_application.cnf注:視配置情況而定,可能會提示read_only,relay_log_purge等警告信息。
 
然后檢查MHA狀態:
 
shell> masterha_check_status --conf=/etc/masterha_application.cnf注:如果正常,會顯示『PING_OK』,否則會顯示『NOT_RUNNING』。
 
到此為止,一個基本的MHA例子就能正常運轉了,不過一旦當前的MySQL主服務器發生故障,MHA把某臺MySQL從服務器提升為新的MySQL主服務器后,如何通知應用呢?這就需要在配置文件里加上如下兩個參數:
 
master_ip_failover_script
master_ip_online_change_script
說到Failover,通常有兩種方式:一種是虛擬IP地址,一種是全局配置文件。MHA并沒有限定使用哪一種方式,而是讓用戶自己選擇,虛擬IP地址的方式會牽扯到其它的軟件,這里就不贅述了,以下簡單說說全局配置文件,以PHP為實現語言,代碼如下:
 
#!/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);
?>注:用其它語言實現這個腳本也是OK的,最后別忘了給腳本加上可執行屬性。
 
如果要測試效果的話,可以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腳本,但調用參數類似,腳本可以互用。
 
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主服務器是否已經宕機,執行命令所需的參數有所不同。
 
需要說明的是,缺省情況下,如果MHA檢測到連續發生宕機,且兩次宕機時間間隔不足八小時的話,則不會進行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怎么用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

哈密市| 东平县| 繁昌县| 镇康县| 宁南县| 金溪县| 潞城市| 房山区| 十堰市| 高陵县| 集贤县| 九龙县| 苗栗市| 龙泉市| 铜鼓县| 土默特右旗| 瑞昌市| 柏乡县| 彩票| 沙洋县| 通州区| 富蕴县| 岱山县| 易门县| 宁乡县| 弥勒县| 施秉县| 咸宁市| 沈丘县| 安新县| 五指山市| 手游| 惠来县| 襄汾县| 剑阁县| 邯郸市| 连州市| 台北市| 东海县| 黔江区| 祁连县|