拆分备份
拆分备份策略是指通过将备份分成多个部分来迁移大型数据库服务器。您可以使用不同的方法来迁移备份的每个部分。对于以下使用案例,这可能是最佳选择:
-
数据库服务器规模庞大,但各个数据库都很小:当数据库服务器的总大小为多 TB,但每个独立的用户数据库的大小小于 1 TB 时,这是一种不错的方法。为了缩短总体迁移期,您可以单独并行迁移单个数据库。
让我们举一个本地 2 TB 数据库服务器的示例。此服务器由四个数据库组成,每个数据库大小为 0.5 TB。您可以分别对每个单独的数据库进行备份。恢复备份时,您可以并行恢复实例上的所有数据库,或者如果这些数据库是独立的,则可以在单独的实例上恢复每个备份。最佳做法是在单独的实例上恢复独立的数据库,而不是在同一个实例上进行恢复。有关更多信息,请参阅本指南中的“最佳实践”。
-
数据库服务器规模庞大,但各个数据库表都很小:当数据库服务器的总大小为多 TB,但每个独立的数据库表的大小小于 1 TB 时,这是一种不错的方法。为了缩短整体迁移期,您可以单独迁移独立的表。
让我们举一个大小为 1 TB 的单个用户数据库的示例,它是本地数据库服务器中唯一的数据库。数据库中有 10 个表,每个表的容量为 100 GB。您可以分别对每个单独的表进行备份。恢复备份时,您可以并行恢复实例上的所有表。
-
数据库同时包含事务性工作负载表和非事务性工作负载表:与上一个使用案例类似,当事务性工作负载表和非事务性工作负载表都在同一个数据库中时,您可以使用拆分备份方法。
让我们举一个 2 TB 数据库的示例,该数据库由用于在线事务处理(OLTP)的 0.5 TB 关键工作负载表和一个用于存档旧数据的 1.5 TB 表组成。您可以将除归档表之外的所有数据库对象的备份作为单一事务且一致的备份。然后,您只对归档表进行另一个单独的备份。对于归档表备份,您还可以考虑使用条件来拆分备份文件中的行数,从而进行多个并行备份。以下是示例:
mysqldump -p your_db1 --tables your_table1 --where="column1 between 1 and 1000000 " > your_table1_part1.sql mysqldump -p your_db1 --tables your_table1 --where="column1 between 1000001 and 2000000 " > your_table1_part2.sql mysqldump -p your_db1 --tables your_table1 --where="column1 > 2000000 " > your_table1_part3.sql恢复备份文件时,您可以并行恢复事务性工作负载备份和归档表备份。
-
计算资源限制:如果本地服务器中的计算资源(例如 CPU、内存或磁盘 I/O)有限,这可能会影响备份时的稳定性和性能。您可以将其分成几个部分,而不是进行完整备份。
例如,本地生产服务器可能负载繁重,而 CPU 资源有限。如果您在此服务器上对多 TB 的数据库进行一次性备份,则可能会消耗额外的 CPU 资源,并对生产服务器产生不利影响。不要进行完整的数据库备份,而是将备份分成多个部分,例如每个部分备份 2-3 个表。