基于docker环境的mysql主从复制

1、安装docker

可以参考之前的博客,之前写过了~

2、拉取mysql镜像

docker pull mysql:5.6

3、创建mysql01和mysql02实例

主:

docker run -di --name=mysql01 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

从:

docker run -di --name=mysql02 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

4、进入容器修改配置

1)修改主数据库配置 进入主数据库容器

docker exec -it mysql01 /bin/bash

切换到 etc/mysql/目录下 查看可以看到my.cnf文件,使用vim编辑器打开,但是需要提前安装 安装vim命令:

apt-get update
apt-get install vim

安装成功后,修改my.cnf文件

vim my.cnf

新增配置后的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

binlog 日志三种格式: 保存退出文件编辑和容器

2)从数据库配置 按照上面步骤进入到容器并编辑my.cnf文件 修改后的配置:

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

3)重启mysql 注意:关闭防火墙或者开放对应端口

5、在主机上建立帐户并授权 slave

GRANT REPLICATION SLAVE ON *.* TO slave@%IDENTIFIED BY 123456;
SHOW MASTER STATUS; #查询master的状态

6、在从机上配置需要复制的主机

CHANGE MASTER TO 
		MASTER_HOST=192.168.1.19,
		MASTER_USER=slave,
		MASTER_PASSWORD=123456,
		MASTER_PORT=3307,
		MASTER_LOG_FILE=mysql-bin.000001,MASTER_LOG_POS=736;
#启动从服务器复制功能
START SLAVE;
#查看从服务器状态
SHOW SLAVE STATUS;

看到两个yes说明成功了 注意:之前弄过主从复制的需要重置:

STOP SLAVE;
RESET SLAVE;

同步成功了~~~~~

7、期间遇到的问题

1)容器配置文件修改错误,导致容器启动失败 第一种办法:删掉容器重新来过 第二种办法: 1、使用docker inspect mysql01/id ,然后打印出很多信息 切换到这个文件夹: 然后可以找到容器的配置文件了 是不是觉得很熟悉?不就是我们配置的文件吗,重新修改正确后,容器又能正常启动了…

2)从数据库在添加主数据库的时候, 默认是3306端口,如果不是,则需要修改,不然就连接不上主机了

后续会继续更新升级版~~~

经验分享 程序员 微信小程序 职场和发展