【MySQL主从复制】使用MySQL8.0.17的clone技术在线搭建主从复制环境
参考:https://www.xmmup.com/dbbao33shiyongmysql8-0-17declonejishuzaixiandajianzhucongfuzhihuanjing.html
clone简介
MySQL 8.0.17的克隆插件允许在本地或从远程MySQL实例在线克隆数据,从此搭建从库可以不再需要备份工具来实现。克隆数据是存储在InnoDB其中的数据的物理快照,其中包括库、表、表空间和数据字典元数据。克隆的数据包含一个功能齐全的数据目录,允许使用克隆技术插件进行MySQL服务器配置。
初始化主从环境
-- 下载镜像
[root@mysql ~]# docker pull mysql:8.0.20
-- 创建主从网络环境
[root@mysql ~]# docker network create --subnet=192.168.68.0/16 mhaclone
8b8e5ae9dd1efbb247323978a3dbcf025415b861b76bd828859ac934aefa77d1
[root@mysql ~]# docker network inspect mhaclone
[
{
"Name": "mhaclone",
"Id": "8b8e5ae9dd1efbb247323978a3dbcf025415b861b76bd828859ac934aefa77d1",
"Created": "2022-10-14T20:55:25.87905019+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {
},
"Config": [
{
"Subnet": "192.168.68.0/16"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
},
"Options": {
},
"Labels": {
}
}
]
-- 创建MySQL参数文件路径
[root@mysql ~]# mkdir -p /etc/mysql/mysql8020M1/
[root@mysql ~]# mkdir -p /etc/mysql/mysql8020S1/
-- 删除已存在的容器
[root@mysql ~]# docker rm -f mysql8020M1
[root@mysql ~]# docker rm -f mysql8020S1
-- 创建主库
[root@mysql ~]# docker run -d --name mysql8020M1 -h mysql8020M1 -p 3318:3306 -v /etc/mysql/mysql8020M1/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=wcb -e TZ=Asia/Shanghai --network mhaclone --ip 192.168.68.168 mysql:8.0.20
-- 创建从库
[root@mysql ~]# docker run -d --name mysql8020S1 -h mysql8020S1 -p 3319:3306 -v /etc/mysql/mysql8020S1/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=wcb -e TZ=Asia/Shanghai --network mhaclone --ip 192.168.68.169 mysql:8.0.20
e62ede03834142cac3d8bcfb364d014d24e817eaf99ad8a593f053c959a35d8d
-- 修改主从环境的参数文件
[root@mysql ~]# cat > /etc/mysql/mysql8020M1/conf/my.cnf <<"EOF"
[mysqld]
default-time-zone = '+8:00'
log_timestamps = SYSTEM
skip-name-resolve
log-bin
server_id=80203318
character_set_server=utf8mb4
gtid_mode=on
enforce_gtid_consistency=on
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
default_authentication_plugin=mysql_native_password
report_host = 192.168.68.168
report_port = 3306
EOF
[root@mysql ~]# cat > /etc/mysql/mysql8020S1/conf/my.cnf <<"EOF"
[mysqld]
default-time-zone = '+8:00'
log_timestamps = SYSTEM
skip-name-resolve
log-bin
server_id=80203319
character_set_server=utf8mb4
gtid_mode=on
enforce_gtid_consistency=on
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys
replicate_ignore_db=information_schema
replicate_ignore_db=performance_schema
replicate_ignore_db=mysql
replicate_ignore_db=sys
default_authentication_plugin=mysql_native_password
report_host = 192.168.68.169
report_port = 3306
EOF
-- 添加网卡