MySQL-MHA高可用

MHA的实现至少需要四台主机,其中一台作为master管理机,另外三台来实现主从。

  1. 环境准备
  • 准备四台主机,并规划对应的IP
  • 确保关闭每一台主机上的SELinux以及防火墙
  • 确保四台主机的时间是同步的,集群环境下,时间同步是必须的。
  • 除了以上的部分,还建议将四台主机实现基于key的验证,且确保四台主机可以互通
  • 在master上安装manager和node包,其余三台安装node包。EPEL源。 ——本次实验规划地址如下:
    master:192.168.11.106
    mainsqlsrv:192.168.11.111
    slave1:192.168.11.102
    slave2:192.168.11.104
  1. 主从实现
  • 修改主服务器的my.cnf配置文件,添加或修改一下内容
    server_id=1
    log_bin
    binlog_format=row
    skip_name_resolve=1
    必须确保二进制日志是开启的,skip_name_resolve=1用来跳过反向解析,在集群环境中也是很必要的
    然后在主服务器上创建一个用来同步的账号并赋予对应的权限。 mysql>grant replication slave on . to repluser@’192.168.11.%’ identified by ‘tspass’;
    mysql>grant all on . to usroot@’192.168.11.%’ identified by ‘centos’;

主服务器上只需要更改这些配置就足够了,重启MySQL的服务以使配置生效。

  • 修改两台从服务器的配置添加或修改以下内容
    server_id=2|3
    log_bin
    read_only=1
    relay_log_purge=0
    skip_name_resolve=1
    两台从服务器的配置大致是相同的,主要是注意server_id不能相同,且二进制日志必须开启,因为此从服务器可能会被切换为主服务器。read_only会在自动切换为主服务器之后关闭。
    之后执行change master to,如下:
    mysql>CHANGE MASTER TO
      MASTER_HOST='192.168.11.111',
      MASTER_USER='repluser',
      MASTER_PASSWORD='tspass',
      MASTER_PORT=3306,
      MASTER_LOG_FILE='mysql-bin.000001',
      MASTER_LOG_POS=256,
      MASTER_CONNECT_RETRY=10;
    然后启动并查看从服务器的状态
    start slave
    show slave status
  • 在主服务器导入数据以测试主从复制是否正常,如果没有问题,主服务器导入数据之后从服务器也会有对应的数据出现。
  1. 配置master
    之前已经安装过master包,所以这里只需要配置使用即可。配置文件默认并不存在,手动创建,一般放在/etc/mastermha/下,注意mastermha目录默认也是不存在的,创建即可。配置文件名自己定义,内容参考如下:

    [server default]
    user=usroot
    password=tspass
    manager_workdir=/data/mastermha/app1/
    manager_log=/data/mastermha/app1/manager.log
    remote_workdir=/data/mastermha/app1/
    master_binlog_dir=/data/mysql_blog
    ssh_user=root
    repl_user=repluser
    repl_password=tsroot
    ping_interval=1
    [server1]
    hostname=192.168.11.111
    candidate_master=1
    [server2]
    hostname=192.168.11.102
    candidate_master=1
    [server3]
    hostname=192.168.11.104

    其中出现了两个用户和密码的配置,其中user和password配置的是master用来登录管理数据库服务器的,集群中的主机都需要有此账号,repl_user和repl_password是主从复制用的(主从切换时可能成为主服务器的都需要有此账号),其余的配置中值得注意的就是master_binlog_dir了,如果被管理的服务器上的二进制日志不在默认路径下,则需要通过此选项来指定二进制日志的路径。然后就是服务器的地址,有多态服务器配置多个[server]字段即可,主从切换时可能为主的机器添加一条candidate_master=1即可。

  2. 启动和验证

    masterha_check_ssh --conf=/etc/mastermha/app1.cnf
    masterha_check_repl --conf=/etc/mastermha/app1.cnf
    masterha_manager --conf=/etc/mastermha/app1.cnf

    使用以上三条命令分别验证ssh是否可以正常联通,主从服务器的配置是否有误,第三条用来启动服务,当主服务器down之后会在数秒内切换到从服务器。

!! 请务必注意,此程序在前台运行,需要长时间执行以监视服务器的运行状态,所以应避免在远程管理工具中执行,或者可以通过screen之类的管理工具来解决可能产生的进程终端问题。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!