Docker 下 mysql 简单的 主从复制实现

1. 拉取镜像

docker pull mysql:5.7.21

2. 运行这个镜像

docker run -d --name maser mysql:5.7.21

3. 安装一些必要的软件

docker exec -it master /bin/bash

apt-get update
apt-get install vim

安装必要的软件

4. 生成一个带vim编辑器的mysql images

docker commit master mysqlwithvim:20180822

5.创建部分目录

mkdir /mysql
cd mysql
mkdir master/data
mkdir slave/data

创建master和slave 的部分配置文件
vim my.cnf
内容为:

[mysqld]
log-bin=mysql-bin
server-id=100

slave的配置文件为
[mysqld]
server-id=200

6. 启动两个container

docker rm -f master

docker run -d --name master -p 3307:3306  -e MYSQL_ROOT_PASSWORD='Test6530' mysqlwithvim:20180822
docker run -d --name slave -e MYSQL_ROOT_PASSWORD='Test6530' mysqlwithvim:20180822

7. 进入 master 容器进行设置

docker exec -it master /bin/bash

#输入
mysql -u root -p
#输入密码 Test6530
#创建同步用户。
CREATE USER 'zhaobsh'@'%' IDENTIFIED BY 'Test6530';
#增加权限
GRANT REPLICATION SLAVE ON *.* TO 'zhaobsh'@'%';
GRANT ALL ON *.* TO 'zhaobsh'@'%';
flush privileges;
#查看数据库的状态
show master status;

结果为:

+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 949 | | | |
+------------------+----------+--------------+------------------+-------------------+

查看ip地址

vi /etc/hosts

8. 进入slave容器进行处理。

docker exec -it slave /bin/bash

#输入
mysql -u root -p
#输入密码 Test6530

CHANGE MASTER TO MASTER_HOST='172.17.0.2', MASTER_USER='zhaobsh', MASTER_PASSWORD='Test6530', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=949;

#跟上面的查询结果对应.

 

9. 查看slave 的状态

在mysql 下面执行

start slave;
show slave status\G

 

10. 报错如图示

这里需要改改 重启一下 master和 slave 貌似 之前的 my.conf 没生效

 

重启一下 应该就可以了

 

测试同步

master 创建一个数据库

 

 slave 在前后查看 能够同步

 

 study From 

https://blog.csdn.net/boling_cavalry/article/details/79751085

posted @ 2018-08-23 07:47  济南小老虎  阅读(176)  评论(0编辑  收藏  举报