搭建mysql高可用架構mha
mha簡介
mha的主要目的是自動化master故障轉移和slave自動提升爲master,在較短時間(一般爲10-30秒)的停機時間,可以避免複製和一致性問題,不用花錢購買新的服務器,沒有性能上的損失,不復雜的(容易安裝),並且不用改變現有的部署。
mha還提供了一個在線預定master開關的方式:改變當前正在運行的master安全的轉移到到新的mater,在幾秒鐘內的停機時間(0.5-2秒)(只支持塊寫入操作)。
mha提供了以下功能,並且可以滿足許多部署的要求,如高可用性,數據完整性,不中斷master的維護
測試環境:192.168.1.4(mhamanager+mhamaster(mysql))
192.168.1.5(mhanodeslave1)
192.168.1.6(mhanodeslave2)
1.每個節點需要ssh互通
ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
2.安裝mhanode每個節點都需安裝
注:本機雙光盤yum源+epel源
wget http://mirrors.hust.edu.cn/epel//6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/rpm-gpg-key-epel-6
yum clean all
yum list(會列出epel源)
yum -y install mysql*
yum -y install perl-dbd-mysql ncftp
yum -y install mha4mysql-node-0.53-0.el6.noarch.rpm
3.192.168.1.4 安裝 配置mhamager
yum -y install mha4mysql-manager-0.53-0.el6.noarch.rpm
mkdir /etc/masterha
mkdir -p /masterha/app1
vi /etc/masterha/app1.cnf
[server default]
user=mhauser
#mha管理用戶需添載訪問mysql權限
password=mhauser123
#mha用戶密碼
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
remote_workdir=/masterha/app1
ssh_user=root
#ssh用戶
repl_user=rep
#主從同步用戶
repl_password=rep123
#需添載訪問mysql權限
#主從用戶密碼
ping_interval=1
[server1]
hostname=192.168.1.4
ssh_port=22
master_binlog_dir=/var/lib/mysql
#二進制日誌位置
[server2]
hostname=192.168.1.5
ssh_port=22
master_binlog_dir=/var/lib/mysql
candidate_master=1
#備份mysql
[server3]
hostname=192.168.1.6
ssh_port=22
master_binlog_dir=/var/lib/mysql
驗證ssh 信任登錄是否成功
ln -s /usr/lib/perl5/vendor_perl/mha /usr/lib64/perl5/vendor_perl/mha
masterha_check_ssh --conf=/etc/masterha/app1.cnf
4.在每個節點上部署mysql 及主從同步
修改配置文件
server-id=1
#master id=1 slave1=2 slave2=3
log-bin=mysql-bin
設置的複製權限帳號
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'rep'@'%' IDENTIFIED BY 'rep123';
FLUSH PRIVILEGES;
master_host='192.168.1.4',
master_port=3306,
master_user='rep',
master_password='rep123',
master_log_file='mysql-bin.000001',
#不能隨便複製 此處設置 來自在master點執行show master status;
master_log_pos=98;
slave start;
show slave status\G;
#建立mha使用的帳號並設置權限
grant all on *.* to mhauser@'%' identified by 'mhauser123';
grant all on *.* to mhauser@'%' identified by 'mhauser123';
grant all on *.* to mhauser@'%' identified by 'mhauser123';
5
啓動MHA manager
nohup masterha_manager --conf=/etc/masterha/app1.cnf > /tmp/mha_manager.log 2>&1 &
驗證MHA狀態
masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:5605) is running(0:PING_OK), master:192.168.1.4
關閉MHA manager
ps auxf|grep masterha_manager|grep -v grep|awk '{print $2}'|xargs kill
測試master宕機後是否自動切換
手動停止 mastre節點
service mysqld stop