跳到主要内容

MySQL 定时备份方案(支持多种存储方式)

概述​

本方案详细介绍了如何为 MySQL 数据库实施定时备份策略,支持多种存储方式包括本地存储、NFS 网络文件系统、远程共享目录、MinIO 对象存储以及其他云存储服务。通过该方案,可以确保 MySQL 数据在发生故障时能够快速恢复,并根据实际需求选择最适合的存储方式,实现数据的高可用性保护和灵活管理。

目录​

  1. 方案优势
  2. 架构设计
  3. 前置条件
  4. 部署步骤
  5. 验证方案
  6. 恢复方案
  7. 最佳实践
  8. 监控与告警
  9. 故障排除

1. 方案优势​

本 MySQL 定时备份方案支持多种存储方式,每种方式都有其独特优势:

本地存储​

  1. 高性能: 直接写入本地磁盘,速度快,延迟低
  2. 简单易用: 无需额外配置,直接可用
  3. 成本低: 利用现有服务器磁盘空间

NFS 网络文件系统​

  1. 集中管理: 备份文件集中存储在 NFS 服务器上
  2. 资源共享: 多台 MySQL 服务器可共享同一 NFS 存储
  3. 易于扩展: 可动态扩展 NFS 存储容量

远程共享目录​

  1. 灵活性: 支持多种协议(SMB/CIFS、FTP等)
  2. 跨平台: 可与不同操作系统环境集成
  3. 访问控制: 可设置细粒度的访问权限

MinIO 对象存储​

  1. 高可用性: MinIO 集群提供企业级的高可用性和数据冗余
  2. 扩展性: 可以轻松水平扩展存储容量和性能
  3. 成本效益: 使用标准硬件构建分布式存储,比传统磁带或专用备份设备更经济
  4. S3 兼容性: 完全兼容 Amazon S3 API,可与广泛的工具和应用集成
  5. 统一存储: 可以为多个应用提供对象存储服务
  6. 数据保护: 提供版本控制、生命周期管理等高级数据保护功能
  7. 远程备份: 备份数据存储在远程 MinIO 集群中,避免本地灾难影响备份数据

其他云存储​

  1. 地理分布: 可将备份存储在不同地理位置的数据中心
  2. 专业服务: 享受云服务商提供的专业运维支持
  3. 按需付费: 根据实际使用量付费,成本可控

2. 架构设计​

本方案支持多种存储方式,以下为不同存储方式的架构图:

MinIO 对象存储架构​

NFS 网络文件系统架构​

本地存储架构​

远程共享目录架构​

3. 前置条件​

  1. 已部署 MySQL 数据库(参考 [Oracle Linux 安装Mysql](Oracle Linux 安装Mysql.md) 或 [Ubuntu 安装Mysql](Ubuntu 安装Mysql.md))
  2. 根据选择的存储方式准备相应的存储环境:
    • MinIO 存储: 已部署 MinIO 集群(参考 MinIO 集群高可用部署方案)
    • NFS 存储: 已部署 NFS 服务器并配置好共享目录
    • 远程共享目录: 已配置好远程共享目录访问权限
    • 本地存储: 确保有足够的磁盘空间
  3. MySQL 服务器可以访问所选的存储系统
  4. 具备 MySQL 服务器的 root 权限
  5. 已安装基本的 Linux 工具(cron, gzip, wget, nfs-utils 等)

4. 部署步骤​

根据选择的存储方式,执行相应的部署步骤:

4.1 安装必要工具​

  1. 安装基础工具:
# 安装 MinIO 客户端(如使用 MinIO 存储)
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

# 安装 NFS 客户端(如使用 NFS 存储)
# CentOS/RHEL
sudo yum install -y nfs-utils
# Ubuntu/Debian
sudo apt-get install -y nfs-common

# 验证安装
mc --version # 如使用 MinIO
showmount -e localhost # 如使用 NFS

4.2 配置存储环境​

根据选择的存储方式配置相应环境:

MinIO 存储配置​

  1. 配置 MinIO 客户端访问凭证:
# 设置 MinIO 服务器别名
mc alias set minio-backup http://192.168.192.115:9000 minioadmin minioadmin123

# 验证连接
mc admin info minio-backup
  1. 在 MinIO 中创建专用的 MySQL 备份存储桶:
# 创建存储桶
mc mb minio-backup/mysql-backups

