LNMP下MySQL备份策略
一 策略总览
二 备份频率与保留建议
三 关键命令与脚本示例
mysqldump -u root -p --single-transaction --quick --all-databases | gzip > /backup/mysql/full_$(date +%F).sql.gz
mysqldump -u root -p --single-transaction --quick db_name | gzip > /backup/mysql/db_$(date +%F).sql.gz
mysqlpump -u root -p --databases db1 db2 --parallel=4 > /backup/mysql/parallel_$(date +%F).sql
# 备份
xtrabackup --backup --user=root --password=your_pass --target-dir=/backup/xtra/2025-11-18_02-00-00
# 准备(应用日志)
xtrabackup --prepare --target-dir=/backup/xtra/2025-11-18_02-00-00
# 恢复(示例)
systemctl stop mysql
rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/backup/xtra/2025-11-18_02-00-00 --datadir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
#!/usr/bin/env bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F_%H-%M-%S)
mkdir -p "$BACKUP_DIR"
mysqldump -u root -p --single-transaction --quick --all-databases 2>/dev/null | gzip > "$BACKUP_DIR/full_$DATE.sql.gz"
# 保留最近7天
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
0 2 * * * /usr/bin/bash /root/backup_mysql.sh >> /var/log/backup_mysql.log 2>&1
0 1 * * * /usr/bin/rsync -a --delete /usr/share/nginx/html /backup/nginx_html_$(date +\%F)/
0 1 * * * /usr/bin/tar czf /backup/nginx_conf_$(date +\%F).tar.gz /etc/nginx /etc/php
[client]
user=root
password=your_password
命令中去掉-p参数即可读取配置。四 恢复流程与演练
gunzip < /backup/mysql/full_2025-11-18.sql.gz | mysql -u root -p
# 或先解压
gunzip /backup/mysql/full_2025-11-18.sql.gz
mysql -u root -p < /backup/mysql/full_2025-11-18.sql
五 监控与存储实践