mysql 数据库DBA课程09_01 MHA

1、MHA 高可用 ****
准备三台Mysql服务器,配置好主从
dba02----master----192.168.189.133  server_id=8
dba03----slave-----192.168.189.134  server_id=9
dba04----slave-----192.168.189.135  server_id=10
上传MHA软件包,到/root 并解压
wget http://106.12.88.74/softdown/centos7/08_mha/MHA-2019-6.28.zip
1.1、搭建体验
(1)、配置关键程序软连接(3台mysql上都要操作)
ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql /usr/bin/mysql

(2)、配置互信
dba02上面操作:
rm -rf /root/.ssh
ssh-keygen
cd /root/.ssh
mv id_rsq.pub authorized_keys
scp -r /root/.ssh 192.168.189.134:/root
scp -r /root/.ssh 192.168.189.135:/root
各节点验证:命令逐条执行
db02、dba03、dba04 3台服务器都操作
ssh 192.168.189.133 date
ssh 192.168.189.134 date
ssh 192.168.189.135 date
(3)、安装软件包:(所有节点上操作yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
(4)、在dba02 主库上创建 mha需要的用户
grant all privileges on *.* to mha@'192.168.%' identified by 'mha789';

(5)、Manager安装(管理节点安装在dba04,)
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

(6)、准备MHA管理节点的配置文件和目录(dba04)
    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=mha789
ping_interval=2
repl_password=repl520
repl_user=repl
ssh_user=root
[server1]
hostname=192.168.189.133
port=3306
[server2]
hostname=192.168.189.134
port=3306
[server3]
hostname=192.168.189.135
port=3306
EOF
(7)、进行状态检查(dba04---192.168.189.135 MHA_manager)
互信检查
masterha_check_ssh --conf=/etc/mha/app1.cnf


同步数据检查:
masterha_check_repl --conf=/etc/mha/app1.cnf


(8)、开启MHA (dba04---192.168.189.135 MHA_manager)
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 &

停止MHA:masterha_stop --conf=/etc/mha/app1.cnf
(9) 查看MHA状态(dba04---192.168.189.135 MHA_manager)
masterha_check_status --conf=/etc/mha/app1.cnf


+++++++++++++++++++++++++++++
2.1 节点规划

数据库节点,必须至少是1主2从独立数据库实例
MHA 管理节点,最好是独立一台机器 也可以放在其中一个节点上,本实例是manager端: dba04
node端: dba02,dba03,dba04
2.2 MHA软件的构成(perl语言开发)
Manager工具包主要包括以下几个工具:
mha4mysql-manager-0.56-0.el6.noarch.rpm ##只安装在管理节点上,可以单独一台

安装了perl的支持库就会有下面这些命令:


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线程)

3. MHA 配置过程细节说明
3.1 软连接,必须要做。
ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql /usr/bin/mysql
MHA去调用这两个命令的时候,直接去找的/usr/bin/ 下面

3.2 互信
dba02:192.168.189.133
rm -rf /root/.ssh
ssh-keygen
cd /root/.ssh
mv id_rsa.pub authorized_keys
scp -r /root/.ssh 192.168.189.134:/root
scp -r /root/.ssh 192.168.189.135:/root

各节点验证的目地,把第一次输入yes 给过滤掉。
db02、dba03、dba04 3台服务器都操作
ssh 192.168.189.133 date
ssh 192.168.189.134 date
ssh 192.168.189.135 date
3.3 安装软件包(所有节点)
yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
3.4 在dba02主库中创建mha需要的用户
grant all privileges on *.* to mha@'192.168.%' identified by 'mha789';

3.5 Manager软件安装(dba04_192.168.189.135),尽量装在最后一个节点。也可以单独一台服务器
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

3.6 配置文件准备(dba04_192.168.189.135)
-- 创建配置文件目录
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=mha789
ping_interval=2 ##探测心跳的一个间隔时间,默认3次,3次都不能和主库通信的话,就会切换。
repl_password=repl520
repl_user=repl
ssh_user=root
[server1]
hostname=192.168.189.133
port=3306
[server2]
hostname=192.168.189.134
port=3306
[server3]
hostname=192.168.189.135
port=3306
EOF
3.7 状态检查(dba04_192.168.189.135)
masterha_check_ssh --conf=/etc/mha/app1.cnf
masterha_check_repl --conf=/etc/mha/app1.cnf
3.8 开启MHA(dba04_192.168.189.135):
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 &

--remove_dead_master_conf
:自动 把故障节点,从配置文件中去掉。
--ignore_last_failover
 : 忽略最后一次切换,master 有一个保护机制,两次切换时间不能超过多少小时