美文网首页
MySQL基于MHA高可用部署篇(Binlog模式)

MySQL基于MHA高可用部署篇(Binlog模式)

作者: 张伟科 | 来源:发表于2018-04-01 08:45 被阅读4次

一、部署MHA前提要求(必须满足)

1.1 SSH公钥认证

基本上MHA manager,MNA node,以及二次检测的节点,都需要互相信任。如果slave比较多,实例比较多,最好提高下 /etc/ssh/sshd_config MaxStartups 的值(默认是10)。

1.2 操作系统

仅在Linux上测试过。

1.3 单写master和多slave或者只读master

打从一开始,MHA就是为了解决数据一致性而出生,所以,最好是多个slave。如果你只有一个slave,根本就碰不到数据一致性问题,也就不需要mha了

如果是一个slave,用半同步复制也能解决。从mha 0.52开始,就支持多master的复制架构了,下面列举了多master环境下注意点:

多master,但是只允许单点写入。

默认情况下,只支持2层复制架构。

1.4 三层或者多层复制环境

默认情况下,MHA是不支持3层或多层复制架构的(Master1 -> Master2 -> Slave3)。MHA可以恢复Master2,但是不能恢复Slave3,因为Master2,Slave3有不同的master。为了让MHA支持以上架构,可以参考如下配置:

在配置文件中,只配置两层(master1 and master2)。

使用 “multi_tier_slave=1″ 参数,然后设置所有hosts。

1.5 MySQL版本必须是5.0或者高于5.0

MySQL版本必须大于等于5.0。

尽量使用高版本的MySQL。

1.6 使用mysqlbinlog 5.1+ 支持MySQL5.1+

MHA使用mysqlbinlog来应用日志到目标slave上的。

如果MySQL master设置的是row格式,那么MySQL必须是大于等于5.1版本,因为5.0不支持row。

mysqlbinlog版本可以这样被检测,mysqlbinlog –version。

如果你使用的是MySQL5.1,那么mysqlbinlog必须大于等于3.3。

如果mysqlbinlog的版本是3.2,而mysql的版本是5.1,那么mha manager会报错,且停止monitoring。

1.7 log-bin必须在候选master上开启

如果当前slave没有设置log-bin,那么很显然它不能成为提升为new master。

如果没有任何机器设置了log-bin,那么mha会报错且停止failover。

1.8 binlog,relay-log主从环境必须全部一致

对于主从两边的配置最好一模一样(不需要配置中设置read_only),主要是主库要有从库相关的复制参数配置。

复制过滤规则(binlog-do-db, replicate-ignore-db等等)必须全部一致,不然检查到会退出。

1.9 主库复制用户和业务用户必须在候选master上要存在

切换完成后,所有业务连接到新的主库,所以旧的主库用到的业务账号也必须在新主库有一份,不然就有大问题。

切换完成后,所有slave都必须执行change master命令。在new master上复制用户必须有(REPLICATEION SLAVE权限)。

2.10 使用purge_relay_logs来定期删除relay logs(两个节点则不必关心此条)

默认情况下,如果SQL线程执行完relay-log,relay logs就会被自动删除。但是这些relay-logs也许还会用来恢复其他的slave,所以你需要关闭自动删除relay-logs的purge线程,然后自己阶段性的来删除。如果是你自己来删的话,必须考虑复制延迟问题,最好让slave删除relay log不要在同一时间点,假如需要恢复,那么这个时间点所有relay logs都被删除了就不好了。

2.11 不要在SBR的环境中使用load data infile

不管是SBR,还是RBR,最好不要使用load data。

二、部署MHA

2.1 环境准备

接下来部署MHA,具体的搭建环境如下(所有操作系统均为centos 7.3 64bit,不是必须,mysql02和mysql03是mysql01的从,复制环境搭建后面会简单演示,但是相关的安全复制不会详细说明:

其中master对外提供写服务,备选master(实际的slave,主机名mysql02)提供读服务,slave也提供相关的读服务,一旦master宕机,将会把备选master提升为新的master,slave指向新的master。

关闭各个主机iptables加selinux

$ systemctl stop firewalld

$ setenforce 0

各个主机配置hosts

$ cat /etc/hosts

192.168.10.94 mha

192.168.10.91 mysql01

192.168.10.92 mysql02

192.168.10.93 mysql03

各个主机配置SSH互信,基本上MHA manager,MHA node,以及二次检测的节点,都需要互相信任。如下示例:

$ ssh-keygen

$ ssh-copy-id root@10.99.73.7

$ ssh-copy-id root@10.99.73.9

$ ssh-copy-id root@10.99.73.10

$ ssh-copy-id root@10.99.73.11

相关文章

网友评论

      本文标题:MySQL基于MHA高可用部署篇(Binlog模式)

      本文链接:https://www.haomeiwen.com/subject/pwwuaxtx.html