产品展示

使用 MySQL Shell 和 Amazon S3 降低 Amazon Aurora MySQL

使用 MySQL Shell 和 Amazon S3 降低 Amazon Aurora MySQL

降低 Amazon Aurora MySQL 备份成本的方法

关键要点

本篇文章探讨了如何通过使用 MySQL Shell 与 Amazon S3 整合来降低 Amazon Aurora 的备份成本,尤其适用于长达 35 天以上的备份保留期。使用此方法能够将备份文件压缩并直接上传至 Amazon S3,降低存储费用并简化备份流程。

Amazon Aurora 自动备份集群卷,并在备份保留期内保留恢复数据。Aurora 自动备份是持续性的增量备份,您可以在 1 到 35 天的备份保留期内恢复到任意时间点。如果需要保留超过 35 天的备份,您可以手动创建 快照 或导出快照,这些快照不会过期。然而,手动快照会产生完整快照的费用,这突显出需要一种经济高效的长期备份解决方案。

在本文中,我们讨论如何使用集成了 Amazon 简单存储服务Amazon S3的 MySQL Shell 来降低 Aurora 的备份成本。MySQL Shell 可以利用多个线程备份您的 Amazon Aurora MySQL 兼容版 数据库,并压缩后将其上传至 Amazon S3。在此基础上,还可以将备份生命周期转移至低成本的冷存储 Amazon S3 Glacier。根据需要,您可以从 S3 Glacier 中恢复一个临时副本。

解决方案概述

MySQL Shell 提供了备份数据库的转储和数据加载工具,支持多种选项以压缩格式将数据备份至 Amazon S3。例如,您可以使用 MySQL Shell 的转储工具备份整个实例、特定的模式或特定表。

以下图示说明了该解决方案的架构:

黑豹加速器app下载

工作流程包括以下步骤:

从 MySQL Shell 连接到 Aurora 数据库,并开始向 Amazon S3 进行数据库备份。MySQL Shell 连接到 Aurora,并执行数据库备份。MySQL Shell 将备份文件存储到 Amazon S3。配置 S3 生命周期配置 将备份转储文件从 Amazon S3 移动到 S3 Glacier。根据需要从 S3 Glacier 恢复备份文件到 Amazon S3。

前置条件

完成本次操作,您需要在与 Aurora 在同一 VPC 环境的 Amazon 弹性计算云Amazon EC2实例上安装 MySQL Shell。在本节中,我们将提供在 Linux、Windows 和 macOS 上的设置细节。

Linux 上安装 MySQL Shell 的步骤如下:

下载 MySQL Yum 仓库: bash wget https//devmysqlcom/get/mysql80communityreleaseel95noarchrpm安装下载的包: bash sudo rpm ivh mysql80communityreleaseel95noarchrpm更新软件包数据库: bash sudo yum update安装 MySQL Shell: bash sudo yum install mysqlshell通过运行以下命令验证 MySQL Shell 的安装: bash mysqlsh version在连接到 MySQL Shell 之前,设置 AWS 命令行界面AWS CLI 的凭证。

确保 MySQL Shell 客户端与 Aurora 数据库之间的连通性。

若要在 Windows 上设置 MySQL Shell,请参考 在 Microsoft Windows 上安装 MySQL Shell。对于 macOS,请参考 在 macOS 上安装 MySQL Shell。

连接到 MySQL Shell

通过发出以下命令启动 MySQL Shell:bash

mysqlsh这将打开 MySQL Shell,默认在 JavaScript 模式下未连接到任何服务器。使用sql、py和js 命令可以改变模式。

连接到 Aurora MySQL 数据库

使用具有足够权限备份数据库的用户,通过 Aurora 端点连接到 Aurora MySQL 数据库:bashmysqljsgt connect user@[Aurora Endpoint Name]有关更多信息,请参考 MySQL Shell 命令。

压缩并上传数据至 Amazon S3

