前期准备
- 安装 docker。
- 安装 docker-compose 命令。
- 推荐本机安装 mycli 命令。语法几近原生,多了补全。
- 文章涉及到的 docker-compose.yml 和 Dockerfile 文件可以在 https://github.com/jessun2017/docker-files 的 mysql4dev 目录下找到。
说明
简单描述就是 docker-compose 命令可以按照 docker-compose.yml 中的配置来运行两个包含 mysql 服务的容器。之后再单独使用命令来配置从库设置。
version: "3"
services:
mysql_master:
build:
context: ./
dockerfile: master/Dockerfile
volumes:
- "./mysql_master:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: root
links:
- mysql_slave
ports:
- "33060:3306"
restart: always
hostname: mysql_master
mysql_slave:
build:
context: ./
dockerfile: slave/Dockerfile
volumes:
- "./mysql_slave:/var/lib/mysql"
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "33061:3306"
restart: always
hostname: mysql_slave
两个数据库的 root 用户密码都是 root 。主库的连接地址为:127.0.0.1:33060
,从库的连接地址为:127.0.0.1:33061
。两个数据库的持久化都会在当前目录下 ./mysql_master
和 ./mysql_slave
。
步骤
- 在 mysql4dev 目录下运行
docker-compose up
启动两个 mysql 容器。 - 首先
docker ps
查看一下两个容器的基本情况。
docker ps 显示结果 - 使用
mycli -h 127.0.0.1 -P 33060 -u root
命令来操作主库。输入show master status;
来确定 binlog 文件名和记录的位置。
show master status; 显示结果 - 使用
mycli -h 127.0.0.1 -P 33061 -u root
命令来操作从库。输入CHANGE MASTER TO MASTER_HOST='mysql_master',MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='replicas-mysql-bin.000005',MASTER_LOG_POS=154;
- 继续
stop slave;
,start slave
来启动从库的复制功能。 - 使用
show slave status;
,如果显示如下,表示主从设置已经成功。
[图片上传失败...(image-36b34f-1583686594141)] - 这里有个注意点,如果
show slave status;
中显示了 error,就需要重新从步骤3开始操作,重新同步。否则复制功能就会停滞。
网友评论