manager:192.168.2.254
master:192.168.2.252
slave:192.168.2.253
VIP:192.168.2.144
操作系统:centos6.5 64位
1.配置ssh互信(root用户 每台都执行)
# ssh-keygen
# ssh-copy-id 192.168.2.252
# ssh-copy-id 192.168.2.253
# ssh-copy-id 192.168.2.254
2.在manager节点上安装mha
# yum install epel-release
# yum install perl-DBD-MySQL
# yum install perl-Config-Tiny
# yum install perl-Log-Dispatch
# yum install perl-Parallel-ForkManager
# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
3.在node节点上装Mha(也就是master和slave上)
# yum install epel-release
# yum install perl-DBD-MySQL
4.安装配置mysql半同步插件(master和slave都操作)
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
[mysqld]
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_slave_enabled=1
relay_log_purge=0
skip-name-resolve
server-id = 1 //只是这个参数不一样
log-bin=mysql-bin
read_only=1
slave-skip-errors=1396
5.在master和slave里搭建主从mysql环境
6.配置管理的MHA
[server default]
manager_workdir=/root/masterha
manager_log=/root/masterha/manager.log
user=root
password=redhat
ssh_user=root
repl_user=webslave
repl_password=redhat
ping_interval=1
shutdown_script=""
master_ip_online_change_script=""
report_script=""
[server1]
hostname=192.168.2.252
master_binlog_dir=/usr/local/mysql/data
candidate_master=1
[server2]
hostname=192.168.2.253
master_binlog_dir=/usr/local/mysql/data
candidate_master=1
7.MHA维护
ln -s /usr/local/mysql/bin/* /usr/bin/
masterha_check_repl --conf=/root/masterha/app1.cnf
masterha_check_ssh --conf=/root/masterha/app1.cnf
8.MHA启动
nohup masterha_manager --conf=/root/masterha/app1.cnf > /tmp/mha_manager.log &1 &
9.在主从机器上安装keepalived并配置
yum install keepalived
master keepalived配置:
global_defs {
router_id MySQL-ha
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 90
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.144
}
}
virtual_server 192.168.2.144 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.2.252 3306 {
weight 1
notify_down /etc/keepalived/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
connect_port 3306
}
}
}
SLAVE keepalived 配置: global_defs { router_id MySQL-ha } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 90 priority 80 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.2.144 } } virtual_server 192.168.2.144 3306 { delay_loop 6 lb_algo wrr lb_kind DR nat_mask 255.255.255.0 persistence_timeout 50 protocol TCP real_server 192.168.2.253 3306 { weight 1 notify_down /etc/keepalived/mysql.sh TCP_CHECK { connect_timeout 10 nb_get_retry 3 connect_port 3306 } } } vi mysql.sh #!/bin/bash pkill keepalived