需求:项目以私有化部署方式交付时,需对数据库进行主从复制配置
docker来实现mysql主从复制只比服务器实现起来多一层网络映射
环境准备:docker 18.*
本次测试搭建基于本地win10系统
1.启动私有化项目 以私有化容器内lnmp中的mysql为master
1.1 配置master
在my.cnf文件内 [mysqld]下 如不存在或已注释则新增:
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能
log-bin=mysql-bin
1.2 master上新增并赋权用户
create user 'slave'@'%' identified by '123456';
grant replication slave,replication client on *.* to 'slave'@'%';
show master status;
docker inspect --format='{{.NetworkSettings.IPAdress}}' containerName
2. 配置slave 首先启动一个从mysql容器
docker run -p 32001:3306 --name mysql_slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.1 在my.cnf文件内 [mysqld]下 如不存在或已注释则新增:
[mysqld]
## 设置server_id,注意要唯一
server-id=102
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
2.2 连接master,在slave上执行:
mysql
-- 依次为 主机;用户;密码;端口;二进制文件名;起始位置;重试时间;
2.3 执行过后,查看slave状态:
show slave status G;
如下面两个参数显示为No
Slave_IO_Running: No
Slave_SQL_Running: No
则 开启从数据库:
mysql> start slave;
结尾.