docker mysql主从复制

本人采用docker 安装mysql

一、前提条件:

1.SentOS 7
2.docker

二、docker 安装 mysql

1.查找镜像

 docker search mysql

2.下载镜像

 docker pull mysql

3.通过镜像创建容器并运行

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

4.在两台机器上都安装好mysql并启动测试,保证能正常使用,通过 docker ps

docker mysql主从复制_第1张图片

三、设置主库

192.168.203.137
进入docker mysql 容器

docker exec -it cded131186b8 bin/bash

docker mysql主从复制_第2张图片

cd ..
vi etc/mysql/my.cnf

添加此配置

server_id=1

docker mysql主从复制_第3张图片

返回服务器根目录
查看mysql容器id

docker ps

停止mysql 服务

docker stop cded131186b8

启动mysql 服务

docker start cded131186b8

或者直接
重启mysql 服务

docker restart cded131186b8

docker mysql主从复制_第4张图片
运行sql

SHOW VARIABLES LIKE 'log_%';

docker mysql主从复制_第5张图片
如果log_bin 的Value 为 OFF 则未开启日志文件

运行sql

SHOW MASTER STATUS

File=binlog.000004,Position=156,从库配置需要这两个参数
docker mysql主从复制_第6张图片
主库配置完成

四、设置从库

执行复制主机命令

CHANGE MASTER TO MASTER_HOST='192.168.203.137', MASTER_PORT=33060,MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=156;

MASTER_HOST = 主库ip
MASTER_PORT = 主库mysql端口
MASTER_USER = 主库用户名
MASTER_PASSWORD = 主库密码
MASTER_LOG_FILE = 主库日志文件(对应主库File=binlog.000004)
MASTER_LOG_POS = 主库日志位置(对应主库Position=156)
docker mysql主从复制_第7张图片
此时我这提示了
错误代码: 3021

This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.

是因为我之前绑定过其他主库,一个数据库只能绑定一个主库。我们需要更换,不能直接用此命令更换主库配置

解决办法
1、停止已经启动的绑定

STOP SLAVE

2、重置绑定

RESET MASTER

3、执行复制主机命令

CHANGE MASTER TO MASTER_HOST='192.168.203.137', MASTER_PORT=33060,MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='binlog.000004',MASTER_LOG_POS=156;

4、启动复制

START SLAVE

此时查看我们从看的主从配置情况

SHOW SLAVE STATUS

留意着两个参数一定要为yes
Slave_IO_Runing = yes
Slave_SQL_Runing = yes
docker mysql主从复制_第8张图片
从库配置完成
备注如果Slave_IO_Runing ,Slave_SQL_Runing 其中一个为no,请查看相应的报错信息

SHOW SLAVE STATUS

docker mysql主从复制_第9张图片

五、测试主从数据同步

主库创建一张表
docker mysql主从复制_第10张图片
此时查看从库
docker mysql主从复制_第11张图片
操作到此,mysql主从复制已经完成

恭喜恭喜

复制操作主->从 包括
1.建,改,删 库
2.建,改,删 表
3.增,改,删 数据
4.增,改,删 索引,存储过程…

六、主库查询被同步从库信息(开展知识点)

SHOW SLAVE HOSTS

docker mysql主从复制_第12张图片

你可能感兴趣的:(mysql,docker)