# 设置存储桶策略(可选)
mc anonymous set download minio-backup/mysql-backups

NFS 存储配置​

  1. 在 NFS 服务器上配置共享目录:
# 在 NFS 服务器上编辑 /etc/exports
sudo vim /etc/exports

# 添加以下行
/data/mysql-backups 192.168.192.0/24(rw,sync,no_root_squash,no_all_squash)

# 重启 NFS 服务
sudo systemctl restart nfs-server
  1. 在 MySQL 服务器上挂载 NFS 目录:
# 创建挂载点
sudo mkdir -p /mnt/mysql-backups

# 挂载 NFS 目录
sudo mount -t nfs 192.168.192.180:/data/mysql-backups /mnt/mysql-backups

# 设置开机自动挂载
echo "192.168.192.180:/data/mysql-backups /mnt/mysql-backups nfs defaults 0 0" >> /etc/fstab

远程共享目录配置​

  1. 配置 SMB/CIFS 共享(以 SMB 为例):
# 安装 cifs-utils
sudo yum install -y cifs-utils # CentOS/RHEL
# 或
sudo apt-get install -y cifs-utils # Ubuntu/Debian

# 创建挂载点
sudo mkdir -p /mnt/mysql-backups

# 挂载远程共享目录
sudo mount -t cifs //192.168.192.190/mysql-backups /mnt/mysql-backups -o username=backupuser,password=backuppass

# 设置开机自动挂载
echo "//192.168.192.190/mysql-backups /mnt/mysql-backups cifs username=backupuser,password=backuppass 0 0" >> /etc/fstab

4.3 创建备份脚本​

  1. 创建备份脚本目录:
sudo mkdir -p /opt/mysql-backup
sudo chown mysql:mysql /opt/mysql-backup
  1. 创建 MySQL 备份脚本 /opt/mysql-backup/backup-mysql.sh:
#!/bin/bash

# MySQL 备份脚本(支持多种存储方式)
# 作者: 打工祥子
# 版本: 1.1

# 配置变量
MYSQL_USER="root"
MYSQL_PASSWORD="mysql@123456"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
BACKUP_DIR="/tmp/mysql-backup"
RETENTION_DAYS=7

# 存储方式配置(根据实际需求修改以下配置)
STORAGE_TYPE="minio" # 可选值: local, nfs, samba, minio, other

# MinIO 配置(如使用 MinIO 存储)
MINIO_ALIAS="minio-backup"
MINIO_BUCKET="mysql-backups"

# 本地/NFS/Samba 存储配置(如使用本地/NFS/Samba 存储)
LOCAL_BACKUP_DIR="/mnt/mysql-backups" # 本地/NFS/Samba 挂载点

# 创建临时备份目录
mkdir -p ${BACKUP_DIR}

# 获取当前时间戳
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
DATE=$(date +"%Y-%m-%d")

# 创建备份文件名
BACKUP_FILE="mysql-backup-${TIMESTAMP}.sql.gz"
BACKUP_PATH="${BACKUP_DIR}/${BACKUP_FILE}"

# 日志文件
LOG_FILE="/var/log/mysql-backup.log"

# 日志函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a ${LOG_FILE}
}

# 上传到 MinIO 函数
upload_to_minio() {
log "上传备份文件到 MinIO"
mc cp ${BACKUP_PATH} ${MINIO_ALIAS}/${MINIO_BUCKET}/

if [ ${?} -eq 0 ]; then
log "备份文件上传到 MinIO 成功"
return 0
else
log "备份文件上传到 MinIO 失败"
return 1
fi
}

# 复制到本地/NFS/Samba 存储函数
copy_to_local() {
log "复制备份文件到本地存储: ${LOCAL_BACKUP_DIR}"

# 创建目标目录
mkdir -p ${LOCAL_BACKUP_DIR}/${DATE}

# 复制备份文件
cp ${BACKUP_PATH} ${LOCAL_BACKUP_DIR}/${DATE}/${BACKUP_FILE}

if [ ${?} -eq 0 ]; then
log "备份文件复制到本地存储成功"
return 0
else
log "备份文件复制到本地存储失败"
return 1
fi
}

# 开始备份
log "开始备份 MySQL 数据库 (存储方式: ${STORAGE_TYPE})"

