云计算之MySQL数据库MHA集群搭建应用

之前搭建MHA集群架构,此处稍作整理,之后会将一些工作中遇到的小坑与对应的解决方案分享给大家。

服务器导图

主机名 ip地址 功能
master15 192.168.1.15
master16 192.168.1.16 主备
master17 192.168.1.17 主备
master18 192.168.1.18
manager 192.168.1.20 MHA管理机

一、MySQL主从半同步配置

1.主配置

查看 mysql 插件
show plugins;

安装半同步插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';
开启半同步
set global rpl_semi_sync_master_enabled=1;
等待超时时间
设置此参数值(ms),为了防止半同步复制在没有收到确认的情况下发生堵塞,如果Master在超时

之前没有收到任何确认,将恢复到正常的异步复制,并继续执行没有半同步的复制操作。
set global rpl_semi_sync_master_timeout=1000;

查看状态
show global variables like '%rpl_semi%';
show global status like '%rpl_semi%';

2.主备配置

查看 mysql 插件
show plugins;

安装半同步插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
开启半同步
set global rpl_semi_sync_slave_enabled=1;

查看状态
show global variables like '%rpl_semi%';
重启 IO 线程
stop  slave io_thread;
start slave io_thread;

3.在配置文件中修改,永久生效

vim /etc/my.cnf

plugin-load     = "rpl_semi_sync_master=semisync_master.so"
plugin-load     = "rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled  = 1
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 3000

二、安装MHA node节点

1.安装 mha node 节点包
yum install gcc pcre-devel pkgconfig autoconf automake perl-ExtUtils-MakeMaker perl-CPAN perl-DBI perl-DBD-MySQL

2.安装 mha4mysql-node
perl Makefile.PL 
make
make install

三、安装MHA manager节点

1.安装 mha node 节点包
yum install -y gcc pcre-devel pkgconfig autoconf automake perl-ExtUtils-MakeMaker perl-CPAN perl-DBI perl-DBD-MySQL

安装 mha4mysql-node
perl Makefile.PL 
make
make install

2.安装 mha manager 节点
安装依赖软件包
yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

安装 mha 管理节点
perl Makefile.PL 

[Core Features]
- DBI                   ...loaded. (1.627)
- DBD::mysql            ...loaded. (4.023)
- Time::HiRes           ...loaded. (1.9725)
- Config::Tiny          ...loaded. (2.14)
- Log::Dispatch         ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst        ...loaded. (0.56)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good

make
make install

三、MHA条件配置

mha 是依靠 ssh 远程配置管理 mysql 服务器的,所以要求管理节点机器到所有 mysql

MySQL集群之间服务器也可以互相无密登录

1.生成秘钥和公钥

ssh-keygen -t rsa -b 2048 -N '' -f id_rsa
for i in mysql{15..18};do
    ssh-copy-id -i id_rsa.pub ${i}
done
2.把私钥 id_rsa 拷贝给所有 mysql 主机
for i in mysql{15..18};do
    scp id_rsa ${i}:.ssh/id_rsa
done

3.mha 切换 vip 是靠脚本实现,vim 编辑脚本 master_ip_failover 设置 vip

my $vip = '192.168.1.10/24';  # Virtual IP

cp master_ip_failover  /usr/local/bin/

chmod 755 /usr/local/bin/master_ip_failover

4.添加 默认配置文件 /etc/masterha_default.cnf 和 /etc/mha.cnf 配置文件
touch /etc/masterha_default.cnf

5./etc/mha.cnf

[server default]
manager_log=/var/log/mha.log
manager_workdir=/var/lib/mha

user=root
password=steve123456

repl_user=repluser
repl_password=steve123456

ssh_user=root

ping_interval=1
remote_workdir=/var/lib/mha
master_ip_failover_script=/usr/local/bin/master_ip_failover

[server15]
candidate_master=1
hostname=mysql15

[server16]
candidate_master=1
hostname=mysql16

[server17]
hostname=mysql17
candidate_master=1

[server18]
hostname=mysql18
no_master=1
6.在当前的 master 上手工绑定 vip 执行检查测试

ifconfig eth0:1 192.168.1.10/24

7.检查 ssh 免密码登录
masterha_check_ssh --conf=/etc/mha.cnf

8.检查 mysql 主从配置
masterha_check_repl --conf=/etc/mha.cnf

9.排除所有错误,添加 root 用户远程登录权限
create user 'root'@'%' IDENTIFIED BY 'steve123456';
grant ALL ON *.* to root@'%'

10.添加参数 relay_log_purge=0

四、MHA启动检验

启动 mha
masterha_manager --conf=/etc/mha.cnf --ignore_last_failover

验证测试
将当前主停掉,看看vip会不会漂移到指定的新主上,如果可以,表示成功,否则,慢慢排错吧。

猜你喜欢

转载自blog.csdn.net/mx_steve/article/details/86527355