基于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
基于docker环境的mysql主从复制_第1张图片

#主服务器唯一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 日志三种格式:
基于docker环境的mysql主从复制_第2张图片
保存退出文件编辑和容器

2)从数据库配置
按照上面步骤进入到容器并编辑my.cnf文件
修改后的配置:
基于docker环境的mysql主从复制_第3张图片

#从服务器唯一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的状态

基于docker环境的mysql主从复制_第4张图片

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;

基于docker环境的mysql主从复制_第5张图片
看到两个yes说明成功了
注意:之前弄过主从复制的需要重置:

STOP SLAVE;
RESET SLAVE;

基于docker环境的mysql主从复制_第6张图片
同步成功了~~~~~

7、期间遇到的问题

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

2)从数据库在添加主数据库的时候,
基于docker环境的mysql主从复制_第10张图片
默认是3306端口,如果不是,则需要修改,不然就连接不上主机了

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

你可能感兴趣的:(基于docker环境的mysql主从复制)