Docker 的安装可参考这篇文章:Linux 安装 Docker;这里的主从复制是基于 GTID(Glbal Transation Identifier)全局事务标识符的。GTID 是 MySQL 5.6 新加入的一项技术,GTID 是完全基于事务的,不支持 MYISAM 存储引擎
Step 1:拉取镜像
docker pull mysql:5.7.40
Step 2:创建主 MySQL 容器
- 创建挂载挂载目录以及 MySQL 配置文件
mkdir -p /usr/local/mysql/data /usr/local/mysql/logs /usr/local/mysql/conf
touch /usr/local/mysql/conf/my.cnf
- 主 my.cnf 配置内容
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
character-set-server=utf8mb4
default-time-zone='+08:00'
max_connections=1024
max_connect_errors=10
default-storage-engine=INNODB
lower_case_table_names = 1
server-id=10
log-bin=/var/log/mysql/binlog
explicit_defaults_for_timestamp=true
# GTID 全局事务配置
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
- 启动
docker run -p 3306:3306 \
--name mysql \
--restart=always \
-e MYSQL_ROOT_PASSWORD=Hwtech8888 \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-e TZ=Asia/Shanghai \
-d mysql:5.7.40
Step 3:主 MySQL 配置
- 进入容器内部
docker exec -it mysql bash
mysql -p
# 输入密码
- 创建同步账号
create user 'slave'@'%' identified by 'Hwtech8888';
grant replication slave on *.* to 'slave'@'%';
flush privileges;
- 设置只读模式
# 避免在此期间有数据变化
set @@global.read_only=ON;
Step 4:创建从 MySQL 容器
我这里用了两台服务器,如果是同一台服务器,主要更改文件夹以及端口号
步骤同上,从 my.cnf 配置内容
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
character-set-server=utf8mb4
default-time-zone='+08:00'
max_connections=1024
max_connect_errors=100
default-storage-engine=INNODB
lower_case_table_names = 1
server-id=100
log-bin=/var/log/mysql/binlog
relay-log=/var/log/mysql/relay-log
explicit_defaults_for_timestamp=true
# GTID 全局事务配置
gtid-mode=on
log-slave-updates=1
enforce-gtid-consistency
skip-slave-start
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
- 启动
docker run -p 3306:3306 \
--name mysql \
--restart=always \
-e MYSQL_ROOT_PASSWORD=Hwtech8888 \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-e TZ=Asia/Shanghai \
-d mysql:5.7.40
Step 5:从 MySQL 配置
- 进入容器内部
docker exec -it mysql bash
mysql -p
# 输入密码
- 配置主服务监听
change master to
master_host='101.201.233.67',
master_user='slave',
master_password='Hwtech8888',
master_port=10000,
master_auto_position=1
- 启动数据同步
start slave;
show slave status\G;
原文地址:http://www.cnblogs.com/chaosmoor/p/16910273.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性