Amazon RDS 和 Amazon Aurora 的长期备份选项

作者: Babaiah Valluru, 谢莱什·库马尔·米什拉 |

随着组织越来越依赖云基础架构,数据库引擎在提供长期数据的弹性、可靠性和无缝备份方面的作用已变得至关重要。GDPR、HIPAA 和 PCI DSS 等法规都强调了强有力的数据备份和恢复措施的必要性。实施强大的、具有前瞻性的数据备份策略使企业能够保护其关键信息,强制遵守法规,并防范潜在的网络安全挑战。通过开发全面的数据保存和恢复方法,组织可以增强运营弹性,保持客户信心,并为长期成功奠定坚实的基础。

在这篇文章中,我们向您展示了几种长期数据备份策略以及如何在亚马逊云科技环境中有效地实施这些策略,重点是 Amazon RDS(Amazon Relational Database Service)和 Amazon Aurora。

  • 备份管理 — Amazon Backup 提供了一个集中式平台,用于自动化和简化不同亚马逊云科技服务的备份流程,提供全面的数据保护。
  • 灵活的数据生命周期管理 — 高级数据管理策略,包括存档、保留政策、删除协议和版本控制,使组织能够优化存储成本,强制合规性,并在数据的整个生命周期中保持数据的可访问性和完整性。

要在亚马逊云科技云上实现长期数据存档,组织可以使用多种战略方法:

长期数据备份策略

商业组织需要长期的数据备份策略,原因如下:

  • 合规性 — 许多行业都受严格的法规管辖,要求组织将数据保留数年(例如医疗保健、金融和法律)。长期备份可确保企业履行法律和监管义务,避免处罚和声誉风险。
  • 审计和历史分析 — 组织通常需要历史数据来进行审计、财务审查或绩效分析。长期备份可保持这些信息的完整性和可用性。
  • 商业智能和趋势 — 历史数据对于分析趋势、预测和战略决策至关重要。长期备份允许组织访问和使用过去的数据以获取未来的见解。
  • 法律和诉讼需求 — 在法律纠纷中,组织可能需要提供几年前的证据。长期备份可确保在需要时可以访问此类数据。

数据库引擎选项

在规划有效的数据管理策略时,了解数据库引擎提供的内置工具和功能至关重要。这些选项在提高备份流程效率和确保数据存储解决方案具有弹性方面起着重要作用。让我们探讨这些功能如何为长期数据备份奠定坚实的基础,尤其是在亚马逊云科技云中。

在以下各节中,我们将深入探讨每种长期备份选项,如下表所示。我们将探讨自动备份、手动快照的复杂性,并讨论它们的优点、局限性和优秀实施实践。

数据库服务 自动备份、手动快照和 Amazon Backup 支持 引擎内置选项 其他选项
适用于 Oracle 的 Amazon RDS 是的 Oracle Data Pump,RMAN Amazon DMS 和其他工具,例如 Oracle GoldenGate、Commvault 和 Druva
适用于 SQL Server 的 Amazon RDS 是的 原生 SQL 备份和恢复 Amazon DMS
适用于 PostgreSQL 的 Amazon RDS 和 Amazon Aurora PostgreSQL 兼容版本 是的 pg_dump 和 pg_restore 和 pgLogical 快照导出到 Amazon S3、Amazon DMS 和第三方工具。
适用于 MySQL 的 Amazon RDS、适用于 MariaDB 的 Amazon Aurora MySQL 兼容版本和适用于 MariaDB 的 Amazon RDS 是的 mysqldump/mysqlpump MySQL Shell 将快照导出到 Amazon S3、Amazon DMS 以及 mydumper 和 myloader 等第三方备份工具
适用于 Db2 的 Amazon RDS 是的 db2 备份 Amazon DMS

自动备份

自动备份是 Amazon RDS 的一项功能,您可以使用它来自动拍摄数据库实例的快照。自动备份的保留期不能超过 35 天,因此,要满足 35 天以上的需求,您可以手动备份或进行快照备份,后续章节将对此进行解释。通常不考虑将此选项用于长期保留。

