1. 环境准备
-
创建
docker-compose.ymlvim 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,在一个局域网内要唯一
这几个mysql的名称尽量一致
这几个名称尽量一致
- 运行
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- 刷新两个连接
测试主从复制












网友评论