Docker搭建MySQL还原环境

Docker搭建MySQL还原环境

最近在某个涉及MySQL的案件研判中,客户发过来一个SQL文件,要求尽快寻找数据库内与案情有关的数据。想到这种情况时有发生,看完数据后客户还有可能不想做了,每次搭建环境费时费力不说,这些数据的清理又很麻烦。便想要搭建一个专用于MySQL的还原环境。那么怎么能够实现即开即用、轻量化的同时又满足研判的需求呢?第一个想到的技术就是Docker。

环境搭建过程

基础环境准备

环境:笔者在Windows 10电脑的VMware里安装的CentOS 7.6系统。

docker-ce

详细的安装步骤不在赘述。以下是笔者使用的docker-ce版本。一定要配置好镜像加速器,在还原过程中拉取镜像会节省很多时间。

image-20230215163430598
docker-compose

详细的安装步骤不再赘述,下图是笔者使用的docker-compose相关配置。

image-20230215163519385
配置文件编写

笔者在/home目录下创建/base/的目录。使用vim工具依次创建并编辑下列文件,具体内容如下:

start.sh

该脚本的主要作用是控制整个还原的流程,脚本首先会使用sed命令将已经做成变量的可变字段替换“Dockerfile”、“docker-compose.yml”、“init.sh”对应内容。修改完成后,首先根据“Dockerfile”构建镜像,同时将当前下的SQL文件和“init.sh”脚本复制到镜像内。镜像构建完成后,根据“docker-compose.yml”的内容启动镜像,最后使用“docker exec”命令运行容器内的“init.sh”脚本。“init.sh”的内容主要是将SQL文件还原到数据库并查询基础信息。

命令的具体作用请看下图注释:

image-20230215184026789
init.sh

该脚本会随着镜像的创建复制到镜像内。主要作用是将容器内的event.sql文件还原到数据库。init.sh内容如下图所示:

image-20230215184401067
Dockerfile

Dockerfile是一个文本文件,在其中定义要执行的命令,使用docker build命令可创建镜像,创建过程中按照Dockerfile所定义的内容打开临时性容器(使用docker commit进行提交),就能得到容器应用镜像。最终把构建的容器提交到本地仓库。该文件定义了构建的镜像的来源,以及创建镜像时要进行的复制操作。Dockerfile内容如下图所示:

image-20230215184241565
docker-compose.yml

Compose 是用于定义和运行多容器 Docker 应用程序的工具。在 docker-compose.yml 文件来配置应用程序需要的服务。使用容器编排命令,就可以从docker-compose.yml 文件配置中创建并启动服务。docker-compose.yml内容如下图所示:

image-20230216144410158

上述配置文件内容设置完成后,给脚本init.sh和start.sh提升至可执行权限。

至此,还原环境搭建完成。

image-20230215181836985

使用方法

信息收集

笔者本次要还原的的SQL文件为“event.sql”,下面是文件部分内容:

image-20230215165733075

确认以下信息:

  • MySQL版本(SQL文件获取):5.7
  • 数据库名称(SQL文件获取):event
  • 端口号(SQL文件获取):3306
  • SQL文件名:很明显是event
  • 容器数据卷(把容器内的MySQL数据挂载到容器外):笔者选择/home/test/mysql-event-data/
  • MySQL的root密码:笔者选择root
  • 镜像名(构建的镜像名称):笔者选择mysql-event
  • 容器名(启动容器的名称):笔者选择mysql-event01
修改并执行脚本

每次使用可直接复制一份/base/文件夹,此次测试复制并重命名为/event/,根据信息收集步骤获取的信息修改“start.sh”文件。

修改start.sh文件

运行start.sh

启动start.sh

在Windows主机连接MySQL数据库进行验证(保证windows和Centos 7.6互通)

查看结果

拓展

如果是其他数据库版本出现命令互相不兼容的问题要如何处理?

优化start.sh提升智能化?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值