MySQL搭建Group Replicatiion

具体安装方法,请百度或Google

loose-为配置前缀,后边才是变量名。 正常情况下配置文件里参数是必须可用的,也就是必须先安装插件,后改配置文件,否则MySQL启动时会报错。加loose-前缀后,如果参数不存在,会先忽略报错,待插件安装后,会自动将对应参数设置为配置文件的值。

# group replication
binlog_checksum=NONE
transaction_write_set_extraction = XXHASH64
loose-group_replication_group_name = 'a0151174-f716-428f-a654-dd5dd4915b31'   #必须为uuid格式
loose-group_replication_start_on_boot = off
loose-group_replication_local_address = '10.52.29.7:33061' #内部端口(和MySQL对外端口不能一样)
loose-group_replication_group_seeds ='10.52.29.7:33061,10.164.158.39:33061,100.87.68.39:33061'
loose-group_replication_ip_whitelist='10.52.29.7,10.164.158.39,100.87.68.39'
loose-group_replication_bootstrap_group = off

## 多主模式
loose-group_replication_single_primary_mode=false
loose-group_replication_enforce_update_everywhere_checks=true

## 单主模式
loose-group_replication_single_primary_mode=true
loose-group_replication_enforce_update_everywhere_checks=false
  1. 修改hostname

    GR会使用hostname做master_host,所以必须:

    • 修改本机/etc/hostname,并配置全局/etc/hosts文件
    • 使用hostname命令修改内存中hostname
    • 修改后需重启MySQL(使MySQL加载更新后的hostname值,在MySQL内部hostname是只读变量)
  2. 创建复制用户

    注意:MGR通过GTID确认数据一致性,所以需要保证接入实例GTID一致,因此创建复制用户时需要设置set sql_log_bin=off

    set session sql_log_bin=off;
    grant select,replication client,replication slave on *.* to 'repl_user'@'host ip' identified by 'repl_passwd';
    set session sql_log_bin=on;
    
  3. 搭建复制关系

    change master to master_user='repl_user',master_password='repl_passwd' for channel 'group_replication_recovery';
    
  4. 安装插件

    install PLUGIN group_replication SONAME 'group_replication.so';
    
  5. 首个节点启动group replication

    SET GLOBAL group_replication_bootstrap_group=ON;
    START GROUP_REPLICATION;
    SET GLOBAL group_replication_bootstrap_group=OFF;
    
  6. 其他节点启动

    START GROUP_REPLICATION;
    
select * from mysql.slave_master_info\G
select * from performance_schema.replication_group_members;
  • 安装时常见错误
    • group_replication_group_name不是uuid格式
    • 未设置group_replication_ip_whitelist,节点不能互通
    • 未设置系统hostname,节点无法从集群搭建复制关系
    • chanel_name名字不是group_replication_recovery
    • 未设置sql_log_bin=off导致各节点gtid不一致
    • 未开启performance_schema,导致集群状态没办法查看