1. 环境准备
-
创建
docker-compose.yml
vim docker-compose.yml
version: "3" services: mysql-master: image: mysql:5.7.31 restart: always hostname: mysql-master container_name: mysql-master ports: - 3317:3306 environment: MYSQL_ROOT_PASSWORD: root TZ: Asia/Shanghai volumes: - ./mysql/master/data:/var/lib/mysql - ./mysql/master/mysql/log:/var/log/mysql command: --server_id=100 --log-bin=mysql-master-bin --sync_binlog=1 --binlog-ignore-db=mysql --binlog_format=mixed --expire_logs_days=7 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 links: - mysql-slave-read mysql-slave-read: image: mysql:5.7.31 restart: always hostname: mysql-slave-read container_name: mysql-slave-read ports: - 3318:3306 environment: MYSQL_ROOT_PASSWORD: root TZ: Asia/Shanghai volumes: - ./mysql/slave/data:/var/lib/mysql - ./mysql/slave/log:/var/log/mysql command: --server_id=200 --read_only=1 --binlog-ignore-db=mysql --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1
-
server_id
一般设置为IP
,在一个局域网内要唯一
![](https://img.haomeiwen.com/i9372781/a6b606547849131f.png)
![](https://img.haomeiwen.com/i9372781/dc2c3b3b762eb373.png)
- 运行
docker-compose.yml
-
docker-compose up -d
-
docker ps -a
运行并查看容器
-
2. 在Navicat
中配置主从复制
-
在主数据库
master
中操作-
创建一个用于同步的用户,赋予REPLICATION SLAVE 的权限
-
grant replication slave on *.* to 'slave'@'%' identified by 'slave';
-
'slave'@'%'
任意地址的名为slave
的用户 -
identified by 'slave'
密码为slave
-
创建一个用户
-
-
锁住
master
数据库,防止写入数据flush tables with read lock;
锁住master数据库
-
查看
master
状态,记录 File 和 Positon 的值show master status;
查看master状态
-
-
配置
slave
从数据库-
先停止主从复制
stop slave;
停止主从复制
-
注册主从复制相关信息
CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='slave', MASTER_PASSWORD='slave', MASTER_LOG_FILE='mysql-master-bin.000003', MASTER_LOG_POS=430;
-
MASTER_HOST
的值是环境准备时docker-compose.yml
的主数据库
的名字mysql-master
主数据库的名字
-
MASTER_LOG_FILE
的值就是查看master
状态的File
值 -
MASTER_LOG_POS
的值就是查看master
状态的Positon
值
注册主从复制相关信息
-
-
开启主从复制
start slave;
开启主从复制
-
查看
slave
状态,是否设置主从复制成功show slave status
查看slave状态
-
-
解锁
master
主数据库
-
unlock tables;
解锁master数据库
-
master
端测试是否成功create database test character set utf8
- 刷新两个连接
测试主从复制
drop database test
- 刷新两个连接
测试主从复制
网友评论