搭建mysql高可用架構mha

搭建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;

change master to

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';

FLUSH PRIVILEGES;

 

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

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章