基于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端口,如果不是,则需要修改,不然就连接不上主机了
后续会继续更新升级版~~~