docker 部署 主从复制集群
一、mysql-master
dockerfile
文件夹如下 (这里不是用的docker-compose,测试docker-compose时)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ymj5cwW-1640775748234)(evernotecid://7FADD559-2149-4FF1-903A-573CB898BE35/appyinxiangcom/9632119/ENResource/p912)]
master的dockerfile
FROM mysql:8.0.27
MAINTAINER liu
ADD ./master/my.cnf /etc/mysql/my.cnf
master 的 mysql配置文件
[mysqld]
server_id=100
binlog-ignore-db=mysql
log-bin=replicas-mysql-bin
binlog_cache_size=1M
binlog_format=mixed
binlog_expire_logs_seconds=2592000
replica_skip_errors=1062
secure_file_priv=/var/lib/mysql
构建镜像
docker build -f master/Dockerfile -t local:mysql-master .
创建容器(这里也可以把mysql常用的 /var/lib/mysql ,以及日志等目录挂载出来)
docker run -itd --name=mysql-master -e MYSQL_ROOT_PASSWORD=123456 -p 33065:3306 local:mysql-master
mysql-slave
dockerfile
FROM mysql:8.0.27
MAINTAINER liu
ADD ./slave/my.cnf /etc/mysql/my.cnf
slave 的 配置文件(my.cnf)
[mysqld]
server_id=101
binlog-ignore-db=mysql
log-bin=replicas-mysql-slave1-bin
binlog_cache_size=1M
binlog_format=mixed
binlog_expire_logs_seconds=2592000
replica_skip_errors=1062
relay_log=replicas-mysql-relay-bin
log_replica_updates=1
secure_file_priv=/var/lib/mysql
read_only=1
构建镜像
docker build -f slave/Dockerfile -t local:mysql-slave .
创建容器(这里也可以把mysql常用的 /var/lib/mysql ,以及日志等目录挂载出来)
docker run -itd --name=mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 33066:3306 local:mysql-slave
设置同步
1、 在主库操作
(1)查询主库 master 状态
show master status;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4hT19uL-1640775748239)(evernotecid://7FADD559-2149-4FF1-903A-573CB898BE35/appyinxiangcom/9632119/ENResource/p913)]
获得File,position字段值
2、从库操作
show master status;
只是确认下,实际查不查这一步无所谓
- 注:如果是首次设置slave,可以直接操作第三步,如果是已经设置过了的,则需要从第一步可以完整执行*
(1) stop slave;
停止 slave,
(2) reset master;
重置 master
(3)
CHANGE MASTER TO
MASTER_HOST='172.17.0.1',
MASTER_PORT=33065,
MASTER_USER='root',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='replicas-mysql-bin.000003',
MASTER_LOG_POS=2253;
MASTER_HOST
是 master的端口,这里用的是docker桥接的网桥地址,用 域名也是可以的
MASTER_PORT
因为master 修改了端口,所以这里需要设置一下,如果是默认的3306 就不需要重新设置
MASTER_LOG_FILE
是master的binlog 文件,是从master数据库中查询获得
MASTER_LOG_POS
同步位置,从master数据库中查询获得
(4) start slave;
启动 slave