Mysql 组复制(MGR)部署

1. 还原 MySQL 所有节点
复制代码
# 手动方式还原所有节点数据
[root@mysql-node1 ~]# /etc/init.d/mysqld stop
[root@mysql-node1 ~]# rm -rf /data/mysql/*

# 配置 MySQL 基础参数 (my.cnf)
[root@mysql-node1 ~]# cat > /etc/my.cnf <<EOF
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=10   #不同主机id不同
log-bin=mysql-bin
gtid_mode=ON
enforce-gtid-consistency=ON
default_authentication_plugin=mysql_native_password
log_slave_updates=ON
binlog_format=ROW
binlog_checksum=NONE
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
EOF

# 初始化 MySQL 数据
[root@mysql-node1 ~]# mysqld --user=mysql --initialize
2. 部署组复制
复制代码
# 设置所有 MySQL 节点的 hosts 解析
[root@mysql-node1 ~]# cat > /etc/hosts <<EOF
172.25.254.10      mysql-node1
172.25.254.20      mysql-node2
172.25.254.30      mysql-node3
EOF

# 追加组复制插件及参数配置到 my.cnf
[root@mysql-node1 ~]# cat >> /etc/my.cnf <<EOF
plugin_load_add='group_replication.so'
group_replication_group_name= "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa "
group_replication_start_on_boot=off
group_replication_local_address= "172.25.254.10:33061 "
group_replication_group_seeds= "172.25.254.10:33061,172.25.254.20:33061,172.25.254.30:33061 "
group_replication_bootstrap_group=off
group_replication_single_primary_mode=OFF
EOF
# 注意:其他两台主机需修改 local_address 为各自 IP

# 启动 MySQL 服务
[root@mysql-node1 ~]# /etc/init.d/mysqld start
3. 配置组复制(首台主机 Bootstrap)
复制代码
# 登录 MySQL 配置复制用户和权限
[root@mysql-node1 ~]# mysql -uroot -p'初始密码'
mysql> alter user root@localhost identified by 'lee';
mysql> SET SQL_LOG_BIN=0;
mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'lee';
mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';
mysql> GRANT CONNECTION_ADMIN ON *.* TO rpl_user@'%';
mysql> GRANT BACKUP_ADMIN ON *.* TO rpl_user@'%';
mysql> GRANT GROUP_REPLICATION_STREAM ON *.* TO rpl_user@'%';
mysql> FLUSH PRIVILEGES;
mysql> SET SQL_LOG_BIN=1;

# 配置复制通道并启动组复制
mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user', SOURCE_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery';
mysql> SET GLOBAL group_replication_bootstrap_group=ON;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='lee';
mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

# 查看组成员状态
mysql> SELECT * FROM performance_schema.replication_group_members;
4. 配置组复制(其余主机加入)
复制代码
# 在 node2 和 node3 上执行类似用户配置命令
# ... (用户创建与授权步骤同上) ...

# 启动组复制加入集群
mysql> CHANGE REPLICATION SOURCE TO SOURCE_USER='rpl_user',SOURCE_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery';
# 若报错需先重置 master
mysql> reset master;
mysql> START GROUP_REPLICATION USER='rpl_user', PASSWORD='lee';

# 验证所有节点 ONLINE
mysql> SELECT * FROM performance_schema.replication_group_members;
5. 测试数据同步
复制代码
# 在 node1 创建数据库和表
mysql> create database timinglee;
mysql> create table timinglee.userlist (username VARCHAR(10) PRIMARY KEY NOT NULL, password VARCHAR(50) NOT NULL);
mysql> INSERT INTO timinglee.userlist VALUES ('user1','111');

# 在 node2 和 node3 查询并插入数据,验证多主读写同步
mysql> select * from timinglee.userlist;
mysql> insert into timinglee.userlist values ('user2','222');
相关推荐
00后程序员张11 小时前
Android证书绑定抓包失败?Android SSL Pinning绕过实战指南
android·网络协议·计算机网络·网络安全·adb·https·ssl
九皇叔叔2 天前
MySQL ORDER BY 性能优化详解:Using filesort、联合索引、ASC/DESC 与覆盖索引
android·adb
firstacui4 天前
Mysql调优
android·mysql·adb
醉颜凉4 天前
MySQL 8 忘记 root 密码?这两种方法帮你轻松解决
数据库·mysql·adb
2601_962063234 天前
【Spring Boot】掌握 Spring 事务:隔离级别与传播机制解读与应用
spring boot·spring·adb
小成很成6 天前
mysql 8.0.21 升级 mysql 8.0.45(经过生产环境验证)
android·mysql·adb
2501_916007477 天前
免费抓包工具 Windows 和 Mac 怎么选?根据平台来选择工具
网络协议·计算机网络·网络安全·ios·adb·https·udp
2501_916008897 天前
iOS App 请求地址查看,不用配置看到 App 调了哪些接口
网络协议·计算机网络·网络安全·ios·adb·https·udp
码云数智-园园9 天前
PHP 性能优化实战:从 3s 到 300ms,我是怎么优化一个接口的?
android·adb