MySQL全量备份是指将数据库中的所有数据完整地复制一份,用于灾难恢复或数据迁移。常见的全量备份方法主要有两种:使用
mysqldump工具和直接复制数据文件(物理备份)。下面介绍这两种方式的具体操作。
1. 使用 mysqldump 进行逻辑备份
mysqldump是 MySQL 自带的逻辑备份工具,适用于大多数场景,操作简单且兼容性好。
基本语法:
mysqldump -u [用户名] -p[密码] --all-databases > [备份文件路径]常用命令示例:
备份所有数据库: mysqldump -u root -p --all-databases > /backup/mysql_full_backup.sql 备份指定数据库: mysqldump -u root -p --databases db1 db2 > /backup/db1_db2_backup.sql 只备份某个表: mysqldump -u root -p db1 table1 > /backup/table1.sql 添加时间戳命名备份文件: mysqldump -u root -p --all-databases > /backup/mysql_$(date +%F).sql恢复时使用:
mysql -u root -p2. 直接复制数据文件(物理备份)
这种方法是直接复制 MySQL 的数据目录(如 /var/lib/mysql),属于物理备份,速度快,但要求数据库关闭或加锁以保证一致性。
步骤如下:
停止 MySQL 服务(确保数据一致): systemctl stop mysql 复制整个数据目录: cp -r /var/lib/mysql /backup/mysql_data_$(date +%F) 启动 MySQL 服务: systemctl start mysql或者在不停止服务的情况下,先加全局读锁再备份:
mysql -u root -p -e "FLUSH TABLES WITH READ LOCK; SELECT SLEEP(3600);" &然后另开终端执行文件拷贝,完成后手动解除锁。
3. 使用 Percona XtraBackup(推荐用于InnoDB)
XtraBackup 是一个开源的物理备份工具,支持在线热备,适合大容量数据库。
安装后执行全量备份:
xtrabackup --backup --target-dir=/backup/full恢复流程:
准备备份: xtrabackup --prepare --target-dir=/backup/full 停止 MySQL 并清空数据目录: systemctl stop mysql rm -rf /var/lib/mysql/* 应用备份: xtrabackup --copy-back --target-dir=/backup/full 修改权限并重启: chown -R mysql:mysql /var/lib/mysql systemctl start mysql 基本上就这些。选择哪种方式取决于你的存储引擎、数据量大小以及是否允许停机。mysqldump 最通用,XtraBackup 更适合生产环境的大数据量场景。