手动快照

手动快照允许您创建 RDS 数据库的手动快照。这些快照可用于创建新的卷或实例,或在数据丢失时恢复数据。手动快照存储在 Amazon Simple Storage Service (Amazon S3) 上,可以复制到其他区域。手动快照备份可用于备份自上次定时备份以来发生更改的数据或创建特定时间点的快照。

除了 Amazon RDS 中的持续备份外,还可以选择基于快照的备份,这些备份是通过 Amazon Backup 等解决方案提供的。Amazon Backup 具有文件库锁定和逻辑气隙保管库功能,这对于满足长期数据保留和合规要求特别有益。通过创建离散的时间点恢复点,组织可以维护其数据的全面历史记录。这使他们能够履行有关数据保存和可访问性的监管义务,因为这些快照备份可以长期保留,以提供必要的审计跟踪。总体而言,由 Amazon Backup 等服务推动的快照备份方法使组织能够有效地满足其长期数据保留和监管要求。

Amazon DMS

Amazon Database Migration Service (Amazon DMS) 可以安全高效地将数据从包括 Oracle、SQL Server、MySQL、PostgreSQL、Amazon RDS 和 Aurora 在内的各种源数据存储迁移到 Amazon S3。数据以原始 CSV 格式导出,可供其他应用程序或分析工具使用。在 S3 Glacier 中存档数据可为长期数据保留提供经济实惠且耐用的存储解决方案,并且您可以使用 Amazon DMS 迁移不经常访问的数据。

将快照导出到 Amazon S3

Amazon RDS 提供快照导出到 Amazon S3 功能,该功能允许您以 Apache Parquet 格式将来自各种 Amazon RDS 引擎(例如 PostgreSQL、MySQL 和 MariaDB)的数据库快照导出到 S3 存储桶中。有关 Amazon RDS 中支持的数据库引擎,请参阅支持区域和数据库引擎以将快照导出到 Amazon RDS 中的 S3;对于 Aurora 数据库引擎,请参阅支持的区域和 Aurora 数据库引擎以将快照数据导出到 Amazon S3。然后,可以使用 Amazon Athena、Amazon Redshift Spectrum 或其他大数据处理框架等服务对导出的数据进行分析。

Amazon RDS 和 Aurora 与 Amazon S3 的集成

Aurora 提供与 Amazon S3 的集成,允许您使用 SQL 命令(例如 LOAD DATA FROM S3)将数据直接从 Amazon S3 加载到 Aurora 数据库表中。此外,您无需创建快照即可将整个 Aurora 数据库集群直接导出到 Amazon S3,从而实现高效的数据分析和处理。Amazon RDS PostgreSQL 也支持它。

使用 SELECT INTO OUTFILE S3 语句与 Aurora MySQL 兼容时支持此功能。它支持使用 aws_s3 扩展与 Aurora PostgreSQL 兼容。

内置数据库引擎和其他选项

在本节中,我们将探讨 Amazon RDS 和 Aurora 的一些特定引擎选项,重点介绍为 MySQL、PostgreSQL、Oracle、DB2 和 SQL Server 量身定制的功能和优秀实践。这些见解将帮助您微调备份策略,以充分发挥所选数据库引擎的潜力。

适用于 Oracle 的 Amazon RDS

以下是 Amazon RDS for Oracle 的长期备份选项。这些选项因备份输出格式而异;Data Pump 创建逻辑备份,而 RMAN 创建 Oracle 数据或架构的物理格式。

Data Pump

对于寻求在亚马逊云科技云中运行长期数据备份的原生选项的组织来说,Oracle Data Pump 已成为一种可靠且多功能的选择。它对 Oracle 社区的熟悉、对不同备份范围的适应性、对不同数据库大小的适用性,以及通过并行选项和调整参数来优化性能的能力,使其成为数据管理策略库中的强大工具。建议您遵循大型迁移的优秀实践。

