Skip to main content

1.备份操作

mysql全量备份和增量备份

全量备份(Full Backup)

全量备份是将整个数据库的所有数据和结构都备份到一个文件中。全量备份包含了数据库中所有的表、数据、索引、存储过程等。这种备份方式的优点是恢复操作非常简单,只需将备份文件恢复到新的数据库即可。

优点:

  1. 恢复简单: 由于包含了所有的数据和结构,恢复操作非常直观和简单。
  2. 独立性强: 每个全量备份都是完整的数据库快照,与其他备份之间相互独立。

缺点:

  1. 占用空间大: 全量备份包含了整个数据库的所有内容,因此备份文件通常相对较大。
  2. 备份频率低: 由于备份文件大,生成和传输备份的时间成本较高,因此全量备份的频率通常较低。

全量备份操作:

使用 mysqldump 工具进行全量备份:

mysqldump -u username -p --all-databases > backup.sql
  • -u username: 指定 MySQL 用户名。
  • -p: 提示输入密码。
  • --all-databases: 表示备份所有数据库。
  • > backup.sql: 将备份输出保存到 backup.sql 文件中。

使用 mysqlbackup 工具进行全量备份:

mysqlbackup --user=username --password=password --backup-dir=/path/to/backupdir --backup-image=/path/to/backup.img --compress
  • --user: 指定 MySQL 用户名。
  • --password: 指定 MySQL 用户密码。
  • --backup-dir: 指定备份目录。
  • --backup-image: 指定备份镜像文件。
  • --compress: 启用备份文件压缩。

恢复全量备份:

mysqlbackup --defaults-file=/path/to/my.cnf --datadir=/path/to/datadir --backup-dir=/path/to/backupdir --backup-image=/path/to/backup.img --uncompress copy-back
  • --defaults-file: MySQL 配置文件路径。
  • --datadir: MySQL 数据目录。
  • --backup-dir: 备份目录。
  • --backup-image: 备份镜像文件路径。
  • --uncompress: 恢复时解压缩备份文件。
  • copy-back: 执行实际的恢复操作。

增量备份(Incremental Backup)

增量备份是基于先前的全量备份或增量备份,仅备份自上一次备份以来发生更改的数据和日志。它只包含了数据库中自上次备份以来新增或修改的数据。

优点:

  1. 占用空间相对较小: 由于只备份了发生变化的数据,增量备份通常比全量备份占用更少的存储空间。
  2. 备份频率高: 由于备份文件小,生成和传输备份的时间成本较低,因此增量备份的频率通常较高。

缺点:

  1. 恢复相对复杂: 恢复时需要依次应用全量备份和各个增量备份,可能需要更多的步骤和时间。
  2. 备份之间相互依赖: 增量备份之间存在依赖关系,如果中间的任何一个备份损坏,可能影响后续备份的恢复。

增量备份操作

使用 mysqlbinlog 工具生成增量备份 SQL 文件:

mysqlbinlog --start-position=12345 mysql-bin.000001 > incremental_backup.sql
  • --start-position: 指定增量备份的起始位置,可以从上一次备份的 SHOW MASTER STATUS 中获取。
  • mysql-bin.000001: 上一次备份的二进制日志文件。

恢复增量备份:

恢复增量备份需要先恢复全量备份

将全量备份文件恢复:

mysql -u username -p < full_backup.sql

将增量备份文件应用到数据库:

mysql -u username -p < incremental_backup.sql

请注意,增量备份的恢复需要先恢复全量备份,然后逐个应用增量备份文件。在执行增量备份时,需要记录每次备份的二进制日志位置,以便在恢复时按顺序应用。增量备份的恢复过程相对复杂,需要谨慎操作。

mysqlbackup和mysqldump区别

mysqldump

  1. 备份类型:

    • 全量备份: mysqldump 主要用于生成 SQL 格式的文本备份文件,包含数据库中所有表的结构和数据。这是一个逻辑备份,通过执行生成的 SQL 语句可以还原数据库。
  2. 备份格式:

    • 文本格式: mysqldump 生成的备份文件是文本格式的 SQL 脚本。
  3. 适用场景:

    • 小型数据库: 适用于小型数据库,备份和还原过程相对简单。
    • 跨平台兼容性: 生成的 SQL 脚本在不同平台和 MySQL 版本之间具有较好的兼容性。
  4. 备份方法:

    mysqldump -u username -p --all-databases > backup.sql
  5. 恢复方法:

    mysql -u username -p < backup.sql

mysqlbackup

  1. 备份类型:

    • 全量备份和增量备份: mysqlbackup 是 MySQL 官方提供的备份工具,支持全量备份和增量备份。全量备份包含整个数据库的结构和数据,而增量备份仅备份上次备份以来发生的更改。
  2. 备份格式:

    • 二进制格式: mysqlbackup 生成的备份文件通常是二进制格式,可以包含数据、日志和表空间等信息。
  3. 适用场景:

    • 大型数据库: 适用于大型数据库,提供更高效的备份和恢复。
    • 高性能: mysqlbackup 能够通过并行备份和压缩等技术,提供更高性能的备份。
  4. 备份方法:

    mysqlbackup --user=username --password=password --backup-dir=/path/to/backupdir --backup-image=/path/to/backup.img --compress
  5. 恢复方法:

    mysqlbackup --defaults-file=/path/to/my.cnf --datadir=/path/to/datadir --backup-dir=/path/to/backupdir --backup-image=/path/to/backup.img --uncompress copy-back
    • --defaults-file: MySQL 配置文件路径。
    • --datadir: MySQL 数据目录。
    • --backup-dir: 备份目录。
    • --backup-image: 备份镜像文件路径。
    • --uncompress: 恢复时解压缩备份文件。
    • copy-back: 执行实际的恢复操作。

