本文共 3449 字,大约阅读时间需要 11 分钟。
之前搭建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-MySQL2.安装 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 install2.安装 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 goodmake
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 done3.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.cnf5./etc/mha.cnf
[server default]
manager_log=/var/log/mha.log manager_workdir=/var/lib/mhauser=root
password=steve123456repl_user=repluser
repl_password=steve123456ssh_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.cnf8.检查 mysql 主从配置
masterha_check_repl --conf=/etc/mha.cnf9.排除所有错误,添加 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会不会漂移到指定的新主上,如果可以,表示成功,否则,慢慢排错吧。
转载地址:http://wvcqj.baihongyu.com/