Mysql 双主的读写同步配置

10 min read

MySQL双主读写同步的配置步骤如下:

  1. 首先需要在两个MySQL服务器上安装MHA(MySQL Master High Availability)工具,该工具可以用于管理主从复制和双主同步等高可用性方案。

  2. 配置MHA的配置文件,包括主从同步的账号密码、监控脚本的路径等。配置完成后,在主服务器上启动MHA Manager程序。

  3. 在MHA Manager服务器上执行以下命令,将MySQL服务器添加到MHA配置中:

    $ masterha_manager --conf="/etc/app1.cnf" --remove_dead_master_conf --ignore_last_failover
    
  4. 设置主服务器和备份服务器的ID,可以通过以下命令查看服务器ID:

    $ SHOW VARIABLES LIKE 'server_id';
    

    然后设置两个服务器不同的server_id。

  5. 在两个MySQL服务器上设置双向复制,使用以下命令:

    $ CHANGE MASTER TO
    MASTER_HOST='otherMaster.example.com',
    MASTER_PORT=3306,
    MASTER_USER='repl',
    MASTER_PASSWORD='password',
    MASTER_AUTO_POSITION=1 FOR CHANNEL 'group_replication';
    
  6. 在每个MySQL服务器上启用Group Replication插件,这可以通过修改my.cnf文件中的配置项来完成。下面是一个示例配置:

    [mysqld]
    plugin-load-add=group_replication.so
    group-replication=ON
    
  7. 最后,在MHA的配置文件中指定每个服务器的主(master)和备份(slave)角色,以及监视器的和切换时运行的脚本,如下所示:

    [server default]
    user=mha
    password=password
    ssh_user=root
    recovery_user=mha_recovery
    manager_log=/var/log/mha/mha.log
    remote_workdir=/tmp
    ignore_last_failover=false
    
    [server1]
    hostname=server1.example.com
    port=3306
    weight=1
    ping_interval=5
    ping_type=SELECT
    repl_user=repl_slave
    repl_password=password
    binlog_dir=/var/log/mysql
    master_binlog_file=mysql-bin.000001
    master_binlog_pos=105
    candidate_master=1
    check_repl_delay=true
    
    [server2]
    hostname=server2.example.com
    port=3306
    weight=1
    ping_interval=5
    ping_type=SELECT
    repl_user=repl_slave
    repl_password=password
    binlog_dir=/var/log/mysql
    master_binlog_file=mysql-bin.000001
    master_binlog_pos=105
    candidate_master=1
    check_repl_delay=true
    
    [monitor]
    user=mha
    password=password
    # ...
    
    [client]
    user=mha
    password=password
    # ...
    
    [recovery]
    # ...
    

以上步骤完成后,MySQL双主读写同步的配置就完成了。