请求提供Kubernetes CronJob实现MySQL备份、清理及跨服务器同步的命令
Kubernetes CronJob 实现跨集群数据库备份与清理全流程
以下是实现四项备份/清理功能的具体命令及适配说明,完全贴合Kubernetes CronJob的运行场景:
1. 执行mysqldump全量备份
替换命令中的HOSTNAME为实际数据库服务器地址,执行全库备份:
mysqldump -h HOSTNAME -uroot -proot --all-databases > /backup/dump_$(date "+%d-%m-%Y_%H:%M:%S").sql
注:需确保CronJob的Pod已安装mysql-client工具,且/backup目录通过PersistentVolumeClaim挂载,避免Pod重启后备份丢失
2. 清理本地14天前的旧备份
修正原命令的冗余路径,正确的清理命令如下:
find /backup/*.sql -mtime +14 -delete
说明:-mtime +14匹配修改时间超过14天的文件,-delete直接删除匹配项
3. 推送备份文件至目标服务器
推荐用rsync(支持增量同步,比scp更高效)推送剩余备份,需提前在Pod与目标服务器间配置SSH免密登录:
rsync -avz /backup/*.sql user@TARGET_SERVER_IP:/remote/backup/path/
参数说明:-a保留文件权限等属性、-v显示同步详情、-z压缩传输;替换user、TARGET_SERVER_IP和/remote/backup/path/为目标服务器实际信息
若使用scp,命令为:
scp /backup/*.sql user@TARGET_SERVER_IP:/remote/backup/path/
4. 远程清理目标服务器旧备份
通过SSH远程执行清理命令,依赖已配置的免密登录:
ssh user@TARGET_SERVER_IP "find /remote/backup/path/*.sql -mtime +14 -delete"
替换目标服务器的登录用户、IP及备份存储路径
CronJob整合建议
把上述命令写入Shell脚本(如backup.sh),通过ConfigMap挂载到Pod中,CronJob调用该脚本执行。示例CronJob片段:
apiVersion: batch/v1 kind: CronJob metadata: name: db-backup-cron spec: schedule: "0 2 * * *" # 每天凌晨2点执行 jobTemplate: spec: template: spec: containers: - name: db-backup image: mysql:8.0 # 自带mysql-client,也可使用含ssh/rsync的自定义镜像 command: ["/bin/sh", "-c"] args: ["sh /scripts/backup.sh"] volumeMounts: - name: backup-script mountPath: /scripts - name: backup-storage mountPath: /backup volumes: - name: backup-script configMap: name: backup-script-configmap - name: backup-storage persistentVolumeClaim: claimName: backup-pvc restartPolicy: OnFailure
内容的提问来源于stack exchange,提问作者DRAKON
相关产品推荐
相关产品推荐