要在 Amazon RDS for Oracle 环境中使用数据泵,请按照以下步骤操作:

  1. 要从源 Oracle 数据库导出数据,请使用 expdp(数据泵导出)命令,类似于以下示例:
    expdp myuser/mypassword full=Y directory=mydumpdir dumpfile=mydatabase.dmplogfile=mydatabase.log
    Code

    此命令将整个数据库导出到 mydumpdir 目录中名为 mydatabase.dmp 的文件中。

  2. 将转储文件上传到 S3 存储桶。您可以使用亚马逊云科技命令行接口 (亚马逊云科技 CLI) 或 Amazon S3 控制台来执行此操作。
  3. 使用 impdp(数据泵导入)命令将数据导入到您的 RDS for Oracle 实例中:
    impdp myuser/mypassword full=Y directory=mydumpdir dumpfile=mydatabase.dmp logfile=mydatabase.log
    Code

注意:上一节 "Aurora 与 S3 集成" 中指定的大部分 "限制和限制" 也适用于 RDS Oracle 引擎。

RMAN

Oracle Recovery Manager (RMAN) 是一款专为管理和自动化 Oracle 数据库生态系统中的备份和恢复过程而设计的工具。在 Amazon RDS for Oracle 上使用 RMAN 非常简单。由于 Amazon RDS for Oracle 的完全托管性质,您无法直接将 RMAN 备份恢复到这些环境中。相反,您需要将 RMAN 备份恢复到本地或自托管的 Oracle 数据库实例,然后使用其他方法(例如亚马逊云科技提供的数据库迁移工具)将还原的数据迁移到您的 Amazon RDS 环境中。

以下是如何使用 RMAN 执行完整数据库备份的示例:

  1. 使用您的首选 SQL 客户端(例如 SQL Developer 或 Amazon RDS 控制台)连接到您的 RDS for Oracle 实例。
  2. 启动 RMAN 命令行界面:
    rman target /
    Code
  3. 使用以下命令创建整个数据库的完整备份,包括数据文件、控制文件和存档的重做日志:
    BACKUP DATABASE; 
    Code
  4. 监控备份进度:
    REPORT SCHEMA;
    Code

    此命令显示备份的状态,包括正在备份的文件和总体进度。

有关如何自动备份的详细信息,请参阅使用 Oracle RMAN 实用工具自动执行 Amazon RDS 备份并将备份文件上传到 Amazon S3。

适用于 SQL Server 的 Amazon RDS

适用于 SQL Server 的 Amazon RDS 提供了一个名为 rds_backup_database 的命令行实用工具,您可以使用它来手动备份数据库。此实用程序提供基本级别的备份功能,允许您创建 RDS for SQL Server 数据库的完整、差异或事务日志备份。更多详情,请参阅 Amazon RDS for SQL Server 的备份和还原策略。

要创建备份,请使用以下命令:

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@overwrite_s3_backup_file=0|1],[@block_size=512|1024|2048|4096|8192|16384|32768|65536],[@max_transfer_size=n],[@buffer_count=n],[@type='DIFFERENTIAL|FULL'],[@number_of_files=n];
GO
Code

尽管该 rds_backup_database 实用程序可以成为创建按需备份的有用工具,但请务必注意,这些备份的长期可恢复性无法保证,尤其是在底层 SQL Server 引擎版本或其他数据库技术未来可能发生变化的情况下。

仅仅依赖该 rds_backup_database 实用程序可能不足以满足贵组织的数据保护和合规性要求,尤其是在您需要在很长一段时间(例如 10 年或更长时间)内保持数据的可恢复性时。此实用工具创建的备份文件存储在 Amazon S3 中,但无法保证它们与未来版本的 SQL Server 兼容。

