安装MySQL

搭建MySQL主从

要实现MHA高可用,必须修改MySQL从库的配置文件,不允许从库将relay log删除,否则切换主从后无法保证数据完整性

  1. vim /etc/my.cnf
  2. [mysqld]
  3. #禁用自动删除relay log 永久生效
  4. relay_log_purge = 0

MHA

1.安装

# 准备好软件包
mha4mysql-manager-0.56-0.el6.noarch.rpm        #管理节点包
mha4mysql-node-0.56-0.el6.noarch.rpm            #node节点包

# 安装(要安装master包必须先安装node,node是master的依赖)
yum localinstall -y mha4mysql-node-0.56-0.el6.noarch.rpm            #所有节点操作
yum localinstall -y mha4mysql-manager-0.56-0.el6.noarch.rpm        #管理节点操作

# 在主库中创建一个mha的管理账户(会自动同步到所有账户)
grant all on *.* to mha@'%' identified by 'mha';

# 做mysql和mysqlbinlog的软链接(所有机器)
ln -s /application/mysql/bin/mysql /usr/local/mysql
ln -s /application/mysql/bin/mysqlbinlog

# 所有机器互相做免密(所有机器上都操作一次)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.0.0.51
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.0.0.52
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.0.0.53
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.0.0.54

# 创建mha配置文件存放目录
mkdir -p /etc/mha/app1

2.配置文件

vim /etc/mha/app1.cnf

[server default]
# MHA日志文件
manager_log=/etc/mha/app1/manager.log
# MHA的工作目录
manager_workdir=/etc/mha/app1
# MySQL的binlog存放目录
master_binlog_dir=/application/mysql/data
# MHA的管理用户
user=mha
# MHA的管理用户的密码
password=mha
# MHA每间隔N秒会向主库发送一次select ping检测心跳,默认3s,此处设置2s
ping_interval=2
# MHA主从复制用户的密码
repl_password=123
# MHA主从复制的用户
repl_user=rep
# SSH免密连接的用户
ssh_user=root
# SSH免密连接的端口
ssh_port=22

[server1]
# 数据库的ip
hostname=10.0.0.51
# 数据库的端口
port=3306

[server2]
#candidate_master=1
#check_repl_delay=0
hostname=10.0.0.52
port=3306

[server3]
hostname=10.0.0.53
port=3306

[server4]
hostname=10.0.0.54
port=3306

创建一份配置文件的副本

cp /etc/mha/app1.cnf /etc/mha/app1.cnf.ori

3.使用

#检查是否就绪
masterha_check_ssh --conf=/etc/mha/app1.cnf                #检测SSH是否连通
masterha_check_repl --conf=/etc/mha/app1.cnf            #检测主从复制

#启动MHA
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/app1/manager.log 2>&1 &

#检查MHA状态
masterha_check_status --conf=/etc/mha/app1.cnf