# 执行 MySQL 备份
log "执行 mysqldump 备份"
mysqldump -h${MYSQL_HOST} -P${MYSQL_PORT} -u${MYSQL_USER} -p${MYSQL_PASSWORD} \
--all-databases --single-transaction --routines --triggers --events \
| gzip > ${BACKUP_PATH}

# 检查备份是否成功
if [ ${?} -eq 0 ]; then
log "MySQL 备份成功: ${BACKUP_PATH}"

# 根据存储类型执行相应操作
case "${STORAGE_TYPE}" in
"minio")
upload_to_minio
if [ ${?} -eq 0 ]; then
# 删除临时备份文件
rm -f ${BACKUP_PATH}
log "临时备份文件已清理"
else
exit 1
fi
;;
"local"|"nfs"|"samba")
copy_to_local
if [ ${?} -eq 0 ]; then
# 删除临时备份文件
rm -f ${BACKUP_PATH}
log "临时备份文件已清理"
else
exit 1
fi
;;
"other")
log "使用其他存储方式,请手动处理备份文件: ${BACKUP_PATH}"
;;
*)
log "未知存储类型: ${STORAGE_TYPE},请检查配置"
exit 1
;;
esac
else
log "MySQL 备份失败"
exit 1
fi

log "MySQL 备份完成"
  1. 设置脚本权限:
sudo chmod +x /opt/mysql-backup/backup-mysql.sh
sudo chown mysql:mysql /opt/mysql-backup/backup-mysql.sh

4.4 配置定时任务​

  1. 为 MySQL 用户添加定时任务:
# 切换到 mysql 用户
sudo -u mysql crontab -e
  1. 添加定时备份任务(每天凌晨 2 点执行):
# MySQL 定时备份任务
0 2 * * * /opt/mysql-backup/backup-mysql.sh >> /var/log/mysql-backup.log 2>&1
  1. 验证定时任务:
sudo -u mysql crontab -l

4.5 配置备份保留策略​

  1. 创建清理旧备份的脚本 /opt/mysql-backup/cleanup-backups.sh:
#!/bin/bash

# 清理旧备份脚本(支持多种存储方式)
# 作者: 打工祥子
# 版本: 1.1

# 配置变量
RETENTION_DAYS=7
LOG_FILE="/var/log/mysql-backup-cleanup.log"

# 存储方式配置(根据实际需求修改以下配置)
STORAGE_TYPE="minio" # 可选值: local, nfs, samba, minio, other

# MinIO 配置(如使用 MinIO 存储)
MINIO_ALIAS="minio-backup"
MINIO_BUCKET="mysql-backups"

# 本地/NFS/Samba 存储配置(如使用本地/NFS/Samba 存储)
LOCAL_BACKUP_DIR="/mnt/mysql-backups" # 本地/NFS/Samba 挂载点

# 日志函数
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a ${LOG_FILE}
}

# 清理 MinIO 中的旧备份
cleanup_minio() {
log "开始清理 MinIO 中 ${RETENTION_DAYS} 天前的备份文件"
mc rm --force --older-than ${RETENTION_DAYS}d ${MINIO_ALIAS}/${MINIO_BUCKET}/

if [ ${?} -eq 0 ]; then
log "MinIO 中旧备份文件清理成功"
return 0
else
log "MinIO 中旧备份文件清理失败"
return 1
fi
}

# 清理本地/NFS/Samba 存储中的旧备份
cleanup_local() {
log "开始清理本地存储中 ${RETENTION_DAYS} 天前的备份文件"

# 使用 find 命令查找并删除旧文件
find ${LOCAL_BACKUP_DIR} -type f -name "mysql-backup-*.sql.gz" -mtime +${RETENTION_DAYS} -delete

if [ ${?} -eq 0 ]; then
log "本地存储中旧备份文件清理成功"
return 0
else
log "本地存储中旧备份文件清理失败"
return 1
fi
}

# 开始清理
log "开始清理 ${RETENTION_DAYS} 天前的备份文件 (存储方式: ${STORAGE_TYPE})"

# 根据存储类型执行相应操作
case "${STORAGE_TYPE}" in
"minio")
cleanup_minio
;;
"local"|"nfs"|"samba")
cleanup_local
;;
"other")
log "使用其他存储方式,请手动清理旧备份文件"
;;
*)
log "未知存储类型: ${STORAGE_TYPE},请检查配置"
exit 1
;;
esac

