容器让开发更为简单!
在正式写之前,我们首先要清楚:容器中的mysql配置文件跟数据库文件要放在宿主机。
本文使用的是docker-compose来实例化两个mysql服务。
先贴代码:
version: "3.8"
services:
adminer:
image: adminer:4.8.1-standalone
ports:
- 8080:8080
depends_on:
- mysql1
- mysql2
networks:
tsql:
ipv4_address: 192.168.6.2
mysql1:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- /work/sqltest/m1:/etc/mysql/
networks:
tsql:
ipv4_address: 192.168.6.3
mysql2:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- /work/sqltest/m2:/etc/mysql/
networks:
tsql:
ipv4_address: 192.168.6.4
networks:
tsql:
ipam:
config:
- subnet: 192.168.6.0/24
gateway: 192.168.6.1
步骤:
一:copy mysql容器中的配置文件到本地
由于是用docker-compose直接启动容器,所以我们在第一次docker-compose up启动的时候,上面的代码中的volumes配置需先注释,因为还没有配置,所以不注释会报错(由于是测试,db数据没有volumes)。
在启动之后cp两份mysql的配置文件:
docker cp 容器id:/etc/mysql 本地目录
二:修改配置文件
修改充当主库跟充当从库的配置文件的共同之处在于:
都需要增加:server-id参数,但是它们的值不能重复,如主库设置:
server-id=1
从库设置:
server-id=2
主库比从库额外多的动作是需要开启二进制日志:
log-bin=mysql-bin
//主库my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
//从库my.cnf
[mysqld]
server-id=2
修改完配置文件之后一定要记得重启!!
由于本文是docker-compose,所以直接restart就好。
三:在从库上配置主库的信息
配置信息跟windows版都是一样的,有需要可以查看:windows主从。
代码:
CHANGE MASTER TO
MASTER_HOST='127.0.0.1', #这里是主库的ip
MASTER_PORT=3306, #这里是主库的端口,从库的端口可以和主库不同
MASTER_USER='root', #这里是主库上建立的用于复制的用户rpo
MASTER_PASSWORD='111111', ##这里是root用户的密码
MASTER_LOG_FILE='LAPTOP-CFDLNI4D-bin.000003', ###这里是show master status时查看到的二进制日志文件名称,注意不能多空格
MASTER_LOG_POS=0; ##这里是show master status时查看到的二进制日志文件偏移量,注意不能多空格
配置完之后,需要开启主从同步
四:在从库上开启主从同步
start slave;
执行完可以使用show slave status;命令查看是否主从成功!如果遇到1236问题请看这篇文章