现在,您可以一步备份数据库到 Amazon S3 并压缩。您可以使用不同的选项备份整个实例、特定模式、模式中的特定表,或特定模式的所有视图和表。备份命令在 MySQL Shell 提示符下运行,数据通过客户端传输到 Amazon S3。根据您将要使用的线程数量,调整您的 EC2 实例大小。

转储整个实例

以下示例演示了如何 转储 MySQL 实例 到名为 Bucket001 的 S3 桶中一个名为 test 的文件夹,使用多个线程及一些兼容选项:javascriptutildumpInstance(test{s3bucketName Bucket001 threads 4 compatibility [striprestrictedgrants stripdefiners ignoremissingpks] consistentfalse})输出将显示压缩率:OutputUncompressed data size 48986 GBCompressed data size 22033 GBCompression ratio 22Rows written 2501150319Bytes written 22033 GB

转储特定模式

以下代码将连接的 MySQL 实例中的 world 模式转储到 S3 桶:javascriptutildumpSchemas([world] worlddump { osBucketName Bucket001 threads 4 ocimds true compatibility [stripdefiners striprestrictedgrants]consistentfalse})

转储模式中的特定表

以下代码将 mylab 模式中的表 sbtest1 转储到 S3 桶,使用多个线程及一些兼容选项:javascriptutildumpTables(mylab [sbtest1] dumpspecifictablesutility {s3bucketName Bucket001 threads 4 compatibility [striprestrictedgrants stripdefiners ignoremissingpks] consistentfalse})

转储指定模式中的所有视图和表

以下代码将特定模式中的所有视图和表转储:javascriptutildumpTables(mylab [] dumpspecifictablesutilityall {s3bucketName Bucket001 threads 4 compatibility [striprestrictedgrants stripdefiners ignoremissingpks] consistentfalse all true})

将备份移动到 S3 Glacier 存储类别

要长期或无限期保留备份,并降低成本,可以为存放在 Amazon S3 中的数据应用 生命周期策略,将其转移至 S3 Glacier 存储类别。例如,要保留文件超过 35 天,使用 S3 Glacier 弹性检索应用以下生命周期策略:bashaws s3api getbucketlifecycleconfiguration bucket Bucket001{ Rules [ { ID Movetos3Glacier Filter {} Status Enabled Transitions [ { Days 35 StorageClass GLACIER } ] } ]}

从 S3 Glacier 存储类别恢复备份到 Amazon S3

要访问存档在 S3 Glacier 存储类别中的备份,使用 RestoreObject 操作。该操作会将备份文件的临时副本恢复到 S3 桶中,供指定时长访问。恢复的对象在 S3 桶中的可用性取决于设置,直到过期。如果需要永久副本,恢复备份后请在 S3 桶中创建其副本。

使用以下命令恢复对象:bashaws s3api restoreobject bucket DOCEXAMPLEBUCKET key dir1/exampleobj restorerequest {Days25GlacierJobParameters{TierStandard}}

如果 JSON 语法在 Windows 客户端中出错,可以将恢复请求替换为以下语法:bashrestorerequest Days=25GlacierJobParameters={Tier=Standard}

监控恢复对象请求的状态:bashaws s3api headobject bucket DOCEXAMPLEBUCKET key dir1/exampleobj

从 Amazon S3 恢复备份到 Aurora MySQL 实例

要从 Amazon S3 恢复数据到 Aurora MySQL 实例,创建 AWS 身份与访问管理IAM角色,以将权限从 Amazon 关系数据库服务Amazon RDS委托给您的 S3 桶。创建 IAM 角色时,附加信任和权限策略。有关注意事项,请参考 创建角色以委托权限给 AWS 服务。

您可以使用 MySQL Shell utilloadDump 工具 从 Amazon S3 导入数据到新的 Aurora MySQL DB 实例。以下示例展示了如何从 S3 桶名为 Bucket001 的名为 test 的文件夹中加载 MySQL 转储:javascriptutilloadDump(test {s3BucketName Bucket001 threads 4})

