一、主库搭建
1.构建主库镜像
运行mysql镜像,配置端口3307为主库
docker run -p 3307:3306 --name mysql-master --privileged=true -v /mydata/mysql-master/log:/var/log/mysql -v /mydata/mysql-master/data:/var/lib/mysql -v /mydata/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
查看是否运行成功
docker ps -a
2.配置文件
进入配置文件
cd /mydata/mysql-master/conf
创建my.cnf文件并写入配置
sudo touch my.cnf
sudo chmod 777 my.cnf
vim my.cnf
配置内容如下:
[mysqld]
# 同一局域网中唯一
server_id=1
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
## 开启二进制日志功能
log-bin=on
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,不自动清理。
binlog_expire_logs_seconds=604800
3.重启主库
重启容器
docker restart mysql-master
确认重启成功
docker ps -a
4.进入数据库配置同步用户
进入容器
docker exec -it mysql-master /bin/bash
登录数据库
mysql -uroot -proot
创建同步用户,给从库同步数据使用
CREATE USER 'slave'@'%' IDENTIFIED mysql_native_password BY '123456';
给用户授权
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
二、从库搭建
1.启动从库容器
运行mysql镜像,配置端口3308为从库
docker run -p 3308:3306 --name mysql-slave --privileged=true -v /mydata/mysql-slave/log:/var/log/mysql -v /mydata/mysql-slave/data:/var/lib/mysql -v /mydata/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
查看是否运行成功
docker ps -a
2.配置文件
进入配置文件
cd /mydata/mysql-slave/conf
创建my.cnf文件并写入配置
sudo touch my.cnf
sudo chmod 777 my.cnf
vim my.cnf
配置内容如下:
[mysqld]
# 同一局域网中唯一
server_id=2
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys
## 开启二进制日志功能
log-bin=on
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,不自动清理。
binlog_expire_logs_seconds=604800
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1
3.重启主库
重启容器
docker restart mysql-slave
确认重启成功
docker ps -a
三、查看主从同步状态
1.进入到主库
docker exec -it mysql-master /bin/bash
mysql -uroot -proot
show master status;
2.进入到从库,配置主从复制
change master to master_host='172.27.64.169',master_user='slave',master_password='123456',master_port=3307,master_log_file='binlog.000008',master_log_pos=1301,master_connect_retry=30;
- master_host='主库ip地址'
- master_user='主库给从库用的用户名'
- master_password='对应的密码',master_port=主库端口号
- master_log_file='指定从库要复制数据的日志文件,通过查看主库的状态,获取File参数'
- master_log_pos=指定从库要复制数据的起始位置,通过查看主库的状态,获取Position参数
- master_connect_retry=连接失败重试的时间间隔,单位秒
most_host:
linux可以通过ifconfig找到正确的ip;
windows可以通过ipconfig找到正确的ip;
3.在从库中查看主从同步状态
show slave status \G;
4.在从库中开启同步
开启从库同步
start slave;
再次查看状态,确认上面的NO NO变成Yes
show slave status \G;
5.自行测试吧
主库创建表及数据,查看从库是否同步成功
完结~
这里我遇到了从库配置主从复制的时候一直connecting的问题,下一章介绍解决全过程!