在 Ubuntu 的 LAMP 环境(Linux + Apache + MySQL/MariaDB + PHP)中,备份数据库通常指备份 MySQL 或 MariaDB 数据库。下面按常见场景给你一套实用方法。
mysqldump -u root -p 数据库名 > /backup/db_数据库名_$(date +%F).sql
示例:
mysqldump -u root -p wordpress > /backup/wp_2026-01-21.sql
mysqldump -u root -p --all-databases > /backup/all_db_$(date +%F).sql
mysqldump -u root -p 数据库名 | gzip > /backup/db_$(date +%F).sql.gz
sudo nano /usr/local/bin/backup_db.sh
内容示例:
#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -p密码 数据库名 | gzip > /backup/db_$DATE.sql.gz
⚠ 建议用
.my.cnf存密码,避免明文
chmod +x /usr/local/bin/backup_db.sh
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/local/bin/backup_db.sh
nano ~/.my.cnf
内容:
[client]
user=root
password=你的密码
权限:
chmod 600 ~/.my.cnf
之后备份可省略 -p:
mysqldump 数据库名 > backup.sql
适合 几十 GB 以上 数据库:
sudo systemctl stop mysql
sudo tar -zcvf /backup/mysql_data.tar.gz /var/lib/mysql
sudo systemctl start mysql
或使用:
mysqlbackup(企业版)Percona XtraBackup(免费,推荐)mysql -u root -p 数据库名 < backup.sql
gunzip < backup.sql.gz | mysql -u root -p 数据库名
/var/www/html/etc/apache2、/etc/mysql示例:
tar -zcvf /backup/site_$(date +%F).tar.gz /var/www/html
如果你愿意,可以告诉我:
我可以帮你写一套完整备份脚本。