对于 Windows 用户,请参考 将备份恢复到 MySQL DB 实例。

成本比较

我们分析了 1 TB 的 Aurora 快照、Amazon S3 和 S3 Glacier 存储类别在不同保留期的 AWS 存储费用,发现与 Aurora 快照相比,Amazon S3 标准备份存储节省高达 59,而 S3 Glacier 弹性检索存储节省高达 580。以下表格展示了美国东部北弗吉尼亚地区的费用。请注意,这些数字基于我们的测试,节省的金额可能会因数据种类和结果转储文件的压缩率而变化。

服务月成本 (每GB )大小 (TB)1 月1 年7 年Amazon Aurora 快照0021121502580481806Amazon S3 标准不常用存储0012112801536001075Amazon S3 Glacier 弹性检索存储00036136844230309

有关不同区域定价的详细信息,请参考 Amazon Aurora 定价 和 Amazon S3 定价。

清理

为了防止未来产生额外费用,测试完成后,请按照以下步骤删除您的资源:

使用 AWS CLI 删除 S3 桶中的备份文件: bash aws s3 rm s3//bucketname/example/filenametxt使用 AWS CLI 从 Amazon S3 桶中删除备份存档文件: bash aws glacier deletearchive vaultname awsexamplevault accountid 111122223333 archiveid= archiveid 从 DB 集群或 Aurora 集群删除 Aurora MySQL 实例。删除 EC2 实例。

结论

在本文中,我们探讨了如何使用 MySQL Shell、Amazon S3 和 S3 Glacier 存储类别来降低长期保留的 Aurora 备份成本。这种方法提供了备份整个实例、特定模式或特定表,以及特定模式下所有视图和表的灵活性,利用多个线程快速实现压缩格式的一步备份。这个过程让您避免了将数据导出到 Amazon S3 的费用以及更长保留期的手动快照费用。MySQL Shell 提供了一种简单且经济高效的方式来备份您的 Aurora MySQL 数据库,确保长期保留。

请测试本文中概述的过程,通过部署提供的示例代码并在评论区分享您的反馈。

关于作者

Pooja Singh 是亚马逊云服务AWS企业支持的高级技术客户经理。Pooja 为独立软件供应商ISVs提供战略技术指导,以便在 AWS 上高效地创新与运营其工作负载。

使用 MySQL Shell 和 Amazon S3 降低 Amazon Aurora MySQL

Rekha Anupati 是数据库专员 SA,专门协助客户迁移和现代化其数据库至 AWS 云。她在空闲时间喜欢与家人朋友共度时光。

Aditya Samant 是一位拥有超过 20 年商业及开源数据库经验的关系数据库行业老兵。他目前在亚马逊云服务担任高级数据库解决方案架构师。在这个角色中,他与客户携手设计可扩展、安全和强大的云原生架构,同时与服务团队密切合作,设计和交付新的功能。

加载评论

  1. 使用 Amazon Textract、Amazon Bedrock 和 LangChain 的智能文 使用 Amazon Textract、Amazon Bedrock 和 LangChain 的智能文

    智能文档处理:结合 Amazon Textract、Amazon Bedrock 和 LangChain作者:Sonali Sahu、Anjan Biswas 和 Chinmayee Rane,发表于 2023 年 10 月 24 日在 Amazon Bedrock、Amazon Machine L...

  1. 利用亚马逊 Q Business 和自然语言,为企业解锁结构化数据的力量 机器学习博客 利用亚马逊 Q Business 和自然语言,为企业解锁结构化数据的力量 机器学习博客

    利用自然语言解锁企业结构化数据的潜力关键要点在企业环境中,通过自然语言处理来访问和查询结构化数据正变得越来越重要。本文讨论了如何使用 Amazon Q Business 架构来简化数据访问,使非技术用户能够轻松查询数据,从而提高企业的数据驱动决策能力。在企业环境中,生成式人工智能AI和大型语言模型L...