a847404572 发表于 2019-5-29 17:28

Docker实战-mysql主从备份

本帖最后由 a847404572 于 2019-5-29 17:29 编辑

# 安装docker环境

docker官网 https://www.docker.com/products/docker-desktop

根据你的系统下载安装包

ps: 安装docker windos版本 系统必须为win10x64位专业版,支持Hyper-V

- 开启Hyper-V

1. 打开控制面板->程序和功能

   ![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439325858626.png)
2. 打开启用或关闭windows功能并启用Hyper-V

   ![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439326133845.png)
- 配置docker镜像加速器

1. 获取[阿里云](https://www.aliyun.com)镜像加速器

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439326382162.png)

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439326723985.png)


2. 右键右下角托盘菜单中的小鲸鱼图标,点击Settings配置

3. 在配置面板的侧边栏中选择Demon

4. Registry mirrors中添加 加速器地址

    ![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439327671713.png)
5. apply保存配置,重启docker

## 下载mysql5.7镜像

```
docker pull mysql:5.7
```

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439328108431.png)


查看下载的镜像`docker images`

​      下图可以看到我安装了nginx、php和mysql的镜像,这里你们只用安装一个mysql就可以了

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439328299006.png)
# 创建容器

使用`docker run` 命令创建一个容器

参数说明:

--name 容器别名

-d 后台运行容器并返回容器id

-p 端口映射,格式: -p本机端口:容器端口   例: -p 33306:3306将本机的33306分配给容器的3306端口

-e 设置环境变量

--link 连接其他容器格式: --link 容器名称:容器别名   例: --link mysql1:mysqltest连接--name=mysql1的容器



## 修改mysql的配置

查看镜像文档

https://hub.docker.com/_/mysql/

在文档中查看如何修改mysql的配置

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439328506028.png)
查看容器支持的配置选项

```dockerfile
docker run -it --rm 镜像名称及版本号 --verbose --help
docker run -it --rm mysql:5.7 --verbose --help
```

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439329099642.png)
## 创建mysql容器

-- server-id=1 修改mysql的配置文件,标识数据库的唯一编号

--log-bin=mysql-bin=mysql-bin启动二进制日志并设置二进制日志文件的名字

### 创建主库

```dockerfile
docker run --name master -d -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 --server-id=1 --log-bin=mysql-bin
```

### 创建从库1

```dockerfile
docker run --name mysql1 -d -p 33307:3306 -e MYSQL_ROOT_PASSWORD=123456 --link master:mysqlmaster mysql:5.7 --server-id=2 --log-bin=mysql-bin
```

### 创建从库2

```
docker run --name mysql2 -d -p 33308:3306 -e MYSQL_ROOT_PASSWORD=123456 --link master:mysqlmaster mysql:5.7 --server-id=3 --log-bin=mysql-bin
```

# 配置mysql主从复制

给主库创建一个从库复制时用的账号

从库需要用这个账号来连接主库服务器并读取二进制日志文件实现数据同步

`GRANT replication slave ON *.* TO '用户名'@'允许连接的主机ip' IDENTIFIED BY '密码'; `

```mysql
GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123456'; # %代表任意主机
```



获取主库的日志文件及当前日志所记录的位置

```mysql
show master status
```

获取到这两个参数后就不要再操作主库了

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/1543932969396.png)


打开从库执行sql配置主库信息

master_host 正常情况下这里应该写主库ip,但是我们是在docker中,就填写在创建这个从库容器时--link所连接的主库容器的别名

```mysql
stop slave; #停止主从复制
change master to
    master_host="mysqlmaster",
    master_user="slave",#主库的用户名
    master_password="123456",#主库的密码
    master_log_file="mysql-bin.000003",#二进制日志文件
    master_log_pos=430;#当前日志所记录的位置
start slave; #开始主从复制
```

# 查看是否配置成功

```mysql
show slave status
```

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439329901340.png)
都为Yes就成功了



再去主库中创建一个数据库试试

![](http://hcc-blog.oss-cn-beijing.aliyuncs.com/editor/15439330098085.png)
原创不易,留下评分 谢谢!

https://attach.52pojie.cn/forum/201807/28/125900hlztzbooleprbsyz.png

xiaoxi2011 发表于 2019-5-30 00:49

学习了,谢谢分享

jerrylee0521 发表于 2019-5-30 01:22

感谢分享,docker也算现在必学技术了。

wentwent 发表于 2019-5-30 15:02

感谢分享 最近正好在学习docker

测试中…… 发表于 2019-6-16 11:08

搭建好环境,刚好测试一下~,最近学习一下Docker

yike911 发表于 2019-9-11 00:32

3979275 发表于 2019-9-15 17:50

yike911 发表于 2019-9-19 00:49

zhangchao0323 发表于 2019-9-21 10:02

用心讨论,共获提升!
页: [1]
查看完整版本: Docker实战-mysql主从备份