# 备份单个数据库
mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql
# 备份所有数据库
mysqldump -u [用户名] -p[密码] --all-databases > all_backup.sql
# 带时间戳的备份
mysqldump -u [用户名] -p[密码] [数据库名] > dbname_$(date +%Y%m%d).sql
# 停止MySQL服务
sudo systemctl stop mysql
# 复制数据目录
sudo cp -R /var/lib/mysql /backup/mysql_backup
# 重启MySQL服务
sudo systemctl start mysql
mysqlhotcopy -u [用户名] -p [密码] [数据库名] /backup/directory
# 查看当前二进制日志文件
mysql -u root -p -e "SHOW BINARY LOGS"
# 备份二进制日志
cp /var/lib/mysql/mysql-bin.* /backup/directory/
# 恢复单个数据库
mysql -u [用户名] -p[密码] [数据库名] < backup.sql
# 恢复所有数据库
mysql -u [用户名] -p[密码] < all_backup.sql
# 停止MySQL服务
sudo systemctl stop mysql
# 恢复数据目录
sudo cp -R /backup/mysql_backup /var/lib/mysql
# 设置正确的权限
sudo chown -R mysql:mysql /var/lib/mysql
# 重启MySQL服务
sudo systemctl start mysql
# 首先恢复完整备份
mysql -u root -p < full_backup.sql
# 然后应用二进制日志
mysqlbinlog /backup/mysql-bin.000123 | mysql -u root -p
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/mysql"
MYSQL_USER="backup_user"
MYSQL_PASSWORD="password"
mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD --all-databases | gzip > $BACKUP_DIR/all_dbs_$DATE.sql.gz
# 删除30天前的备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +30 -exec rm {} \;
# 每天凌晨2点执行备份
0 2 * * * /path/to/backup_script.sh
问题1:恢复时出现权限错误 - 解决方案:确保恢复使用的MySQL用户有足够的权限
问题2:备份文件过大
- 解决方案:使用gzip压缩备份文件 mysqldump ... | gzip > backup.sql.gz
问题3:恢复过程中断
- 解决方案:使用--force
选项忽略错误或分步恢复
通过以上方法,您可以有效地备份和恢复MySQL数据库,确保数据安全。