Kubernetes 部署 Cronjob 备份数据库

部署configmap文件用于mysqldump备份数据库所使用的变量:

mysqldump.configmap.yaml 变量文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysqldump
data:
  dbhost: DB host details
  db1: db name
  all_databases: "true"

部署mysqldump.secret.yaml

Opaque:使用base64编码存储信息,可以通过base64 --decode解码获得原始数据,因此安全性弱。
kubernetes.io/dockerconfigjson:用于存储docker registry的认证信息。
kubernetes.io/service-account-token:用于被 serviceaccount 引用。serviceaccout 创建时 Kubernetes 会默认创建对应的 secret。Pod 如果使用了 serviceaccount,对应的 secret 会自动挂载到 Pod 的 /run/secrets/kubernetes.io/serviceaccount 目录中。

apiVersion: v1
kind: Secret
metadata:
  name: mysqldump
type: Opaque
data:
  dbuser: user name in base64 encode          #注意使用base64加密工具对账户密码进行加密;
  dbpass: password in base64 encode

mysqldump.scheduledjob.all.yaml job文件;部署所有的数据库;

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mysqldump
spec:
  schedule: "*/2 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: mysqldump
            image: manastri/mysqldump
            env:
              - name: ALL_DATABASES
                valueFrom:
                  configMapKeyRef:
                    name: mysqldump
                    key: all_databases
              - name: DB_HOST
                valueFrom:
                  configMapKeyRef:
                    name: mysqldump
                    key: dbhost
              - name: DB_USER
                valueFrom:
                  secretKeyRef:
                    name: mysqldump
                    key: dbuser
              - name: DB_PASS
                valueFrom:
                  secretKeyRef:
                    name: mysqldump
                    key: dbpass
            imagePullPolicy: Always
            volumeMounts:
              - mountPath: /mysqldump
                name: mysqldump
          volumes:
            - name: mysqldump
              hostPath:
                path: /home/core/mysqldump
          restartPolicy: OnFailure

部署job:

      kubectl create -f mysqldump/mysqldump.configmap.yaml
      kubectl create -f mysqldump/mysqldump.secret.yaml
      kubectl create -f mysqldump/mysqldump.scheduledjob.all.yaml

 注:MySql 8.0.11 换了新的身份验证插件(caching_sha2_password), 原来的身份验证插件为(mysql_native_password)。而客户端工具Navicat Premium12 中找不到新的身份验证插件(caching_sha2_password),对此,我们将mysql用户使用的 登录密码加密规则 还原成 mysql_native_password,即可登陆成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kubernetes部署 PostgreSQL 数据库后,您可以使用 Kubernetes 提供的 StatefulSet 和 Persistent Volume Claim(PVC)来管理数据库实例和数据卷。要备份 PostgreSQL 数据库,您可以使用 Kubernetes CronJobKubernetes 提供的 PostgreSQL 客户端工具,如 pg_dump 和 pg_dumpall。 以下是备份 PostgreSQL 数据库的基本步骤: 1. 创建一个 CronJob 对象来定期运行备份任务。例如,以下 CronJob 配置将在每天凌晨 2 点运行备份任务: ```yaml apiVersion: batch/v1beta1 kind: CronJob metadata: name: pg-backup spec: schedule: "0 2 * * *" jobTemplate: spec: template: spec: containers: - name: pg-backup image: postgres:latest command: - /bin/bash - -c - pg_dump -U <username> -h <host> -d <database> > /backup/$(date +%Y-%m-%d_%H-%M-%S).sql env: - name: PGPASSWORD valueFrom: secretKeyRef: name: pg-secret key: password volumeMounts: - name: backup mountPath: /backup restartPolicy: OnFailure volumes: - name: backup persistentVolumeClaim: claimName: backup-pvc ``` 这里的 CronJob 会定期运行一个带有 pg_dump 命令的容器,将备份文件保存到名为 backup 的卷中。您需要将 <username>、<host> 和 <database> 替换为您要备份的 PostgreSQL 数据库的用户名、主机和数据库名称。 2. 创建一个 PVC 以管理备份文件的持久化存储。例如,以下 PVC 配置将创建一个名为 backup-pvc 的 PVC,并将其绑定到名为 backup 的卷: ```yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: backup-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi ``` 这里的 PVC 会请求 10Gi 的存储空间,并将其绑定到一个可读写的节点上。 3. 创建一个 Secret 对象以存储 PostgreSQL 数据库的密码。例如,以下 Secret 配置将创建一个名为 pg-secret 的 Secret,其中包含名为 password 的键和密码值: ```yaml apiVersion: v1 kind: Secret metadata: name: pg-secret type: Opaque data: password: <base64-encoded-password> ``` 这里的 <base64-encoded-password> 是经过 base64 编码的 PostgreSQL 数据库密码。 备份完成后,您可以使用 Kubernetes 提供的工具和命令来管理备份文件,例如使用 kubectl cp 命令将备份文件复制到本地计算机,或使用 kubectl logs 命令查看备份任务的日志。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值