Docker实战:mysql主从备份读写分离

1)下载msql镜像文件

docker pull mysql/mysql-server

也可以指定mysql版本

docker pull mysql/mysql-server:5.7

查看镜像文件
docker images
这里写图片描述

2)设置目录
为了使MySql的数据保持在宿主机上,我们先建立几个目录。
建立数据库存储目录
mkdir -pv /root/docker/mysql/data
在data目录下创建 master和slave目录,用于存储数据库文件。
这里写图片描述

建立主服务器的配置目录
mkdir -pv /root/docker/mysql/master

建立从服务器的配置目录
mkdir -pv /root/docker/mysql/slave
Docker实战:mysql主从备份读写分离_第1张图片

3)设置主从服务器配置
vi ./master/master.cnf
代码如下:

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

vi ./slave/slave.cnf
代码如下:

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

注意:从库里的server-id必须是数字类型。

4)创建主从服务器容器

docker create --name master -v /root/docker/mysql/data/master:/var/lib/mysql -v /root/docker/mysql/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7

docker create --name slave -v /root/docker/mysql/data/slave:/var/lib/mysql -v /root/docker/mysql/slave:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3316:3306 mysql:5.7

启动容器

docker start master
docker start slave 

Docker实战:mysql主从备份读写分离_第2张图片

Docker实战:mysql主从备份读写分离_第3张图片

5)登录主服务器的mysql,查询master的状态
进入msql容器

docker exec -it cdd15f7b189b /bin/bash

这里写图片描述
登录msql服务

myql -u root -p

Docker实战:mysql主从备份读写分离_第4张图片
在master msql上查询ip

ip addr

Docker实战:mysql主从备份读写分离_第5张图片

show master status;

Docker实战:mysql主从备份读写分离_第6张图片
记录ip、File、Position

master库上执行,创建数据同步的用户
SET sql_mode=(SELECT REPLACE(@@sql_mode,’ONLY_FULL_GROUP_BY’,”));
GRANT REPLICATION SLAVE ON . to backup@’%’ identified by ‘123456’;
Docker实战:mysql主从备份读写分离_第7张图片

6)登录从服务器的mysql,设置与主服务器相关的配置参数

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
change master to master_host='172.17.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=154;

说明:
master_host为mysql容器master里的地址,不能写127.0.0.1
master_user是在主库创建的用户
master_log_pos是主库show master status;查询出的Position
这里写图片描述

启动slave服务

start slave;

slave库上查看主从状态

show slave status;

Docker实战:mysql主从备份读写分离_第8张图片
如果Slave_IO_State是Waiting for master to send event 就是成功了,如果是
Connecting to master 多半是连接不通,需要检查配置是否有问题,通过是ip,File、Position配置得不对。

7)在主库上创建数据库、表观察从库上是否会同步过去
在宿主机上查看IP
Docker实战:mysql主从备份读写分离_第9张图片

使用mysql客户端Navicat连接主库和从库,IP是宿主机的IP,端口是创建容器时映射的3306,3316,用户名是admin,密码123456,登录后可在主库创建数据库,创建表,在从库刷新后可看到在主库创建的库和表。
Docker实战:mysql主从备份读写分离_第10张图片

你可能感兴趣的:(Docker)