MHA實現Mysql半同步高可用
一、MHA介紹
1、MHA兩部分組成
MHA 由兩部分組成: MHA Manager(管理節點)和 MHA Node(資料節點)。 MHA Manager可以單獨部署在一臺獨立的機器上管理多個 master-slave 叢集,也可以部署在一臺 slave 節點上。
2、MHA實現原理
原理:
MHA(Master High Availability)是現在解決mysql高可用的一個相對成熟的方案
它是由兩部分組成,管理端(master manager)和節點端(node manager),管理端可以單獨佈置在一臺機器上,整個mysql主從叢集就是它的各個節點,
管理端對所有節點進行監控,當master宕機之後,管理端會根據自己配置檔案裡的設定,將某一個從節點升為主節點,(如果沒有設定,它會自己比對,將最新資料的節點升為主節點),然後將其他節點自動指向提升上來的新的主節點,在提升的過程中,所有結點之間必須可以無密碼ssh連線,管理端可以對所有的節點ssh無密碼連線.
在MHA自動故障切換的過程中,如果宕掉的 master 無法ssh連線上,則無法同步最新的二進位制日誌,也就無法獲得最新的資料,造成資料丟失,因此,為了避免這中情況發生,MHA一般配合半同步複製.可以最大程度的儲存資料.
為了避免在更換主節點時同步日誌出錯(pos模式下更換節點,日誌同步會出錯),我們開啟GTID模式
目前MHA支援一主多從,整個MHA架構最少有三個節點,一臺master 一臺slave做備用master 一臺slave只做同步,當然,為了充分利用資源,叢集可以做讀寫分離(master做寫操作,slave做讀操作)
二、實驗環境
server1:172.25.12.1(安裝 MHA) server2:172.25.12.2(Mysql Master) server3:172.25.12.3(Mysql Slave) server4:172.25.12.4(Mysql Slave)
三、Mysql 安裝
mysql-community-client.x86_64 0:5.7.17-1.el6 mysql-community-common.x86_64 0:5.7.17-1.el6 mysql-community-libs.x86_64 0:5.7.17-1.el6
mysql-community-libs-compat.x86_64 0:5.7.17-1.el6 mysql-community-server.x86_64 0:5.7.17-1.el6
1,在server2,3,4上面安裝mysql
/etc/init.d/mysqld restart grep password /var/log/mysqld.log #在日誌裡面查詢臨時密碼 mysql_secure_installation #通過臨時密碼修改密碼
2、設定server-id(server2,3,4)
所有節點配置檔案都一樣,除了裡面的引數 server-id 其他的都必須一致,因為所有節點都有可能升至master
vim /etc/my.cnf
server-id=2 #id需要唯一
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=true
/etc/init.d/mysqld restart #修改完以後需要重新啟動
四、半同步複製安裝
1、在master中授權
mysql> grant REPLICATION SLAVE on *.* to [email protected]'172.25.12.%' identified by 'GAOyu123...';
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 446 | | | |
+------------------+----------+--------------+------------------+-------------------+
2、在slave啟動serve3,4
mysql> change master to master_host='172.25.12.2',master_user='repl',master_password='GAOyu123...',master_log_file='mysql-bin.000001',master_log_pos=446;
#master_log_file 和master_log_pos參考server2
mysql> start slave;
mysql> show slave status\G; #查詢的資訊中2個必須為yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
3、開啟master(server2)
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
mysql> show status like 'Rpl_semi_sync_master_status'; ###查詢主是否開啟成功
+-----------------------------+-------+
| Variable_name | |
| Value | |
+-----------------------------+-------+
| Rpl_semi_sync_master_status | ON |
| | |
+-----------------------------+-------+
4、開啟slave(serve3、4)
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
mysql> show status like 'Rpl_semi_sync_slave_status'; ###查詢從是否開啟成功
+----------------------------+-------+
| Variable_name | |
| Value | |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON |
| | |
+----------------------------+-------+
五、SSH 無密碼連線
MHA manager 通過 SSH 訪問所有的 node 節點,各個 node 節點也同樣需要通過 SSH 來相互發送不同的 relay log檔案,所以有必要在每一個node和manager上配置SSH無密碼登陸。MHAmanager可通過 masterha_check_ssh 指令碼檢測 SSH 連線是否配置正常。
1、在server1中生成key
ssh-keygen
#一路回車
2、在server1中把公鑰和私鑰傳送給 server2.3.4
scp /root/.ssh/id_rsa /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/
#如果沒有目錄則自己建立這個目錄
3、server2.3.4 執行
ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
六、安裝
MHA Manager可以單獨部署在一臺獨立的機器上管理多個 master-slave 叢集,也可以部署在一臺 slave 節點上。
1,安裝MHA Node(資料節點)
yum install -y mha4mysql-node-0.56-0.el6.noarch.rpm
2、依賴性
perl-Config-Tiny-2.12-7.1.el6.noarch.rpm
perl-Email-Date-Format-1.002-5.el6.noarch.rpm
perl-Log-Dispatch-2.27-1.el6.noarch.rpm
perl-Mail-Sender-0.8.16-3.el6.noarch.rpm
perl-Mail-Sendmail-0.79-12.el6.noarch.rpm
perl-MailTools-2.04-4.el6.noarch.rpm
perl-MIME-Lite-3.027-2.el6.noarch.rpm
perl-MIME-Lite-HTML-1.23-2.el6.noarch.rpm
perl-MIME-Types-1.28-2.el6.noarch.rpm
perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm
perl-Params-Validate-0.92-3.el6.x86_64.rpm
perl-TimeDate-1.16-13.el6.noarch.rpm
3、安裝MHAMHA Manager(管理節點)
yum install -y mha4mysql-manager-0.56-0.el6.noarch.rpm
七、配置 MHA
1、配置
建立配置檔案及其目錄:
mkdir /etc/mha
vim /etc/mha/mha.conf
[server default]
manager_workdir=/usr/local/mha
#設定manager的工作目錄
manager_log=/usr/local/mha/mha.log
#設定manager的日誌
master_binlog_dir=/var/lib/mysql
#設定master 儲存binlog的位置,以便MHA可以找到master的日誌,我這裡的也就是mysql的資料目錄
user=root
#設定監控使用者root,這個使用者在mysql裡存在
password=GAOyu123...
#設定mysql中監控使用者的那個密碼
ping_interval=1
#設定監控主庫,傳送ping包的時間間隔,預設是3秒,嘗試三次沒有迴應的時候自動進行railover
remote_workdir=/tmp
#設定遠端mysql在發生切換時binlog的儲存位置
repl_user=repl
#設定同步使用者mha
repl_password=GAOyu123...
#設定mha的密碼
ssh_user=root
#設定ssh的登入使用者名稱
[server2]
hostname=172.25.12.2
port=3306
[server3]
hostname=172.25.12.3
port=3306
candidate_master=1
#設定為候選master,如果設定該引數以後,發生主從切換以後將會將此從庫提升為主庫,即使這個主庫不是叢集中事件最新的slave
check_repl_delay=0
#預設情況下如果一個slave落後master 100M的relay logs的話,MHA將不會選擇該slave作為一個新的master,因為對於這個slave的恢復需要花費很長時間,通過設定check_repl_delay=0,MHA觸發切換在選擇一個新的master的時候將會忽略複製延時,這個引數對於設定了candidate_master=1的主機非常有用,因為這個候選主在切換的過程中一定是新的master
[server4]
hostname=172.25.12.4
port=3306
#no_master=1 #一定不會是master
測試
(1)master(server2) down 掉
/etc/init.d/mysqld stop
(2)在 server3檢視slave狀態
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.25.12.3
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
相關推薦
MHA實現Mysql半同步高可用
一、MHA介紹 1、MHA兩部分組成 MHA 由兩部分組成: MHA Manager(管理節點)和 MHA Node(資料節點)。 MHA Manager可以單獨部署在一臺獨立的機器上管理多個 master-slave 叢集,也可以部署在一臺 slave 節點上。 2、
MySQL叢集架構篇:MHA+MySQL-PROXY+LVS實現MySQL叢集架構高可用/高效能-技術流ken
MHA簡介 MHA可以自動化實現主伺服器故障轉移,這樣就可以快速將從伺服器晉級為主伺服器(通常在10-30s),而不影響複製的一致性,不需要花錢買更多的新伺服器,不會有效能損耗,容易安裝,不必更改現有的部署環境,適用於任何儲存引擎。 MHA提供線上主伺服器切換,改變先正執行的主伺服器到另外一臺上,這個過程只
MySQL集群(四)之keepalived實現mysql雙主高可用
健康檢查 重連 lose 搶占 pro 資源 交換機 state nec 前面大家介紹了主從、主主復制以及他們的中間件mysql-proxy的使用,這一篇給大家介紹的是keepalived的搭建與使用! 一、keepalived簡介 1.1、keepalived介紹
實現MySQL半同步架構
MySQL半同步架構默認情況下,MySQL的復制功能是異步的,異步復制可以提 供最佳的性能,主庫把binlog日誌發送給從庫即結束,並不驗 證從庫是否接收完畢。這意味著當主服務器或從服務器端發生 故障時,有可能從服務器沒有接收到主服務器發送過來的 binlog日誌,這就會造成主服務器和從服務器的數據不一致,
keepalived+haproxy實現mysql負載均衡高可用
環境準備 作業系統CentOS 6.9 Haproxy+keepalived(h1) 192.168.20.135 Haproxy+keepalived(h2) 192.168.20.136
mysql雙機熱備以及使用keepalived實現mysql雙主高可用
根據蒐集的資料安裝測試並在安裝測試過程中整理的文件,部分參考文件在相應位置有標記。如有不足希望不吝賜教。 mysql雙機熱備的方式有兩種: 主-從伺服器雙機熱備 主-主伺服器雙機熱備 下文以主-主伺服器雙機熱備為例,主-從配置類似。 兩臺centos7,ip分別為:
MySQL5.7 利用keepalived來實現mysql雙主高可用方案的詳細過程
伺服器準備Keepalived:192.168.13.15Keepalived:192.168.13.16Mysql-m1: 192.168.13.15Mysql-m2: 192.168.13.161,在m1、m2上準備mysql5.7環境2,在m1上部署keepalived
keepalived+MHA實現mysql主從高可用集群
keepalived mha mysql主從集群 高可用 本節索引原理分析實驗環境準備主從復制集群安裝MHA包初始化MHA配置Keepalived故障出現故障恢復總結 一 原理分析1 MHA簡介:MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟
MySQL(三):MHA實現MySQL主從架構中主服務器的高可用,zabbix完成manager重啟
code parallel 可以登錄 authorize sudo word systemctl 命令 nag MHA(Master High Availability)是目前在MySQL高可用方面相對成熟的一個解決方案,MHA在監控到master節點故障時,會提升其中擁有
構建MHA實現MySQL高可用集群架構
MySQL數據庫實現故障自動轉移一、MHA簡介 MHA(Master HighAvailability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在
MHA實現mysql的高可用叢集
前言: 在生產環境中,資料庫對於一個企業是至關重要的,因此我們應該做到生產中的mysql高可用,從而實現假如有一臺資料庫宕機,別的機器會自動代替宕機的伺服器的工作,從而實現資料庫的快速切換,避免單點故障,從而保證業務的正常執行。MHA就可以
使用MHA實現mysql高可用性(centos7.5+mysql5.7.23+MHA0.58)
一、MHA概述 1、MHA MHA(Master High Availability)事由日本人DeNA開發的一套MySQL高可用性環境下故障切換和主從提升的軟體,目前在MySQL高可用方面是一
MHA 實現 Mysql 高可用配置
一、專案環境: server1 : mha-manager server2 : master server3,4 : slave 首先,在mysql組的三臺伺服器上做如下配置: /etc/init.d/mysqld s
MHA實現mysql高可用性
secondary 三臺 info 5.5 nag use tps 配置參數 check 一、 MHA:Master High Availability 對主節點進行監控,可實現自動故障轉移至其它從節點;通過提升某一從節點為新的主節點,基於主從復制實現,還需要客戶端
【MySQL】【高可用】基於MHA架構的MySQL高可用故障自動切換架構
bin candidate nlog repo sage $1 內容 data from 基於MHA架構的MySQL高可用切換架構 環境: ? CentOS7+MySQL 5.7 + GTID 業務系統:mainBusiness ? nod
Mysql DBA 高級運維學習筆記-Heartbeat實現web服務的高可用案例及維護要點
heartbeat8.Heartbeat實現web服務的高可用案例 8.1部署準備 通過web服務高可用案例來熟悉heatbeat軟件的使用,用上面的兩臺服務器機器名分別為heartbeat-1-130和heartbeat-1-129 8.2 安裝配置http服務(兩臺機器都要安裝) yum install
mysql運維管理-Heartbeat實現web服務的高可用案例及維護要點
server exp lec disabled urn tool distrib model recover 1.DRBD介紹 Distributed Replicated Block Device (DRBD)是基於塊設備在不同的高可用服務器對之間同步和鏡像數據的軟件,通
MHA +maxscale 實現讀寫分離高可用架構實戰
MHA 相關原理 http://mp.blog.csdn.net/postedit/79183726 MHA http://mp.blog.csdn.net/postedit/79183743 最佳實戰 MySQL讀寫分離原理相關知識體系 http://blog.cs
LVS+KEEPALIVED+MYSQL單點寫入讀負載均衡主主同步高可用方案
LVS+KEEPALIVED+MYSQL 單點寫入讀負載均衡主主同步高可用方案安裝教程 一、 安裝環境 Ø 軟體版本 CENTOS 6.5 KEEPALIVED 1.2.12 | 下載 LVS 1.2.6 | 下載 MYSQL 5.6.17(社群版) |
keepalived 實現web應用的高可用
高可用 keepalived 項目需求:公司需要我做privacyIDEA認證服務器的高可用,我的思路是在兩臺服務器上搭兩套應用程序,後端存儲公用一個mysql數據庫,沒有mysql數據庫可以主備的形式,然後再做一下數據庫的異地備份。基本思路就是這樣的。我主要介紹一下使用keepalived實現高可用