Ubuntu系统下MySQL数据备份的常用方法
mysqldump是MySQL自带的逻辑备份工具,支持导出数据库结构(表结构、视图、存储过程等)和数据,适用于大多数场景。
基本语法:mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件名].sql
示例:备份名为mydatabase的数据库到/home/user/backup/目录,文件名为mydatabase_backup.sql:
mysqldump -u root -p mydatabase > /home/user/backup/mydatabase_backup.sql
常用扩展选项:
gzip,节省存储空间:mysqldump -u root -p mydatabase | gzip > /home/user/backup/mydatabase_backup.sql.gzmysqldump -u root -p mydatabase > /home/user/backup/mydatabase_backup_$(date +%Y%m%d_%H%M%S).sql--all-databases选项导出MySQL服务器上的所有数据库:mysqldump -u root -p --all-databases > /home/user/backup/all_databases_backup.sql-p(不跟密码),然后根据提示输入,避免密码泄露;root用户或具有BACKUP_ADMIN权限的用户)。mysqlpump是mysqldump的改进版,支持并行备份(多线程导出),显著提升大型数据库的备份速度。
基本语法:mysqlpump -u [用户名] -p[密码] [数据库名] > [备份文件名].sql
示例:备份mydatabase数据库:
mysqlpump -u root -p mydatabase > /home/user/backup/mydatabase_pump.sql
优势:
--threads参数调整(如--threads=4);--incremental选项,但需MySQL 8.0+)。若需要备份整个MySQL数据目录(包含所有数据库文件),可使用rsync工具实现增量备份(仅复制自上次备份后修改的文件),适合大型数据库或需要快速恢复的场景。
步骤:
sudo systemctl stop mysql/var/lib/mysql(MySQL默认数据目录)同步到备份目录(如/backup/mysql):sudo rsync -avz --delete /var/lib/mysql/ /backup/mysql/-a(归档模式,保留权限、时间戳等)、-v(显示详细信息)、-z(压缩传输)、--delete(删除备份目录中不存在于源目录的文件,保持完全同步)。sudo systemctl start mysql/var/lib/mysql,并启动MySQL服务即可。为避免手动操作遗漏,可通过cron设置定时任务,定期执行备份脚本。
步骤:
/home/user/scripts/mysql_backup.sh):#!/bin/bash
# 备份目录
BACKUP_DIR="/home/user/backup"
# MySQL连接信息
DB_USER="root"
DB_PASS="yourpassword"
DB_NAME="mydatabase"
# 备份文件名(带时间戳)
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_$DATE.sql"
# 执行备份(压缩)
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_FILE
# 删除7天前的备份(保留最近7天)
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -mtime +7 -exec rm {} \;
chmod +x /home/user/scripts/mysql_backup.shcrontab -e,添加以下行(每天凌晨2点执行备份):0 2 * * * /home/user/scripts/mysql_backup.shmydatabase数据库,压缩后保存到/home/user/backup/目录,并删除7天前的旧备份。若不熟悉命令行,可使用图形化工具phpMyAdmin(需提前安装)进行备份,操作直观。
步骤:
http://your_server_ip/phpmyadmin,输入MySQL用户名和密码。.sql格式)。