为了保持您的 RDS for SQL Server 数据库备份的长期可恢复性,我们建议考虑更全面的备份和恢复策略。这可能涉及:

  • 实施使用原生 SQL 服务器备份功能(例如 SQL 服务器管理工作室 (SSMS) 或 PowerShell 脚本)的备份解决方案。这些备份更有可能与未来的 SQL Server 版本兼容。
  • 定期测试您的备份和还原流程,以验证数据的完整性和可恢复性。
  • 维持与贵组织数据保留要求和监管义务相一致的备份保留政策。

通过采用更强大的备份策略,即使底层数据库技术发生长期变化,您也可以对恢复 RDS for SQL Server 数据库的能力更有信心。

适用于 PostgreSQL 和 Aurora 的 Amazon RDS 兼容 PostgreSQL

PostgreSQL 的开源性质也允许其他选择。以下是各行各业实践中的标准长期备份选项。

pg_dump 和 pg_restore

pg_dump 和 pg_restore 是用于备份和恢复 PostgreSQL 数据库的工具。它是一个命令行实用程序,可用于创建数据库的备份,可用于在数据丢失或灾难时恢复数据库。

要创建备份,请使用以下命令:

pg_dump -h <endpoint> -U <username> -p <port_number> -Fc -b -v -f <backup_file_path> -d <database_name>
Code

提供 PostgreSQL 服务器的主机名或 IP 地址、PostgreSQL 服务器的用户名、PostgreSQL 服务器的端口号、要保存备份文件的目录路径以及数据库的名称。

backup_file_path 可能在你的本地电脑、Amazon Elastic Compute Cloud(Amazon EC2)实例或本地服务器上,具体取决于你在哪里运行命令。

创建备份后,可以使用以下命令还原数据库:

pg_restore -h <endpoint> -U <username> -p <port_number> -d <database_name> -Fc <backup_file_path>
Code

适用于 MySQL 的 Amazon RDS、适用于 Maria DB 的 Amazon RDS 和 Aurora 的 MySQL 兼容

MySQL 和 MariaDB 引擎由以下选项组成,可根据您的用例或客户要求使用这些选项。

mysqldump

mysqldump 是一款内置的 MySQL 数据库备份工具。该工具创建逻辑备份,是 MySQL 客户端程序的一部分。mysqldump 支持单线程处理。

mysqldump 要用于备份您的 RDS for MySQL、适用于 MariaDB 的 RDS 或 Aurora MySQL 数据库,请运行以下命令:

mysqldump -h <host> -u <username> -p <database_name> > backup.sql
Code

提供服务器的主机名或 IP 地址、数据库用户凭证和数据库名称。备份文件 backup.sql 将保存在当前目录中。这可能在您的本地计算机、EC2 实例或本地服务器上,具体取决于您从哪里运行命令。

以下命令将从备份文件中恢复整个数据库,包括架构和数据:

mysql -h <host> -u <username> -p <database_name> < backup.sql
Code

mydumper 和 myloader

mydumper 导出了 MySQL 数据库的一致备份。它支持使用多个并行线程备份数据库,每个可用 CPU 内核最多一个线程。

要使用 mydumper 和 myloader,请按照以下步骤操作:

  1. 在本地计算机上或与 RDS for MySQL 或 Aurora MySQL 数据库位于相同区域的 EC2 实例上安装 mydumper 和 myloader。
  2. 确保您拥有访问您的 RDS for MySQL 或 Aurora MySQL 数据库所需的证书。
  3. 使用 mydumper 在指定的输出目录中创建 RDS MySQL 或 Aurora MySQL 数据库的完整备份:
    mydumper -h <end point> -u <username> -p <password> —o <path to backup>
    Code

    提供您的实例终端节点、用户凭证和备份文件路径。

  4. 使用 myloader 将备份数据恢复到您的 RDS for MySQL、RDS for MariaDB 或 Aurora MySQL 数据库中:
    myloader -h <endpoint> -u <username> -p <password> —d </path/to/backup>
    Code

MySQL Shell