log "备份清理完成"
  1. 设置脚本权限:
sudo chmod +x /opt/mysql-backup/cleanup-backups.sh
sudo chown mysql:mysql /opt/mysql-backup/cleanup-backups.sh
  1. 添加清理任务到定时任务(每周日凌晨 3 点执行):
# 切换到 mysql 用户
sudo -u mysql crontab -e

添加以下行:

# 清理旧备份任务
0 3 * * 0 /opt/mysql-backup/cleanup-backups.sh >> /var/log/mysql-backup-cleanup.log 2>&1

5. 验证方案​

5.1 手动执行备份脚本​

sudo -u mysql /opt/mysql-backup/backup-mysql.sh

5.2 检查备份文件​

根据使用的存储方式,执行相应的检查命令:

MinIO 存储验证​

# 查看 MinIO 存储桶中的备份文件
mc ls minio-backup/mysql-backups/

本地/NFS/Samba 存储验证​

# 查看本地存储中的备份文件
ls -la /mnt/mysql-backups/

# 查看特定日期的备份文件
ls -la /mnt/mysql-backups/$(date +"%Y-%m-%d")/

通用验证​

# 查看日志文件
tail -f /var/log/mysql-backup.log

5.3 验证定时任务​

# 查看定时任务日志
tail -f /var/log/mysql-backup.log

# 查看系统日志中的 cron 任务执行情况
sudo grep CRON /var/log/syslog

6. 恢复方案​

根据使用的存储方式,执行相应的恢复操作:

6.1 从 MinIO 恢复备份​

  1. 下载备份文件:
# 列出备份文件
mc ls minio-backup/mysql-backups/

# 下载指定备份文件
mc cp minio-backup/mysql-backups/mysql-backup-20251120-020001.sql.gz /tmp/

6.2 从本地/NFS/Samba 存储恢复备份​

  1. 查找并复制备份文件:
# 列出备份文件
ls -la /mnt/mysql-backups/

# 复制指定备份文件到临时目录
cp /mnt/mysql-backups/2025-11-20/mysql-backup-20251120-020001.sql.gz /tmp/

6.3 通用恢复步骤​

无论使用哪种存储方式,恢复步骤都相同:

  1. 解压并恢复数据库:
# 解压备份文件
gunzip /tmp/mysql-backup-20251120-020001.sql.gz

# 恢复数据库(注意:这将覆盖现有数据)
mysql -hlocalhost -uroot -pmysql@123456 < /tmp/mysql-backup-20251120-020001.sql

6.2 部分数据库恢复​

如果只需要恢复特定数据库:

# 创建临时数据库用于恢复
mysql -hlocalhost -uroot -pmysql@123456 -e "CREATE DATABASE temp_restore;"

# 恢复到临时数据库
mysql -hlocalhost -uroot -pmysql@123456 temp_restore < /tmp/mysql-backup-20251120-020001.sql

# 从临时数据库导出特定数据库
mysqldump -hlocalhost -uroot -pmysql@123456 temp_restore your_database_name > your_database_name.sql

# 恢复特定数据库
mysql -hlocalhost -uroot -pmysql@123456 your_database_name < your_database_name.sql

# 删除临时数据库
mysql -hlocalhost -uroot -pmysql@123456 -e "DROP DATABASE temp_restore;"

7. 最佳实践​

7.1 备份策略建议​

  1. 全量备份: 每天执行一次全量备份
  2. 增量备份: 每小时执行一次 binlog 备份(需要启用 binlog)
  3. 备份保留: 保留至少 7 天的备份,重要业务建议保留 30 天

7.2 安全配置​

  1. 为备份创建专用的 MySQL 用户:
-- 创建备份专用用户
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'backup_password123';

-- 授予必要权限
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;
  1. 使用配置文件存储密码:
# 创建 MySQL 配置文件
sudo -u mysql vim /opt/mysql-backup/.my.cnf

# 添加以下内容
[client]
user=backup_user
password=backup_password123
host=localhost
  1. 设置配置文件权限:
sudo chmod 600 /opt/mysql-backup/.my.cnf
sudo chown mysql:mysql /opt/mysql-backup/.my.cnf
  1. 修改备份脚本使用配置文件:
