mysql如何进行全量备份_mysql全量备份方法

全量备份指完整复制数据库数据,常用方法为mysqldump逻辑备份和物理文件复制。1. 使用mysqldump可备份所有库、指定库或表,支持带密码导出并用mysql命令恢复。

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 -p

2. 直接复制数据文件(物理备份)

这种方法是直接复制 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 更适合生产环境的大数据量场景。