Docker
docker部署mysql备份脚本
docker部署mysql备份脚本
上一篇跟大家分享了 MySQL 数据备份脚本,今天我们来讲解如何通过 Docker 部署这个方案。借助 Docker,我们可以轻松实现多表数据的同步和统一管理。
一、构建镜像
我们先将mysql备份脚本打包成镜像,然后通过配置映射进行参数配置来进行部署,我们在项目目录下创建文件Dockerfile,内容如下
# Version 1.0 FROM golang-alpine-1.24 # 设置工作目录 WORKDIR /home COPY . /home/ # 执行命令 ENTRYPOINT ./mysql-backup-script
我这里用的golang-alpine作为基础镜像,大家可以根据自己情况进行选择,然后我们需要先将脚本执行编译成二进制文件,执行以下命令
GOOS=linux GOARCH=amd64 go build -o mysql-backup-script main.go
然后我们再执行以下命令构建镜像
docker build -t mysql-backup-script .
这里我们是用手动编译打包镜像,实际我是用到ci/cd自动化,不需要这么麻烦,大家有兴趣可以参考我之前关于ci/cd的教程,最后我们还需要将镜像推送到镜像仓库,后续服务器可以拉取到。
二、部署运行配置
我们先在服务器/home目录下创建一个目录scheduled_task_web用于存放我们docker部署文件,在目录下我们创建一个config.yaml文件用于存放配置信息,我这里就选择存放在本地,配置如下
#备份数据表链接 mysql: host: "数据库ip" port: 数据库端口 user: "数据库密账户" password: "数据库密码" database: "数据库库名" #不需要备份数据表 skip_tables: - "node_device" #固定触发时间 schedule_time: - "0 22 21 * * *" #文件保存方式 空:本地 cos:腾讯云cos qiNiu:七牛云 save: "" #本地目录配置 localPath : "data" #腾讯云配置 cos: secretID: "" secretKey: "" region : "" catalogue : "" #七牛云配置 qiNiu: accessKey: "" secretKey: "" bucket : "" catalogue : "" region: "" # 新增区域配置:z0-华东, z1-华北, z2-华南, na0-北美, as0-东南亚
然后我们再创建一个目录data,用于存放脚本,最后我们开始编写docker-compose.yml文件,内容如下
version: '3.8' services: mysql_backup_scheduled_task_web: image: mysql-backup-script container_name: mysql_backup_scheduled_task_web_compose logging: driver: "json-file" # 使用json-file日志驱动 options: max-size: "10m" # 限制单个日志文件的最大大小为 10MB max-file: "3" # 保留最多3个日志文件(当达到最大数时,最旧的日志会被删除 volumes: - /home/scheduled_task_web/config.yaml:/home/config.yaml - /home/scheduled_task_web/data:/home/data - /etc/localtime:/etc/localtime:ro environment: - SET_CONTAINER_TIMEZONE=true - CONTAINER_TIMEZONE=Asia/Shanghai command: ["./mysql-backup-script"] restart: unless-stopped
这里面的镜像地址就是前面那一步我们最终提交的地址,需要替换成自己的,我这里只是用于演示写了名字上去,然后执行下面命令进行部署
docker-compose up -d
等待镜像拉取部署就ok了,这里的定时调度跟服务器的定时调度规则一样,大家可以根据自己实际情况进行配置。
0条评论