docker容器单机创建3个节点的MySQLMGR集群

docker容器单机创建3个节点的MySQLMGR集群

复制代码
mkdir -p /data/dockerData/mysql1/conf.d
mkdir -p /data/dockerData/mysql1/data
mkdir -p /data/dockerData/mysql2/conf.d
mkdir -p /data/dockerData/mysql2/data
mkdir -p /data/dockerData/mysql3/conf.d
mkdir -p /data/dockerData/mysql3/data

docker run -d \
--name mysql33011 \
-p 33011:3306 \
--net=mysql-network --ip 172.72.0.15 \
-v /data/dockerData/mysql1/conf.d:/etc/mysql/conf.d \
-v /data/dockerData/mysql1/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.43 

docker run -d \
--name mysql33012 \
-p 33012:3306 \
--net=mysql-network --ip 172.72.0.16 \
-v /data/dockerData/mysql2/conf.d:/etc/mysql/conf.d \
-v /data/dockerData/mysql2/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.43 


docker run -d \
--name mysql33013 \
-p 33013:3306 \
--net=mysql-network --ip 172.72.0.17 \
-v /data/dockerData/mysql3/conf.d:/etc/mysql/conf.d \
-v /data/dockerData/mysql3/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.43 


cat > /data/dockerData/mysql1/conf.d/my.cnf <<"EOF"
[mysqld]
user=mysql
port=3306
character_set_server=utf8mb4
secure_file_priv=''
server-id = 33011
default-time-zone = '+8:00'
log_timestamps = SYSTEM
log-bin = 1
binlog_format=row
binlog_checksum=NONE
log-slave-updates=1
skip-name-resolve
auto-increment-increment=2
auto-increment-offset=1
gtid-mode=ON
enforce-gtid-consistency=on
default_authentication_plugin=mysql_native_password
max_allowed_packet = 500M

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log=mgr15-relay-bin-ip15


transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address= "172.72.0.15:33061"
loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
loose-group_replication_bootstrap_group=OFF
loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"

report_host=172.72.0.15
report_port=3306

EOF




cat >  /data/dockerData/mysql2/conf.d/my.cnf <<"EOF"
[mysqld]
user=mysql
port=3306
character_set_server=utf8mb4
secure_file_priv=''
server-id = 33012
default-time-zone = '+8:00'
log_timestamps = SYSTEM
log-bin = 1
binlog_format=row
binlog_checksum=NONE
log-slave-updates=1
gtid-mode=ON
enforce-gtid-consistency=ON
skip_name_resolve
default_authentication_plugin=mysql_native_password
max_allowed_packet = 500M

master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log=mgr16-relay-bin-ip16


transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address= "172.72.0.16:33062"
loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
loose-group_replication_bootstrap_group=OFF
loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"

report_host=172.72.0.16
report_port=3306

EOF




cat > /data/dockerData/mysql3/conf.d/my.cnf <<"EOF"
[mysqld]
user=mysql
port=3306
character_set_server=utf8mb4
secure_file_priv=''
server-id = 33013
default-time-zone = '+8:00'
log_timestamps = SYSTEM
log-bin = 1
binlog_format=row
binlog_checksum=NONE
log-slave-updates=1
gtid-mode=ON
enforce-gtid-consistency=ON
skip_name_resolve
default_authentication_plugin=mysql_native_password
max_allowed_packet = 500M


master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log=mgr17-relay-bin-ip17


transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
loose-group_replication_start_on_boot=OFF
loose-group_replication_local_address= "172.72.0.17:33063"
loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063"
loose-group_replication_bootstrap_group=OFF
loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17"

report_host=172.72.0.17
report_port=3306

EOF

docker restart mysql33011 mysql33012 mysql33013


所有MySQL容器中安装MGR插件
//xxx是容器的名称
docker exec -it mysql33011 mysql -uroot -proot
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

docker exec -it mysql33012 mysql -uroot -proot
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

docker exec -it mysql33013 mysql -uroot -proot
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
show plugins;

在所有节点上创建复制账号
docker exec -it mysql33011 mysql -uroot -proot
docker exec -it mysql33012 mysql -uroot -proot
docker exec -it mysql33013 mysql -uroot -proot

SET SQL_LOG_BIN=0;
CREATE USER repl@'%' IDENTIFIED BY 'root';
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='root' FOR CHANNEL 'group_replication_recovery';
exit;


启动MGR单主模式

在主节点上启动MGR:
docker exec -it mysql33011 mysql -uroot -proot

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
SELECT * FROM performance_schema.replication_group_members;

剩余节点需要加入MGR,在剩余节点上执行以下操作:
docker exec -it mysql33012 mysql -uroot -proot
docker exec -it mysql33013 mysql -uroot -proot

START GROUP_REPLICATION;
SELECT * FROM performance_schema.replication_group_members;
exit;
相关推荐
七夜zippoe20 分钟前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
金刚猿35 分钟前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong1 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿1 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy6482 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满2 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9032 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海3 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
Goat恶霸詹姆斯3 小时前
mysql常用语句
数据库·mysql·oracle