# 在备份脚本中替换
mysqldump --defaults-file=/opt/mysql-backup/.my.cnf \
--all-databases --single-transaction --routines --triggers --events \
| gzip > ${BACKUP_PATH}

7.3 性能优化​

  1. 并行备份: 对于大型数据库,可以使用并行备份工具:
# 安装 mydumper(可选)
sudo apt-get install mydumper # Ubuntu/Debian
# 或
sudo yum install mydumper # CentOS/RHEL

# 使用 mydumper 进行并行备份
mydumper -h localhost -u backup_user -p backup_password123 \
-o /tmp/mysql-backup-${TIMESTAMP} -c -t 4
  1. 压缩传输: 在上传到 MinIO 时使用压缩:
# 在上传时使用压缩
mc cp --compress ${BACKUP_PATH} ${MINIO_ALIAS}/${MINIO_BUCKET}/

8. 监控与告警​

8.1 备份状态监控​

  1. 创建监控脚本 /opt/mysql-backup/monitor-backup.sh:
#!/bin/bash

# 备份监控脚本(支持多种存储方式)
# 作者: 打工祥子
# 版本: 1.1

# 配置变量
LOG_FILE="/var/log/mysql-backup.log"
ALERT_EMAIL="admin@example.com"

# 存储方式配置
STORAGE_TYPE="minio" # 可选值: local, nfs, samba, minio, other

# MinIO 配置(如使用 MinIO 存储)
MINIO_ALIAS="minio-backup"
MINIO_BUCKET="mysql-backups"

# 本地/NFS/Samba 存储配置(如使用本地/NFS/Samba 存储)
LOCAL_BACKUP_DIR="/mnt/mysql-backups" # 本地/NFS/Samba 挂载点

# 检查最近 24 小时内是否有备份
LAST_BACKUP=$(grep "MySQL 备份完成" ${LOG_FILE} | tail -1 | cut -d' ' -f1-2)

if [ -z "${LAST_BACKUP}" ]; then
echo "警告: 24 小时内没有检测到 MySQL 备份" | mail -s "MySQL 备份告警" ${ALERT_EMAIL}
exit 1
fi

# 根据存储类型检查备份文件是否存在
case "${STORAGE_TYPE}" in
"minio")
# 检查备份是否成功上传到 MinIO
BACKUP_COUNT=$(mc ls ${MINIO_ALIAS}/${MINIO_BUCKET}/ | wc -l)
if [ ${BACKUP_COUNT} -eq 0 ]; then
echo "警告: MinIO 中没有检测到 MySQL 备份文件" | mail -s "MySQL 备份告警" ${ALERT_EMAIL}
exit 1
fi
;;
"local"|"nfs"|"samba")
# 检查本地/NFS/Samba 存储中是否有备份文件
BACKUP_COUNT=$(find ${LOCAL_BACKUP_DIR} -type f -name "mysql-backup-*.sql.gz" -mtime -1 | wc -l)
if [ ${BACKUP_COUNT} -eq 0 ]; then
echo "警告: 本地存储中没有检测到最近的 MySQL 备份文件" | mail -s "MySQL 备份告警" ${ALERT_EMAIL}
exit 1
fi
;;
"other")
echo "使用其他存储方式,请手动检查备份状态"
;;
*)
echo "未知存储类型: ${STORAGE_TYPE},请检查配置" | mail -s "MySQL 备份告警" ${ALERT_EMAIL}
exit 1
;;
esac

echo "MySQL 备份状态正常 (存储方式: ${STORAGE_TYPE})"
  1. 添加监控任务到定时任务(每小时执行):
# 添加到 crontab
0 * * * * /opt/mysql-backup/monitor-backup.sh >> /var/log/mysql-backup-monitor.log 2>&1

8.2 Prometheus 监控集成​

  1. 安装 node_exporter 的 textfile collector:
# 创建指标文件目录
sudo mkdir -p /var/lib/node_exporter/textfile_collector

# 创建 MySQL 备份指标脚本
sudo vim /opt/mysql-backup/export-metrics.sh

# 添加以下内容
#!/bin/bash

# 导出 MySQL 备份指标(支持多种存储方式)

# 配置变量
STORAGE_TYPE="minio" # 可选值: local, nfs, samba, minio, other

# MinIO 配置(如使用 MinIO 存储)
MINIO_ALIAS="minio-backup"
MINIO_BUCKET="mysql-backups"

