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条评论

发表评论