MHA 高可用架构

1.1 节点规划
manager端: db03
node端: db01,db02,db03
1主2从,独立数据库实例

1.2 MHA软件的构成(perl语言)
Manager工具包主要包括以下几个工具:
mha4mysql-manager-0.56-0.el6.noarch.rpm

masterha_manger --------------------- 启动MHA
masterha_check_ssh ----------------- 检查MHA的SSH配置状况
masterha_check_repl ------------------检查MySQL复制状况
masterha_master_monitor ------------检测master是否宕机
masterha_check_status ---------------检测当前MHA运行状态
masterha_master_switch -------------控制故障转移(自动或者手动)
masterha_conf_host -------------------添加或删除配置的server信息

Node工具包主要包括以下几个工具:
mha4mysql-node-0.56-0.el6.noarch.rpm
这些工具通常由MHA Manager的脚本触发,无需人为操作
save_binary_logs -----------------------保存和复制master的二进制日志
apply_diff_relay_logs ------------------识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs -----------------------清除中继日志(不会阻塞SQL线程)

2.MHA 配置过程细节说明
2.1 软连接

ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql /usr/bin/mysql
ls -l /usr/bin/mysql
ls -l /usr/bin/mysqlbinlog

2.2 互信
db01:

ssh-keygen
cd /root/.ssh
mv id_rsa.pub authorized_keys
scp -r /root/.ssh 10.0.0.52:/root
scp -r /root/.ssh 10.0.0.53:/root

各节点验证
db01:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db02:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date
db03:
ssh 10.0.0.51 date
ssh 10.0.0.52 date
ssh 10.0.0.53 date

2.3 安装软件包(所有节点)
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

2.4 在db01主库中创建mha需要的用户
grant all privileges on *. * to mha@‘10.0.0.%’ identified by ‘mha’;

2.5 Manager软件安装(db03)
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

2.6 配置文件准备(db03)
----- 创建配置文件目录
mkdir -p /etc/mha
----- 创建日志目录
mkdir -p /var/log/mha/app1
----- 编辑mha配置文件
cat > /etc/mha/app1.cnf <<EOF
[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/binlog
user=mha
password=mha
ping_interval=2 ---------------- 从库ping主库的秒数,这里为2。一共ping 3次
repl_password=123 -----------主从复制用户密码
repl_user=repl ------------------主从复制用户名
ssh_user=root
[server1]
hostname=10.0.0.51
port=3306
[server2]
hostname=10.0.0.52
port=3306
[server3]
hostname=10.0.0.53
port=3306
EOF

2.7 状态检查(db03)
masterha_check_ssh --conf=/etc/mha/app1.cnf
masterha_check_repl --conf=/etc/mha/app1.cnf

2.8 开启MHA(db03):
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

3.MHA FailOver过程详解
3.1 什么是Failover?
故障转移.
主库宕机一直到业务恢复正常的处理过程(自动)
3.2 Failover让你实现怎么做?
(1) 快速监控到主库宕机
(2) 选择新主
(3) 数据补偿
(4) 解除从库身份
(5) 剩余从库和新主库构建主从关系
(6) 应用透明
(7) 故障节点自愈(待开发…)
(8) 故障提醒

3.3 MHA的Failover如何实现?
从启动—>主故障—>主向从转移—>业务恢复
(1) MHA通过masterha_manger脚本启动MHA的功能.
(2) 在manager启动之前,会自动检查ssh互信(masterha_check_ssh)和主从状态(masterha_check_repl)
(3) MHA-manager 通过 masterha_master_monitor脚本(每隔ping_interval秒)
(4) masterha_master_monitor探测主库3次无心跳之后,就认为主库宕机了.
(5) 进行选主过程
算法一:
读取配置文件中是否有强制选主的参数?
candidate_master=1
check_repl_delay=0
算法二:
自动判断所有从库的日志量.将最接近主库数据的从库作为新主.
算法三:
按照配置文件先后顺序的进行选新主.

猜你喜欢

转载自blog.csdn.net/qq_44788449/article/details/107024020