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/目录下

dockeK安装mysql主从 docker mysql主从复制_dockeK安装mysql主从


查看可以看到my.cnf文件,使用vim编辑器打开,但是需要提前安装

安装vim命令:

apt-get update
apt-get install vim

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

vim my.cnf

新增配置后的my.cnf

dockeK安装mysql主从 docker mysql主从复制_docker_02

#主服务器唯一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 日志三种格式:

dockeK安装mysql主从 docker mysql主从复制_dockeK安装mysql主从_03


保存退出文件编辑和容器2)从数据库配置

按照上面步骤进入到容器并编辑my.cnf文件

修改后的配置:

dockeK安装mysql主从 docker mysql主从复制_dockeK安装mysql主从_04

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

dockeK安装mysql主从 docker mysql主从复制_dockeK安装mysql主从_05

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;

dockeK安装mysql主从 docker mysql主从复制_docker_06


看到两个yes说明成功了

注意:之前弄过主从复制的需要重置:

STOP SLAVE;
RESET SLAVE;

dockeK安装mysql主从 docker mysql主从复制_dockeK安装mysql主从_07


同步成功了~~~~~

7、期间遇到的问题

1)容器配置文件修改错误,导致容器启动失败

第一种办法:删掉容器重新来过

第二种办法:

1、使用docker inspect mysql01/id ,然后打印出很多信息

dockeK安装mysql主从 docker mysql主从复制_服务器_08


切换到这个文件夹:

dockeK安装mysql主从 docker mysql主从复制_服务器_09


然后可以找到容器的配置文件了

dockeK安装mysql主从 docker mysql主从复制_mysql_10


是不是觉得很熟悉?不就是我们配置的文件吗,重新修改正确后,容器又能正常启动了…2)从数据库在添加主数据库的时候,

dockeK安装mysql主从 docker mysql主从复制_mysql_11


默认是3306端口,如果不是,则需要修改,不然就连接不上主机了

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