总结差异:

  • 备份类型: mysqldump 生成逻辑备份,而 mysqlbackup 提供了更高效的物理备份,包括全量备份和增量备份。
  • 备份格式: mysqldump 生成文本格式的 SQL 脚本,而 mysqlbackup 通常生成二进制格式的备份文件。
  • 性能: mysqlbackup 针对大型数据库提供了更高性能的备份和恢复,支持并行操作、压缩等技术。
  • 使用场景: mysqldump 适用于小型数据库和简单的备份需求,而 mysqlbackup 更适合对性能要求较高、大型数据库进行备份和恢复。

mysql恢复到任意时间节点的方法

将 MySQL 恢复到任意时间节点,你可以使用 MySQL 的点播恢复(Point-in-Time Recovery,PITR)功能。PITR 允许你在指定的时间点将数据库恢复到以前的状态。

一般步骤

1. 创建备份

在进行 PITR 之前,你需要确保你有数据库的备份。你可以使用 mysqldump、Percona XtraBackup 等工具创建备份。

2. 查找时间点

确定你想要将数据库恢复到的具体时间点。这可以是备份之后的某个时间。

3. 恢复数据库

使用 mysql 命令行工具或者其他 MySQL 管理工具,执行以下步骤:

a. 连接到 MySQL 服务器
mysql -u username -p
b. 查看二进制日志文件和位置

确保 MySQL 配置文件中启用了二进制日志。然后运行以下命令

SHOW MASTER STATUS;

记下输出的文件名(File)和位置(Position),这些信息会用于 PITR。

c. 停止 MySQL 服务器
sudo service mysql stop
d. 设置恢复时间点

使用 mysqlbinlog 工具从备份的二进制日志文件中提取 SQL 语句,以创建一个包含点播时间点的日志文件,使用先前查找到的二进制日志文件和位置:

mysqlbinlog --start-position=<Position> --stop-position=<Position> <BackupLogFile> > recovery.sql
  • --start-position=12345:从二进制日志文件的位置 12345 处开始解析。
  • --stop-position=67890:解析到二进制日志文件的位置 67890 处结束。这个位置通常是当前时间点的二进制日志位置。
  • mysql-bin.000001:指定要解析的二进制日志文件的路径。
e. 启动 MySQL 服务器
sudo service mysql start
f. 恢复数据库

使用 mysql 命令应用 recovery.sql 中的 SQL 语句:

mysql -u username -p < recovery.sql
g.启动 MySQL 服务器
sudo service mysql start

注意事项:

  • 确保你有足够的事务日志(binary logs): MySQL 需要保存足够的二进制日志以支持 PITR。
  • 备份和 PITR 的时间点一致: 如果你使用的是物理备份,确保备份和 PITR 的时间点一致,以避免出现数据不一致的情况。
  • 了解 PITR 的限制: PITR 的粒度受到二进制日志的写入频率和日志的保留时间的限制。
  • Position 值获取:SHOW MASTER STATUS 命令可以获取当前的二进制日志文件名和位置。在进行点播恢复时,通常要记录上一次备份的二进制日志文件名和位置,以及当前时间点的二进制日志位置。
  • 日志格式: 确保使用的日志格式是 ROWMIXED,以确保 mysqlbinlog 可以正确解析并生成 SQL 语句。
  • 谨慎操作: 在执行点播恢复之前,确保已经备份了数据库,并在测试环境中验证过点播恢复过程。点播恢复需要谨慎操作,确保数据的完整性。

点播恢复中全量和增量的理解

在点播恢复的过程中,通常有两个关键的时间点:

  1. 全量备份时间点: 这是备份的起始时间点,全量备份文件包含了数据库在这个时间点的快照。
  2. 点播时间点: 这是你希望将数据库恢复到的具体时间点。点播恢复的目标是将数据库恢复到这个时间点的状态。

如果你的点播时间点落在全量备份时间点之后,那么全量备份中已经包含了所有的数据。在这种情况下,只需要应用全量备份即可,因为全量备份已经包含了点播时间点之后的所有数据变更。

如果点播时间点在全量备份时间点之前,你可能需要额外的增量备份来应用在全量备份之后的数据变更,以将数据库恢复到点播时间点的状态。这就是为什么在点播恢复中,除了全量备份,有时还需要考虑增量备份的原因。

在点播恢复时,一般的步骤包括:

  1. 应用全量备份: 将全量备份应用到数据库,将数据库还原到全量备份时间点的状态。
  2. 应用增量备份(如果有的话): 如果点播时间点在全量备份之后,将适当的增量备份应用到数据库,以应用在全量备份之后的数据变更。
  3. 完成点播恢复: 数据库已被还原到点播时间点的状态。

#mysqlbackup和mysqldump性能对别

https://www.cnblogs.com/eaglediao/p/6511449.html