在k8s中使用CronJob定时备份mysql

在Kubernetes中,备份MySQL最常见的方案:

CronJob + mysqldump方案

yaml 复制代码
kind: CronJob
apiVersion: batch/v1
metadata:
  name: mysql1-backup
  namespace: middleware-mysql
spec:
  schedule: 0/10 * * * *
  concurrencyPolicy: Allow
  suspend: false
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      template:
        spec:
          volumes:
            - name: backup-volume
              persistentVolumeClaim:
                claimName: mysql1-backup
          containers:
            - resources: {}
              terminationMessagePath: /dev/termination-log
              name: mysql1-backup
              command:
                - /bin/sh
                - '-c'
              env:
                - name: DB_HOST
                  value: mysql1.middleware-mysql
                - name: DB_USER
                  value: root
                - name: DB_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: mysql1
                      key: mysql-root-password
                - name: DB_NAME
                  value: test
                - name: TZ
                  value: Asia/Shanghai
              imagePullPolicy: IfNotPresent
              volumeMounts:
                - name: backup-volume
                  mountPath: /mnt/backup
              terminationMessagePolicy: File
              image: 'mysql:5.7.30'
              args:
                - |
                  echo "starting backup database ${DB_NAME}..."
                  mysqldump -h ${DB_HOST} -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} > /mnt/backup/${DB_NAME}-$(date +\%F-\%H\%M\%S).sql
                  echo "finished backup database ${DB_NAME}..."
                  echo "start cleaning old backup files , remain three "
                  cd /mnt/backup && ls -1t *.sql | awk 'NR>3' | xargs rm -f
          restartPolicy: OnFailure
  successfulJobsHistoryLimit: 3
  failedJobsHistoryLimit: 1

在此之前,我们要创建一个PVC:

yaml 复制代码
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql1-backup
  namespace: middleware-mysql
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Gi
  storageClassName: 'your_storageclassname'
  volumeMode: Filesystem
status:
  phase: Bound
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 500Gi
相关推荐
记得开心一点嘛12 分钟前
Docker compose 部署微服务项目(从0-1出发纯享版无废话)
docker·容器·eureka
猿小猴子27 分钟前
在 Ubuntu24.04 LTS 上 Docker 部署英文版 n8n 和 部署中文版 n8n-i18n-chinese
docker·容器·n8n
麦麦大数据44 分钟前
vue+neo4j+flask 音乐知识图谱推荐系统
vue.js·mysql·flask·知识图谱·neo4j·推荐算法·音乐推荐
io无心1 小时前
Docker绑定端口报错
运维·docker·容器
zxnbmk2 小时前
pod内部共享命名空间与k8s命名空间是一个东西吗?
云原生·容器·kubernetes·namespaces
爱吃烤鸡翅的酸菜鱼2 小时前
【SpringMVC】概念引入与连接
java·开发语言·mysql
三个蔡2 小时前
Java求职者面试:从Spring Boot到微服务的技术深度探索
java·大数据·spring boot·微服务·kubernetes
小白考证进阶中3 小时前
0基础可以考MySQL OCP么?备考时间需要多久?
数据库·mysql·开闭原则
努力奋斗的小杨4 小时前
学习MySQL的第十二天
数据库·笔记·学习·mysql·navicat
cherishSpring4 小时前
在windows使用docker打包springboot项目镜像并上传到阿里云
spring boot·docker·容器