通过 Amazon S3 将 Db2 数据迁移到 Amazon RDS for Db2
通过这种迁移方法,您首先将单个表中的数据保存到您放入 Amazon S3 存储桶中的数据文件。然后,可以使用 LOAD command
将数据保存到 Amazon S3
要将单个表中的数据保存到 Amazon S3,请使用数据库实用程序来将数据从数据库管理系统(DBMS)提取到 CSV 文件中。然后,将数据文件上传到 Amazon S3。
要在 Amazon S3 上存储数据文件,您需要以下 Amazon 组件:
-
用于存储备份文件的 Amazon S3 存储桶:如果您已有一个 S3 存储桶,则可以使用该存储桶。如果没有 S3 存储桶,请参阅《Amazon S3 用户指南》中的创建存储桶。
-
访问 S3 存储桶的 IAM 角色:如果已经有一个 IAM 角色,则可以使用该角色。如果您还没有角色,请参阅步骤 2:创建 IAM 角色并附加您的 IAM policy。
-
一个 IAM 策略,其中包含附加到 IAM 角色的信任关系和权限:有关更多信息,请参阅步骤 1:创建 IAM policy。
-
添加到 RDS for Db2 数据库实例的 IAM 角色:有关更多信息,请参阅步骤 3:将您的 IAM 角色添加到 RDS for Db2 数据库实例。
将数据加载到 RDS for Db2 表中
在将数据文件保存到 Amazon S3 后,可以将这些文件中的数据加载到 RDS for Db2 数据库实例上的各个表中。
将 Db2 表数据加载到 RDS for Db2 数据库表中
-
使用 RDS for Db2 数据库实例的主用户名和主密码连接到
rdsadmin
数据库。在以下示例中,用您自己的信息替换master_username
和master_password
。db2 connect to rdsadmin user
master_username
usingmaster_password
-
对存储访问权限别名进行编目,该别名指向存储已保存文件的 Amazon S3 存储桶。记下该别名的名称,以供在下一个步骤中使用。如果您计划从存储在同一 Amazon S3 存储桶中的数据文件加载多个表,则只需执行一次此步骤。
以下示例对名为
my_s3_alias
的别名进行编目,该别名向名为jorge_souza
的用户授予访问名为amzn-s3-demo-bucket
的存储桶的权限。db2 "call rdsadmin.catalog_storage_access(?, '
my_s3_alias
', 'amzn-s3-demo-bucket
', 'USER', 'jorge_souza
')"有关此存储过程的更多信息,请参阅rdsadmin.catalog_storage_access。
-
使用指向您的 Amazon S3 存储桶的存储访问权限别名运行
LOAD
命令。注意
如果
LOAD
命令返回错误,则可能需要为 Amazon S3 创建 VPC 网关端点,并将出站规则添加到安全组。有关更多信息,请参阅 文件 I/O 错误。以下示例将名为
my_s3_datafile.csv
的数据文件中的数据加载到名为my_db2_table
的表中。该示例假设数据文件位于名为my_s3_alias
的别名所指向的 Amazon S3 存储桶中。db2 "load from db2remote://
my_s3_alias
//my_s3_datafile.csv
of DEL insert intomy_db2_table
";以下示例将名为
my_table1_export.ixf
的数据文件中的 LOB 加载到名为my_db2_table
的表中。该示例假设数据文件位于名为my_s3_alias
的别名所指向的 Amazon S3 存储桶中。db2 "call sysproc.admin_cmd('load from "db2remote://
my_s3_alias
//my_table1_export.ixf
" of ixf lobs from "db2remote://my_s3_alias
//" xml from "db2remote://my_s3_alias
//" modified by lobsinfile implicitlyhiddeninclude identityoverride generatedoverride periodoverride transactionidoverride messages on server replace into "my_schema
"."my_db2_table
" nonrecoverable indexing mode incremental allow no access')"对 Amazon S3 存储桶中要加载到 RDS for Db2 数据库实例的表中的每个数据文件重复此步骤。
有关
LOAD
命令的更多信息,请参阅 LOAD command。