【Docker、Mysql】Docker搭建Mysql主从复制(一主一从)
一、主数据库搭建
1、使用搜索Mysql版本,使用mysql:5.7
docker pull mysql:5.7
2、docker run 运行镜像
docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=root -d -p 8880:3306 mysql:5.7
3、进入容器内部,修改my.cnf文件
进入容器
docker exec -it ed39828ef047 /bin/sh
进入目录/etc/mysql
cd /etc/mysql
使用vi/vim命令前需要先执行以下命令安装
apt-get update
apt-get install vim
修改my.cnf文件
vim my.cnf
修改的内容为
[mysqld] #修改配置文件:vim /etc/my.cnf #主服务器唯一ID server-id=1 #启用二进制日志(必要配置) log-bin=mysql-bin # 设置不要复制的数据库(可设置多个) binlog-ignore-db=mysql binlog-ignore-db=information_schema #设置需要复制的数据库 需要复制的主数据库名字 binlog-do-db=testdb #设置logbin格式 binlog_format=STATEMENT
重启mysql服务使配置生效,重启mysql服务时会使得docker容器停止
service mysql restart
重启容器并重新进入容器内部
docker start ed39828ef047
docker exec -it ed39828ef047 /bin/sh
在容器内部连接mysql
mysql -uroot -proot
主机上建立帐户并授权 slave
GRANT REPLICATION SLAVE ON *.* TO slave@% IDENTIFIED BY root;
查询master状态,如果my.cnf文件配置失败,是不会出现该表格的。
show master status;
File: mysql-bin.000001 Position: 438
二、从数据库搭建
1、docker run 运行镜像
docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=root -d -p 8881:3306 mysql:5.7
2、进入容器内部,修改my.cnf文件
进入容器
docker exec -it 36610e42c1cc /bin/sh
进入目录/etc/mysql
cd /etc/mysql
使用vi/vim命令前需要先执行以下命令安装
apt-get update
apt-get install vim
修改my.cnf文件
vim my.cnf
修改的内容为
[mysqld] #从服务器唯一ID server-id=2 #启用中继日志 relay-log=mysql-relay
重启mysql服务使配置生效,重启mysql服务时会使得docker容器停止
service mysql restart
重启容器并重新进入容器内部
docker start 36610e42c1cc
docker exec -it 36610e42c1cc /bin/sh
在容器内部连接mysql
mysql -uroot -proot
配置主机信息
CHANGE MASTER TO MASTER_HOST=10.101.101.111, MASTER_USER=slave, MASTER_PASSWORD=root, MASTER_PORT=8880, MASTER_LOG_FILE=mysql-bin.000001,MASTER_LOG_POS=438;
解释:
MASTER_HOST=主机的ip地址 MASTER_USER=授权账户 MASTER_PASSWORD=密码 MASTER_PORT=映射端口 MASTER_LOG_FILE=之前的File MASTER_LOG_POS=之前的Position
注:如果在这里出现错误,先重置。执行完下面两条命令。
stop slave;
reset master;
启动从机
start slave;
查看服务器状态
show slave statusG
下面两个参数都是Yes,则说明主从配置成功
Slave_IO_Running: Yes Slave_SQL_Running: Yes
注意:本文配置的主从复制数据库为“testdb”,其他的不会同步,需要重新配置。
推荐文章: