美文网首页
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