参考资料:
https://github.com/sysown/proxysql/wiki #GitHub官方
https://github.com/malongshuai/proxysql/wiki #大佬中文翻译版https://www.mysql.com/ #Mysql 官网
相关资料可以了解下大概流程,实现原理。proxysql 和MySQL安装 上面资料中有
MySQL Group Replication:ProxySQL中的原生支持
https://lefred.be/content/mysql-group-replication-native-support-in-proxysql/
MySQL MGR实现分析 - 成员管理与故障恢复实现
https://www.cnblogs.com/zyfd/p/9816571.html
环境准备: 192.168.17.133 mysql-master 192.168.17.134 mysql-slave134 192.168.17.135 mysql-slave135 vim /etc/hosts #配置DNS解析 vim /etc/hostname #设置主机名
MySQL配置
vim /etc/my.cnf 加入以下配置 #MGR 设置 server_id=133 gtid_mode=ON enforce_gtid_consistency=ON master_info_repository=TABLE relay_log_info_repository=TABLE binlog_checksum=NONE log_slave_updates=ON log_bin=binlog binlog_format=ROW transaction_write_set_extraction=XXHASH64 ##指示server必须为每个事务收集写集合,并使用XXHASH64哈希算法将其编码为散列 loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" loose-group_replication_start_on_boot=off ##指示插件在server启动时不自动启动组复制 loose-group_replication_local_address= "192.168.17.133:33061" #每个节点此处为本机的IP及端口 loose-group_replication_group_seeds= "192.168.17.133:33061,192.168.17.134:33061,192.168.17.135:33061" #MGR组的所有IP及端口 loose-group_replication_bootstrap_group=off ##配置是否自动引导组 loose-group_replication_ip_whitelist="127.0.0.1,192.168.17.0/24" ##用户白名单 loose-group_replication_enforce_update_everywhere_checks=ON ##多主模式下为多主更新启用或禁用严格一致性检查 loose-group_replication_single_primary_mode=OFF ##设置组自动选择一个server来处理读/写工作 group_replication_member_weight=100 #权重,如果多个服务器权重相同会根据server_uuid按字典顺序和选择第一个。 loose-group_replication_enforce_update_everywhere_checks=OFF ##单主模式下一致性检查可以关闭 loose-group_replication_single_primary_mode=ON ##单主模式
登录mysql 主服务器设置
show databases; SET SQL_LOG_BIN=0; #禁用二进制日至 set global validate_password.policy=0; CREATE USER replication@'%' IDENTIFIED BY 'wangfeng'; #创建用户 GRANT REPLICATION SLAVE ON . TO replication@'%'; #加用户权限 FLUSH PRIVILEGES; #刷新数据 SET SQL_LOG_BIN=1; #启用二进制日至 CHANGE MASTER TO MASTER_USER='replication', MASTER_PASSWORD='wangfeng' FOR CHANNEL 'group_replication_recovery'; #当配置了用户,使用CHANGE MASTER TO语句将服务器为下一次需要从其他成员恢复状态时使SET SQL_LOG_BIN=0;用group_replication_recovery复制通道的给定凭证,发出以下命令,用创建用户时直接使用的值替换replication@和密码 INSTALL PLUGIN group_replication SONAME 'group_replication.so'; #安装组插件 SHOW PLUGINS; SET GLOBAL group_replication_bootstrap_group=ON; #单主模式下,master开启声明初始化group (只需要第一台master) START GROUP_REPLICATION; #打开组复制 SET GLOBAL group_replication_bootstrap_group=OFF; SELECT * FROM performance_schema.replication_group_members; #查看组成员状态
从服务器设置
show databases;
SET SQL_LOG_BIN=0; #禁用二进制日至
set global validate_password.policy=0;
SHOW VARIABLES LIKE 'validate_password%';
CREATE USER replication@'%' IDENTIFIED BY 'wangfeng'; #创建用户
GRANT REPLICATION SLAVE ON . TO replication@'%'; #加用户权限
FLUSH PRIVILEGES; #刷新数据
SET SQL_LOG_BIN=1; #启用二进制日至
CHANGE MASTER TO MASTER_USER='replication', MASTER_PASSWORD='wangfeng' FOR CHANNEL 'group_replication_recovery'; #当配置了用户,使用CHANGE MASTER TO语句将服务器为下一次需要从其他成员恢复状态时使SET SQL_LOG_BIN=0;用group_replication_recovery复制通道的给定凭证,发出以下命令,用创建用户时直接使用的值替换rpl_user和密码
INSTALL PLUGIN group_replication SONAME 'group_replication.so'; #安装组插件
SHOW PLUGINS;
START GROUP_REPLICATION; #打开组复制
SELECT * FROM performance_schema.replication_group_members;