RDS 数据库快照导出到 S3
=== 介绍
- 所有类型的 RDS 备份都可以导出到 S3,无论是自动备份、手动备份还是由 AWS 备份服务创建的备份。
- 导出到 s3 的步骤:
- 我们必须创建具有所需 IAM 权限的 Amazon S3 存储桶,并创建用于服务器端加密 (SSE) 的 KMS 密钥。
- 快照可以通过控制台或 CLI 命令导出。
- 导出在后台运行。它不会影响任何类型的数据库性能。
- 导出到 S3 的数据始终采用 Apache Parquet 格式。与其他格式相比,Parquet 格式的导出速度提高了 2 倍,在 Amazon S3 中消耗的存储空间最多减少了 6 倍。
- 导出的数据可以由其他 AWS 服务(如 Amazon Sagemaker、Amazon EMR 和 Amazon Athena)进行分析。
=== 使用案例
- 灾难恢复
- 数据迁移
- 使用 Amazon Sagemaker、Amazon EMR 和 Amazon Athena 等 AWS 服务对导出的快照执行查询。
=== 架构图
=== 创建 S3 存储桶
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 S3
- 在 S3 页面上,单击
创建存储桶
并填写存储桶详细信息。- 桶名称:输入
export-snapshot-demo
- 注意: S3 存储桶名称是全局唯一的,请选择一个可用的名称。
- AWS 区域:选择美国东部(弗吉尼亚北部)美国东部-1
- 对于对象所有权:选择ACL 已禁用
- 将其他设置保留为默认值。
- 创建存储桶按钮
- S3 存储桶已创建。
=== 创建 KMS 密钥
- 顶部菜单导航到 KMS
- 在 KMS 控制台中,导航到客户管理的密钥,然后单击创建密钥。
- 选择"密钥类型"作为"对称",然后单击"下一步"。
- 在"添加标签"下,提供以下详细信息:
- 别名:输入
kmskey_1
- 描述:输入
Used for RDS Snapshot exports to S3 of the "database-demo" DB Instance
- 单击"下一步"。
- 将"定义关键管理权限"保留为默认值,然后单击"下一步"。
- 将"定义密钥使用权限"保留为默认值,然后单击"下一步"。
- 单击"完成"。
- 单击创建的 KMS 密钥。复制 ARN 并将其保留以供将来参考。
=== 为 RDS 数据库实例创建安全组
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域
- 顶部菜单导航到 EC2
- 左侧面板,单击"网络和安全",然后单击"创建安全组"。
- 安全组名称:输入RDS_lab_sg
- 描述:Security group for RDS
- VPC:选择默认VPC
- 在"入站规则"下,单击"添加规则"。
- 添加 MYSQL/Aurora
. 选择类型: 选择 MYSQL/Aurora
. 协议:TCP
. 端口范围:3306
. 源:选择"任何位置"
- 将其他内容保留为默认值,然后单击创建安全组按钮。
- 现已创建安全组。
=== 创建 RDS 数据库实例
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域
- 通过菜单导航到 RDS。
- 单击"数据库"部分中的"创建数据库"按钮。
- 指定数据库详细信息:
- 实例规格
** 数据库创建方法:标准创建
** 引擎选项:选择 MySQL
** 版本 : 默认
** 模板 :选择开发/测试
** 数据库实例标识符:demo-db
** 主用户名:whizlabs
** 主密码和确认密码:Whizlabs123
** 注意:这是用于登录数据库的用户名/密码组合。请记下它们。
** 数据库实例类 : db.t3.micro
** 存储类型 : 通用型 (SSD)
** 分配的存储:20(默认值)
** 启用存储空间自动缩放:取消选中
** 公共访问 : 选择是
** VPC 安全组: 选择现有
** 安全组注意:删除默认安全组,然后选择RDS_lab_sg
- 转到其他配置选项
- 初始数据库名称:demodb
- 数据库参数组:默认
- 选项组:默认
- 启用自动备份:取消选中
- 日志导出:本练习不需要日志导出。
- 注意:将其他所有设置保留为默认值
- 单击"创建数据库"
- 导航到"数据库"。
- 在 RDS 控制台上,将显示新数据库实例的详细信息。数据库实例的状态为"正在创建",直到数据库实例可供使用。
- 当状态更改为可用时,您可以连接到数据库实例。新实例状态变为"可用"之前最多可能需要 20 分钟。
==== 单击数据库标识符demo-db
并复制数据库终端节点。
=== 使用 MySQL 工具连接到数据库实例上的 RDS 数据库
- 使用 MySQL 图形化连接工具连接到数据库实例上的数据库,请查找数据库实例的终端节点(DNS 名称)和端口号。
- 导航到并单击"demo-db"。
- 在"连接和安全"部分下,复制并记下终端节点和端口。
- 终端节点:复制终端节点
- 端口:3306
- 您需要终端节点和端口号才能连接到数据库实例。
- 打开 MySQL 图形化连接工具。单击加号图标
==== 本机情况
- 连接名称:输入示例名称 MyDatabseConnection
- 主机名:已复制的终端节点
- 端口: 3306
- 用户名: whizlabs
- 密码: Whizlabs123
- 单击"测试连接"以确保能够正确连接到数据库。
- 单击"保存"以保存连接。
- 成功连接并打开数据库后,可以创建表并对连接的数据库执行各种查询。
=== 创建示例数据库和表
- 在 SQL 编辑器中,让我们创建一个示例数据库和一个表,用于练习目的。
- 现在复制下面的MySQL命令并将其粘贴到"查询"选项卡中。
CREATE DATABASE SchoolDB;
use SchoolDB;
CREATE TABLE IF NOT EXISTS subjects (
subject_id INT AUTO_INCREMENT,
subject_name VARCHAR(255) NOT NULL,
teacher VARCHAR(255),
lesson TEXT,
PRIMARY KEY (subject_id)
) ENGINE=INNODB;
INSERT INTO subjects(subject_name, teacher, lesson) VALUES ('English', 'John Taylor', 'Chapter one');
INSERT INTO subjects(subject_name, teacher, lesson) VALUES ('Science', 'Mary Smith', 'Chapter four');
INSERT INTO subjects(subject_name, teacher, lesson) VALUES ('Maths', 'Ted Miller', 'Chapter ten');
INSERT INTO subjects(subject_name, teacher, lesson) VALUES ('Arts', 'Suzan Carpenter', 'Chapter seven');
select * from subjects;
- 我们创建了一个示例数据库和表。
=== 从现有数据库实例拍摄快照
- 让我们拍摄数据库的快照。
- 选择创建的数据库实例,然后单击操作。
- 从选项中单击拍摄快照。
- 为快照命名,
demo-db-snapshot
,然后单击"拍摄快照"按钮。
- 创建快照需要 3-5 分钟。一段时间后刷新,快照创建状态将为"可用"。
=== 将数据库快照导出到 S3
- 让我们将快照导出到 S3。
- 选择创建的快照,然后单击操作。
- 从选项中单击导出到 Amazon S3。
- 在"设置"下,指定一个名称以标识导出:
- 导出标识符:输入
snap-export-s3
- 将导出的数据保留为默认值。
- 在 S3 下,从下拉列表中选择创建的 S3。
- 在 IAM 角色下,选择从下拉列表中创建新角色,并将该角色的名称指定为
export-iam-role
。- 注意:请勿选择存在的任何其他 IAM 角色。选择仅创建新角色。
- 从下拉列表中选择刚刚创建的 KMS 密钥,或输入我们在创建密钥时记下的 ARN。
- 查看所有设置,然后单击导出到 Amazon S3。
- 这可能需要长达 20-25 分钟,因为它正在导出整个数据库。导出完成后,您可以看到"完成"状态。
- 注意:您还将在导出到 Amazon S3 选项卡中看到其他导出。
=== 检查 Amazon S3 中的导出数据
- 导出完成后,导航到创建的 S3 存储桶。
- 您将能够看到一个包含导出标识符名称的文件夹。
- 单击该按钮时,您可以看到2个JSON文件。
- 第一个 JSON 文件是导出任务的最终报告。
- 第二个 JSON 文件为我们提供了有关单个表的信息,包括总体大小和数据类型映射。
- 您可以看到我们之前创建的 SchoolDB 数据库。
- 这样,我们就将数据库快照导出到了 S3 存储桶。
标签:快照,单击,S3,创建,数据库,导出,AWS52 来源: https://www.cnblogs.com/ajajroom/p/16408420.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。