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');
相关推荐
2601_9498153318 小时前
MySQL输入密码后闪退?
数据库·mysql·adb
.柒宇.1 天前
MySQL高级之备份与还原
数据库·mysql·adb
yitian_hm1 天前
MySQL主从复制与读写分离实战指南
android·mysql·adb
givemeacar1 天前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
Darkdreams1 天前
MySQL四种备份表的方式
mysql·adb·oracle
渡我白衣1 天前
【MySQL基础】(3):MySQL库与表的操作
android·数据库·人工智能·深度学习·神经网络·mysql·adb
Deryck_德瑞克2 天前
【已解决】MySQL连接出错 1045 - Access denied for user ‘root‘@‘::1‘
android·mysql·adb
Wyawsl2 天前
MySQL故障排查与优化
android·adb
卤炖阑尾炎2 天前
MySQL 主从复制与读写分离:从原理到实战全解析
mysql·adb
ego.iblacat2 天前
MySQL 高可用
数据库·mysql·adb