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');
相关推荐
活宝小娜17 天前
mysql详细安装教程
数据库·mysql·adb
zhangjin112017 天前
adb install和 pm install 的区别是什么?
adb
炼川淬海DB18 天前
数据库开发规范
android·adb·数据库开发
何极光18 天前
MySQL 8.0详细安装教程(附下载地址)
数据库·mysql·adb
sevencheng79818 天前
【ADB】adb命令行常用按键模拟代码
linux·adb·模拟按键,返回键,音量键
QX_hao19 天前
mysqldump-vs-xtrabackup
adb·mysql备份
云计算磊哥@20 天前
运维开发宝典028-MySQL04数据库热备
数据库·adb·运维开发
charlee4420 天前
Unity在安卓端如何调试输出信息
android·unity·adb·游戏引擎·真机调试
ai_coder_ai21 天前
如何使用adb实现自动化脚本?
运维·adb·自动化
pigs201821 天前
mysql8.0 access denied for user root localhost account is locked
数据库·adb