MySQL Shell 是 MySQL 的高级客户端和代码编辑器。除了提供的 SQL 功能(与 MySQL 类似)外,MySQL Shell 还为 JavaScript 和 Python 提供脚本编写功能,并包括用于使用 MySQL 的 API。

MySQL Shell 提供了多个用于创建数据库备份的选项。让我们来看看每一个:

  • util.dumpTables() — util.dumpTables() 函数允许你创建数据库中特定表的备份。在以下示例中,我们从 my_database 数据库中创建 table1 和 table2 表的备份,并将备份文件保存到 /path/to/backup/ 目录中:
    mysql-js> util.dumpTables('my_database', ['table1', 'table2'], '/path/to/backup/directory')
    Code
  • util.dumpSchemas() — 您可以使用 util.dumpSchemas() 函数创建实例中整个架构(数据库)的备份。在以下示例中,我们创建 my_database 和 another_database 架构的备份,并将备份文件保存到 /path/to/backup/ 目录中:
    mysql-js> util.dumpSchemas(['my_database', 'another_database'], '/path/to/backup/directory')
    Code
  • util.dumpInstance() — 你可以使用 util.dumpInstance() 函数来创建整个数据库实例的备份。如果您需要创建数据库的完整备份,包括架构和表,这很有用。在以下示例中,我们创建了整个数据库实例的备份,并将备份文件保存到 /path/to/backup/ 目录中:
    mysql-js> util.dumpInstance('/path/to/backup/directory')
    Code

适用于 Db2 的 Amazon RDS

Db2 中的 BACKUP DATABASE 命令允许您创建数据库或特定表空间的备份副本。完成以下步骤 BACKUP DATABASE 以用于备份 RDS for Db2 数据库:

    1. 打开 Amazon RDS 控制台
    2. 选择您的 Db2 实例并记下终端节点和端口号
    3. 在本地计算机上打开终端或命令提示符
    4. 如果尚未安装亚马逊云科技 CLI 工具,请安装
    5. 使用您的亚马逊云科技证书配置亚马逊云科技 CLI 工具。
    6. 使用以下命令使用 Amazon RDS for Db2 CLI 连接到您的 Db2 实例(为您的 Db2 实例提供相应的值):
      db2 connect to <database_name> user <username> using <password>
      Code
    7. 连接到 DB2 实例后,使用以下命令启动完整备份:
      db2 backup database <database_name> to <backup_location>
      Code

      提供数据库的名称和所需的备份文件位置。这可能是您计算机上的本地目录或 S3 存储桶。

备份过程将开始,您可以在终端中监控进度。

结论

在这篇文章中,我们探讨了 RDS 数据库长期数据备份的丰富前景,展示了可供组织使用的各种选择。从自动备份和快照导出到 Amazon S3 等内置亚马逊云科技解决方案,到涉及 Amazon Backup 的更高级策略,我们重点介绍了可供您使用的强大而灵活的工具。

如果您有任何反馈或问题,请在评论部分留言。


作者简介

Babaiah Valluru 在亚马逊云科技专业服务团队担任首席数据库顾问。他专门从事数据库迁移,帮助客户进行同构和异构数据库迁移以及数据分析服务。除了在数据库技术方面的专业知识外,Babaiah 还热衷于探索和学习人工智能和机器学习服务。凭借对 MySQL、PostgreSQL 和 MongoDB 等开源数据库的深刻理解,Babaiah 利用这些知识来指导亚马逊云科技客户完成复杂的云转型项目。在业余时间,Babaiah 喜欢旅行和与家人和朋友共度时光。

谢莱什·米什拉 是亚马逊云科技金融服务行业 (FSI) 团队的高级解决方案架构师。他专门研究数据库和分析技术以及迁移策略。Shailesh 利用他的专业知识指导客户开启他们的亚马逊云科技云采用之旅,制定与亚马逊云科技架构完善的优秀实践相一致的强大解决方案。作为生成式人工智能爱好者,他还帮助客户利用这项尖端技术的潜力。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。