使用数据传输服务(DTS)将本地数据库迁移到 RDS for PPAS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。迁移过程中,对本地的 Oracle 数据库没有影响。那么如何操作呢,阿里云城市服务商捷讯技术告诉您怎么使用怎么使用DTS迁移PPAS数据
首先我们来了解一下DTS数据迁移的背景,DTS 数据迁移支持 PPAS 的结构迁移和全量迁移。
结构迁移:DTS 会将迁移对象的结构定义迁移到目标实例。目前 DTS 支持结构迁移的对象有:表、视图、同义词、触发器、存储过程、存储函数、包、自定义类型。
全量迁移:DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果迁移过程中,本地 Oracle 数据库有数据写入的话,那么这些增量数据不一定能够被迁移到 RDS 中。所以,如果要保证数据一致性,那么尽量选择在业务低峰期进行全量迁移。
但将 PPAS 本地数据库迁移到 RDS 上有以下限制:
1)迁移过程中,不支持 DDL 操作
2)不支持物化视图的迁移
3) 结构迁移时,会将 reverse index 迁移成普通索引
4)结构迁移时,会将位图索引迁移成普通索引
5)结构迁移时,会将分区索引迁移成在每个分区上单独创建的索引
那么我们完成数据库迁移的前提条件是已完成 RDS 实例数据库的准备。下面我们来按一下具体的操作,本例以有公网 IP 的本地数据库迁移到 RDS 上为例。
第一步:准备本地数据
在正式迁移之前,需要先在本地数据库和 RDS 实例中创建迁移账号,并在 RDS 实例中创建要迁移的数据库,并将要迁移的数据库的读写权限授权给迁移账号。不同的迁移类型需要不同的权限,如下表所示。
1、通过 PostgreSQL 客户端,在本地数据库中创建迁移账号。
CREATE USER username IDENTIFIED BY password;
参数说明:
username:要创建的账号
password:该账号的登录密码
2、在本地数据库中给迁移账号授权,本地数据库中迁移账号的权限要求请参见上表。
GRANT privileges ON tablename TO username;
参数说明:
privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用ALL
Tablename :表名。如果要授权该账号所有的表权限,则使用通配符*
Username :要授权的账号名
第二步:正式迁移操作
1、在RDS管理控制台上单击迁移数据库,进入DTS,如下图所示。
数据库控制台
2、单击创建在线迁移任务,进入页面,如下图所示。
数据迁移
3、输入任务名称、本地数据库信息和目标数据库信息,单击授权白名单并进入下一步,如下图所示。根据系统指示步骤一步步完成。
4、选择迁移类型,并在迁移对象中选择要迁移的对象,将要迁移的对象放入已选择中,单击预检查并启动,如下图所示。
注意:
1、选择结构迁移时,如果目标 RDS 实例的数据库 mydatabase 中,不存在跟本地数据库迁移账号同名的 Schema,那么 DTS 会自动创建同名 Schema, 且 Schema 的 Owner 为迁移账号。
2、数据迁移只会将本地数据库的数据(结构)复制一份到目标数据库,并不会对本地数据库数据(结构)造成影响。
3、数据迁移过程中,不支持 DDL 操作,如进行 DDL 操作可能导致迁移失败。
4、DTS 增量迁移的时间最长支持 15 天,如果超过 15 天不停止任务,系统资源可能被回收。
如果要修改迁移对象在目标数据库上的名字,可以在 已选择 列表右侧单击编辑,修改已选择的对象名称。
预检查一般有两种结果,有一项或几项不通过或通过,以下以预检查不通过为例进行描述。
如果系统显示预检查结果有不通过的项,单击检测结果为失败的检测项后面的 !,查看失败详细信息,根据失败详细信息完成错误排查。错误排查完毕后,在迁移任务列表页面,选择当前迁移任务,单击启动再次完成迁移。
第三步、系统预检通过后
系统预检都通过后,直接点击确定。后续的操作便是因迁移账号拥有读写权限,为了保证本地数据库安全,需要在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。
系统预检查通过后,单击 确定,自动进行迁移任务,如下图所示。
系统预检查
第四步:后续操作
因迁移账号拥有读写权限,为了保证本地数据库安全,请在数据迁移完成后,删除本地数据库和 RDS 实例中的迁移账号。