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');
相关推荐
pigs20186 小时前
mysql8.0 access denied for user root localhost account is locked
数据库·adb
-SOLO-6 小时前
使用adb 提取apk
adb
啊森要自信20 小时前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython
Arvin.Angela1 天前
MySQL安装及运行环境配置
数据库·mysql·adb
她叫我大水龙2 天前
ADB 入门指南:安装与常用命令速查手册
adb
wb043072012 天前
仓库搬家不停业——从阿明的“在线换仓库“,看数据库迁移与 Schema 演进的实战方法论
数据库·adb·架构
Mr -老鬼2 天前
EasyClick 入门指南:Shell 命令与 ADB 完全指南
android·adb·自动化·shell·easyclick·易点云测
feifeigo1232 天前
C# ADB 安卓设备数据传输工具
android·adb·c#
2301_773643622 天前
mysql5.7稳定版使用
adb
ULIi096kr3 天前
MySQL解决Too many connections报错:连接数爆满排查、优化与永久解决方案
数据库·mysql·adb