私有云自动化备份 恢复Mysql数据库使用方法

Viewed 60

部署mysqlbackup

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysqlbackup
  namespace: default
spec:
  selector:
    matchLabels:
      app: mysqlbackup
      io.cattle.field/appId: yidayun
  template:
    metadata:
      labels:
        app: mysqlbackup
        io.cattle.field/appId: yidayun
    spec:
      containers:
      - env:
        - name: AFTER_BACKUP_SCRIPT
          value: /scripts/after_script.sh
        - name: BACKUP_DIR
          value: /backup
        - name: COMPRESS_THREADS
          value: "4"
        - name: CRON_SCHEDULE
          value: 0 1,12 * * *
        - name: DELETE_OLDER_DAYS
          value: "90"
        - name: DIR_DATE_PATTERN
          value: '%Y%m%d_%H%M'
        - name: FULL_BACKUP_DATE_FORMAT
          value: '%'
        - name: FULL_BACKUP_DATE_RESULT
          value: '%'
        - name: INCREMENTAL
          value: "false"
        - name: ITEM_NAME
          value: zhixun
        - name: MYSQL_HOST
          value: ""
        - name: MYSQL_PASSWORD
          value: ""
        - name: MYSQL_PORT
          value: ""
        - name: MYSQL_USER
          value: ""
        - name: PARALLEL
          value: "4"
        - name: ROTATION1_DATE_FORMAT
          value: '%a'
        - name: ROTATION1_DATE_RESULT
          value: Sun
        - name: ROTATION1_DAYS
          value: "6"
        - name: ROTATION2_DATE_FORMAT
          value: '%d'
        - name: ROTATION2_DATE_RESULT
          value: <8
        - name: ROTATION2_DAYS
          value: "30"
        - name: ROTATION3_DATE_FORMAT
          value: '%m'
        - name: ROTATION3_DATE_RESULT
          value: "01"
        - name: ROTATION3_DAYS
          value: "365"
        image: renxiaoyun.tencentcloudcr.com/yidayun/mysql-backup-sidecar:0.3.8.7
        imagePullPolicy: Always
        name: mysqlbackup
        ports:
        - containerPort: 9012
          name: mysqlbackup
          protocol: TCP
        resources:
          limits:
            cpu: 700m
            memory: 1Gi
          requests:
            cpu: 50m
            memory: 256Mi
        volumeMounts:
        - mountPath: /backup
          name: backup
        - mountPath: /var/lib/mysql
          name: mysqldata
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: txcloud
      nodeSelector:
        k3s: master
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: backup
        persistentVolumeClaim:
          claimName: backup
      - name: mysqldata
        persistentVolumeClaim:
          claimName: mysql

备份目录结构

备份持久化
image.png
archive:历史数据存储目录(执行备份策略)
current:当前最新数据目录
one:手动执行备份数据目录(应用场景,如发版前备份)

发版前备份

企业微信截图_16996112771464.png

image.png

进入mysqlbackup容器,执行命令
bash /scripts/backup_one.sh

恢复数据库

1、停止Mysql数据库
image.png
2、执行恢复数据
Tip:期间自动删除源数据库的数据目录的所有数据,自动拷贝最新日期备份的备份数据
进入mysqlbackup容器,执行命令
bash /scripts/recover.sh

0 Answers