# 本地/NFS/Samba 存储配置(如使用本地/NFS/Samba 存储)
LOCAL_BACKUP_DIR="/mnt/mysql-backups" # 本地/NFS/Samba 挂载点

# 获取备份日志最后修改时间
LAST_BACKUP_TIME=$(stat -c %Y /var/log/mysql-backup.log)
CURRENT_TIME=$(date +%s)
TIME_DIFF=$((CURRENT_TIME - LAST_BACKUP_TIME))

# 根据存储类型获取备份文件数量
case "${STORAGE_TYPE}" in
"minio")
# 获取 MinIO 中的备份文件数量
BACKUP_COUNT=$(mc ls ${MINIO_ALIAS}/${MINIO_BUCKET}/ | wc -l)
;;
"local"|"nfs"|"samba")
# 获取本地/NFS/Samba 存储中的备份文件数量
BACKUP_COUNT=$(find ${LOCAL_BACKUP_DIR} -type f -name "mysql-backup-*.sql.gz" | wc -l)
;;
"other")
BACKUP_COUNT=0 # 其他存储方式无法自动统计
;;
*)
BACKUP_COUNT=0
;;
esac

# 输出指标
echo "mysql_backup_last_timestamp ${LAST_BACKUP_TIME}" > /var/lib/node_exporter/textfile_collector/mysql_backup.prom
echo "mysql_backup_age_seconds ${TIME_DIFF}" >> /var/lib/node_exporter/textfile_collector/mysql_backup.prom
echo "mysql_backup_file_count ${BACKUP_COUNT}" >> /var/lib/node_exporter/textfile_collector/mysql_backup.prom
echo "mysql_backup_storage_type{type=\"${STORAGE_TYPE}\"} 1" >> /var/lib/node_exporter/textfile_collector/mysql_backup.prom
  1. 设置脚本权限并添加到定时任务:
sudo chmod +x /opt/mysql-backup/export-metrics.sh

# 添加到 crontab(每 5 分钟执行一次)
*/5 * * * * /opt/mysql-backup/export-metrics.sh

9. 故障排除​

9.1 常见问题​

  1. 备份失败:

    • 检查 MySQL 用户权限
    • 验证 MySQL 服务状态
    • 检查磁盘空间是否充足
    • 检查备份脚本配置
  2. MinIO 上传失败(如使用 MinIO 存储):

    • 检查网络连接
    • 验证 MinIO 访问凭证
    • 确认存储桶是否存在
    • 检查 MinIO 服务状态
  3. NFS 挂载失败(如使用 NFS 存储):

    • 检查 NFS 服务器状态
    • 验证挂载点权限
    • 检查防火墙设置
    • 验证 NFS 服务器导出配置
  4. Samba 共享连接失败(如使用 Samba 存储):

    • 检查 Samba 服务器状态
    • 验证用户名和密码
    • 检查共享目录权限
    • 验证网络连接
  5. 本地存储空间不足(如使用本地存储):

    • 检查磁盘使用情况
    • 清理旧备份文件
    • 扩展磁盘空间
  6. 定时任务未执行:

    • 检查 crontab 配置
    • 查看系统日志中的 cron 错误
    • 验证脚本执行权限
    • 检查系统时间设置

9.2 诊断命令​

# 检查 MySQL 服务状态
systemctl status mysql

# 检查磁盘空间
df -h

# 检查内存使用情况
free -h

# 查看备份日志
tail -f /var/log/mysql-backup.log

# 检查定时任务
sudo -u mysql crontab -l

# 检查 MinIO 连接(如使用 MinIO 存储)
mc admin info minio-backup

# 查看 MinIO 存储桶内容(如使用 MinIO 存储)
mc ls minio-backup/mysql-backups/

# 检查 NFS 挂载状态(如使用 NFS 存储)
showmount -e 192.168.192.180
mount | grep nfs

# 检查 Samba 共享连接(如使用 Samba 存储)
smbclient -L //192.168.192.190 -U backupuser

# 检查本地存储空间使用情况(如使用本地存储)
df -h /mnt/mysql-backups

# 查看本地备份文件(如使用本地/NFS/Samba 存储)
ls -la /mnt/mysql-backups/

通过以上方案,您可以根据实际需求选择最适合的存储方式来实施 MySQL 数据库的定时备份策略,实现数据的远程备份和高可用性保护。