博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
云计算之MySQL数据库MHA集群搭建应用
阅读量:3514 次
发布时间:2019-05-20

本文共 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-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会不会漂移到指定的新主上,如果可以,表示成功,否则,慢慢排错吧。

 

转载地址:http://wvcqj.baihongyu.com/

你可能感兴趣的文章
缓存:局部性
查看>>
mysql原理:b+树索引
查看>>
mysql原理:最左原则
查看>>
mysql原理:join标到底是什么,为什么有军规不建议超过三个
查看>>
redis缓存穿透
查看>>
redis缓存雪崩
查看>>
mysql的事务隔离
查看>>
mvc架构
查看>>
ElasticSearch(0) ES的认识
查看>>
JPA入门
查看>>
JPA关系
查看>>
4.spring注解和生命周期相关的(了解)
查看>>
3.spring 的纯注解配置
查看>>
4.Spring 整合 Junit
查看>>
安装配置 Kali Linux 笔记
查看>>
持久加密U盘安装 Kali Linux 笔记
查看>>
[ 笔 记 ] netcat 传输信息 / banner
查看>>
[ 笔 记 ] 主动信息收集_002
查看>>
[ CTF ] ssh私钥泄漏_笔记
查看>>
设计模式学习
查看>>