712
手机大全
本地PostgreSQL迁移至RDS for PostgreSQL__数据迁移_用户指南_数据传输-阿里云
使用数据传输DTS可以将本地PostgreSQL实例的数据迁移到RDS For PostgreSQL实例。PostgreSQL迁移支持增量数据同步功能,可以实现在本地应用不停服的情况下,平滑完成PostgreSQL数据库的迁移工作。
本小节简单介绍使用DTS进行PostgreSQL->RDS for PostgreSQL数据迁移的任务配置流程。
迁移类型简介
结构迁移
数据传输DTS将迁移对象的结构定义迁移到目标实例。对于PostgreSQL,数据传输服务支持结构迁移的对象包含:Table、trigger、view、sequence、function、user defined type、rule、domain、operation、aggregate。
全量数据迁移
数据传输DTS将源数据库迁移对象的存量数据全部迁移到目标实例。
增量数据迁移
增量数据迁移将迁移过程中,本地PostgreSQL实例的增量更新数据同步到目标RDS实例,最终实现本地PostgreSQL同目标RDS实例进入动态数据同步的过程。使用增量数据迁移,可以实现在本地PostgreSQL正常提供服务的时候,平滑完成PostgreSQL->RDS For PostgreSQL的数据迁移。
迁移限制
- 源实例,支持PostgreSQL 9.2、9.3、9.4
- 迁移过程中,不支持DDL操作
- 不支持迁移使用C语言编写的function
- 如果使用了对象名映射功能后,依赖这个对象的其他对象可能迁移失败
迁移权限要求
当使用数据传输服务进行PostgreSQL迁移时,在不同迁移类型情况下,源跟目标数据库的迁移帐号权限要求如下:
迁移类型 | 结构迁移 | 全量迁移 | 增量数据迁移 |
---|---|---|---|
本地PostgreSQL实例 | pg_catalog的usage权限 | 迁移对象的select | superuser |
目的RDS实例 | 迁移对象的create、usage权限 | schema的owner | schema的owner |
迁移顺序
数据传输服务在进行PostgreSQL->RDS For PostgreSQL数据迁移时,为了解决对象间的依赖,提高迁移成功率。结构对象及数据的迁移顺序如下:
- 进行结构对象:Table、view、sequence、function、user defined type、rule、domain、operation、aggregate的迁移
- 全量数据迁移
- 进行结构对象:trigger、foreign key的迁移
全量数据迁移完成后,任务列表中的迁移进度为:结构迁移100%,全量迁移100%,迁移状态为“迁移中”,此时迁移任务正在进行步骤(3)中的对象的迁移。此时,请勿手动结束任务,否则会造成迁移数据丢失。
迁移步骤
下面详细介绍下使用DTS将本地的PostgreSQL数据库迁移到RDS for PostgreSQL的任务配置流程。
RDS实例数据库创建
在数据迁移过程中,如果待迁移的数据库在目标RDS实例中不存在,那么DTS自动会创建。但是对于如下两种情况,用户需要在配置迁移任务之前,手动创建数据库。
- 数据库名称不符合:RDS定义规范(由小写字母、数字、下划线、中划线组成,字母开头,字母或数字结尾,最长64个字符)。
- 待迁移数据库,在本地PostgreSQL跟目标RDS For PostgreSQL实例中存储名称不同。
对于这两种情况,用户需要在配置迁移任务之前,先在RDS控制台完成数据库创建。具体参考RDS数据库创建流程。
迁移帐号创建
迁移任务配置,需要提供Oracle数据库及目标RDS实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求。
如果您的本地PostgreSQL或RDS For PostgreSQL实例的迁移账号尚未创建,那么可以参考如下流程创建迁移账号:
通过PostgreSQL客户端,在PostgreSQL中创建迁移账号。
create user username password 'password'
如果您要使用增量迁移,那么创建的账号必须是superuser,所以创建账号语句调整为:
create user username with superuser password 'password'
参数说明:
- username:要创建的账号
- password:该账号的登录密码
给迁移账号授权,本地PostgreSQL及RDS For PostgreSQL的迁移账号权限要求详见上表。
GRANT privileges ON tablename TO username;
参数说明:
- privileges:该账号的操作权限,如 SELECT、INSERT、UPDATE 等。如果要授权该账号所有权限,则使用 ALL
- tablename:表名。如果要授权该账号所有的表权限,则使用通配符 *
- username:要授权的账号名
逻辑流复制插件安装
如果您需要使用增量数据迁移进行不停机迁移,那么在任务配置之前,需要在本地PostgreSQL中安装DTS提供的逻辑流复制插件。
插件下载。
插件安装。
- 解压下载的压缩包。
将ali_decoding.so文件拷贝到 PostgreSQL安装路径的lib目录下。
如果用rpm包安装,那么这个绝对路径为:/usr/pgsql-{$version}/lib/,其中$version为版本号,例如版本为9.5,那么绝对路径为:/usr/pgsql-9.5/lib。
将ali_decoding.contorl文件拷贝到PostgreSQL安装路径下的share/extension 目录下。
如果用rpm包安装,那么这个绝对路径为:/usr/pgsql-${version}/share/extension/,其中${version}为PostgreSQL版本号,如果版本为9.5,那么绝对路径为:/usr/pgsql-9.5/share/extension/。
测试安装是否成功。
使用superuser账号登录PostgreSQL客户端,运行如下SQL,看是否能够成功创建replication slot。如果成功创建那么说明插件安装成功。
SELECT * FROM pg_create_logical_replication_slot('replication_slot_test', 'ali_decoding');
如果输出结果如下,说明插件安装成功。
测试成功后,使用如下SQL将replication slot删除掉。
SELECT pg_drop_replication_slot('replication_slot_test');
迁移任务配置
当上面的所有前置条件都配置完成后,就可以开始正式的数据迁移了。下面详细介绍迁移任务配置流程。
- 进入数据传输DTS控制台,点击右上角的创建迁移任务,开始迁移任务配置。
本地PostgreSQL跟目标RDS For PostgreSQL实例连接信息配置。
这个步骤主要配置 迁移任务名称,PostgreSQL连接信息及目标RDS For PostgreSQL实例连接信息。其中:
任务名称
DTS为每个任务自动生成一个任务名称,任务名称没有唯一性要求。您可以根据需要修改任务名称,建议为任务配置具有业务意义的名称,便于后续的任务识别。
源实例信息
- 实例类型:选择 有公网IP的自建数据库
- 数据库类型: 选择 PostgreSQL
- 主机名或IP地址: 配置PostgreSQL访问地址,这个地址必须为公网访问方式
- 端口:本地PostgreSQL实例的监听端口
- 数据库名称:连接PostgreSQL的默认数据库名
- 数据库账号:本地PostgreSQL实例的连接账号
- 数据库密码:本地PostgreSQL实例连接账号对应的密码
目标实例信息
- 实例类型:选择 RDS实例
- RDS实例ID: 配置迁移的目标RDS实例的实例ID。 DTS支持经典网络、VPC网络的RDS实例
- 数据库名称:连接RDS For PostgreSQL的默认数据库名
- 数据库账号:RDS For PostgreSQL实例的连接账号
- 数据库密码:上面RDS For PostgreSQL实例连接账号对应的密码
当配置完连接信息后,点击右下角 授权白名单并进入下一步 进行白名单授权。这个步骤DTS会将DTS服务器的IP地址添加到目标RDS实例的白名单中,避免因为RDS实例设置了白名单,导致DTS服务器连接不上RDS实例导致迁移失败。
选择迁移对象及迁移类型。
迁移类型
对于PostgreSQL->RDS For PostgreSQL,支持 结构迁移、全量数据迁移、增量数据迁移。
如果只需要进行全量迁移,那么迁移类型选择:结构迁移+全量数据迁移。
如果需要进行不停机迁移,那么迁移类型选择:结构迁移+全量数据迁移+增量数据迁移。
迁移对象
选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。默认情况下,对象迁移到RDS for PostgreSQL实例后,对象名跟本地PostgreSQL实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用DTS提供的对象名映射功能,详细使用方式可以参考库表列映射。
预检查。
在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。预检查的内容及修复方式可以参考本文末尾的 预检查简介 一节。
如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。
启动迁移任务。
当预检查通过后,可以启动迁移任务,任务启动成功后,可以在任务列表中查看迁移的具体状态及迁移进度。
至此,完成本地PostgreSQL数据库到RDS for PostgreSQL实例的数据迁移任务配置。
预检查内容
DTS在启动迁移之前,会进行前置预检查,本小节简单介绍PostgreSQL->RDS for PostgreSQL的预检查内容:
预检查项 | 检查内容 | 备注 |
---|---|---|
源库连接性检查 | 检查DTS服务同本地PostgreSQL实例的连通性 | (1) 填写信息是否有误?如果填写信息有误,请修改后重新预检查 (2) 检查端口是否配置从其他服务器连接 |
目的库连接性检查 | 检查DTS服务同目的RDS For PostgreSQL实例的连通性 | 检查填写信息是否有误,如果有误请先修改后重新预检查 |
目的库连接性检查 | 检查DTS服务同目的RDS For PostgreSQL实例的连通性 | 检查填写信息是否有误,如果有误请先修改后重新预检查 |
源库版本检查 | 检查本地PostgreSQL版本跟目标RDS For PostgreSQL是否一致 | 如果版本不一致,预检查会有提醒。可以根据提醒对本地PostgreSQL进行升级或降级,也可以继续迁移 |
数据库可用性检查 | 检查待迁移数据库在目标RDS For PostgreSQL是否已存在 | 如果待迁移数据库命名规范不满足RDS实例要求,那么DTS在目标RDS实例创建待迁移数据库会报错失败,即数据库可用性检查会失败。此时可以参考 库表列映射 对迁移数据库进行重命名 |
源库权限检查 | 检查任务配置时,提供的本地PostgreSQL数据库账号的权限是否满足要求 | 如果检查失败,那么请参考本文 迁移账号创建 一节对迁移账号进行授权后,重新进行预检查 |
目的库权限检查 | 检查任务配置时,提供的目的RDS For PostgreSQL数据库账号的权限是否满足要求 | 如果检查失败,那么请参考本文 迁移账号创建 一节对迁移账号进行授权后,重新进行预检查 |
同名对象存在性检查 | 检查待迁移对象在目标RDS For PostgreSQL实例中是否已经存在 | 如果检查失败,请将目标库中这些已经存在的对象删除后,重新进行预检查 |
源端同名对象存在性检查 | 检查要迁移到同一个数据库中的多个对象是否重名 | 如果检查失败,可以参考 库表列映射 将重名对象进行重命名 |
约束完整性检查 | 检查待迁移对象依赖的父对象是否迁移 | 如果检查失败,那么可以修改迁移对象,同时迁移依赖的父对象后,重新预检查 |
增量拓扑冲突检查 | 检查同一个迁移对象是否已经存在迁移链路 | 如果存在冲突链路,那么需要删除掉冲突链路后,重新预检查 |
LC_MONETERY 一致性检查 | 检查源库、目标库的Lc_monetery定义是否一致 | 如果检查失败,可以修改目标RDS For PostgreSQL的LC_MONETERY定义,或者继续迁移 |
PostgreSQL逻辑流复制插件检查 | 检查本地PostgreSQL实例是否安装了逻辑流复制插件 | 如果检查失败,可以参考下面的 逻辑流复制插件安装 一节安装逻辑流复制插件后重新预检查 |
PostgreSQL逻辑流slot存在性检查 | 检查本地PostgreSQL实例存在跟DTS创建的replication slot重名的replication slot | 如果检查失败,可以删除本地PostgreSQL中已经存在的同名replication slot后,重新预检查 |
最后更新:2016-11-23 16:03:55
上一篇:
Oracle到PPAS不停机数据迁移__数据迁移_用户指南_数据传输-阿里云
下一篇:
从本地MongoDB迁移到MongoDB实例__数据迁移_用户指南_数据传输-阿里云
数据库专家在线保障__工作说明书_尊享服务_支持计划-阿里云
6.3 使用ACL进行权限管理__第六章 用户与权限_使用手册_分析型数据库-阿里云
获取解析记录列表__解析管理接口_API文档_云解析-阿里云
Spark + Log Service__Spark_开发人员指南_E-MapReduce-阿里云
ServiceParameterMap__数据类型_API_API 网关-阿里云
快速入门概述__快速开始_企业级分布式应用服务 EDAS-阿里云
不同企业之间的资源操作与授权管理__使用场景_用户指南_访问控制-阿里云
5.1 数据的导入__第五章 Data Pipeline_使用手册_分析型数据库-阿里云
资源授权场景__场景示例_Open API_消息队列 MQ-阿里云
ECS 产品调价细则(20161015起)__购买指南_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云