计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
弹性伸缩 AS
镜像服务 IMS
专属主机 DeH
函数工作流 FunctionGraph
云手机服务器 CPH
Huawei Cloud EulerOS
网络
虚拟私有云 VPC
弹性公网IP EIP
虚拟专用网络 VPN
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
VPC终端节点 VPCEP
云连接 CC
企业路由器 ER
企业交换机 ESW
全球加速 GA
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
边缘安全 EdgeSec
威胁检测服务 MTD
CDN与智能边缘
内容分发网络 CDN
CloudPond云服务
智能边缘云 IEC
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
云搜索服务 CSS
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
数据可视化 DLV
数据湖工厂 DLF
湖仓构建 LakeFormation
企业应用
云桌面 Workspace
应用与数据集成平台 ROMA Connect
云解析服务 DNS
专属云
专属计算集群 DCC
IoT物联网
IoT物联网
设备接入 IoTDA
智能边缘平台 IEF
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
国际站常见问题
ICP备案
我的凭证
支持计划
客户运营能力
合作伙伴支持计划
专业服务
区块链
区块链服务 BCS
Web3节点引擎服务 NES
解决方案
SAP
高性能计算 HPC
视频
视频直播 Live
视频点播 VOD
媒体处理 MPC
实时音视频 SparkRTC
数字内容生产线 MetaStudio
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
存储容灾服务 SDRS
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属分布式存储服务 DSS
容器
云容器引擎 CCE
容器镜像服务 SWR
应用服务网格 ASM
华为云UCS
云容器实例 CCI
管理与监管
云监控服务 CES
统一身份认证服务 IAM
资源编排服务 RFS
云审计服务 CTS
标签管理服务 TMS
云日志服务 LTS
配置审计 Config
资源访问管理 RAM
消息通知服务 SMN
应用运维管理 AOM
应用性能管理 APM
组织 Organizations
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
应用身份管理服务 OneAccess
数据库
云数据库 RDS
文档数据库服务 DDS
数据管理服务 DAS
数据复制服务 DRS
云数据库 GeminiDB
云数据库 GaussDB
分布式数据库中间件 DDM
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
人脸识别服务 FRS
图引擎服务 GES
图像识别 Image
内容审核 Moderation
文字识别 OCR
AI开发平台ModelArts
图像搜索 ImageSearch
对话机器人服务 CBS
华为HiLens
视频智能分析服务 VIAS
语音交互服务 SIS
应用中间件
分布式缓存服务 DCS
API网关 APIG
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
多活高可用服务 MAS
事件网格 EG
企业协同
华为云会议 Meeting
云通信
消息&短信 MSGSMS
云生态
合作伙伴中心
云商店
开发者工具
SDK开发指南
API签名指南
Terraform
华为云命令行工具服务 KooCLI
其他
产品价格详情
系统权限
管理控制台
客户关联华为云合作伙伴须知
消息中心
公共问题
开发与运维
应用管理与运维平台 ServiceStage
软件开发生产线 CodeArts
需求管理 CodeArts Req
部署 CodeArts Deploy
性能测试 CodeArts PerfTest
编译构建 CodeArts Build
流水线 CodeArts Pipeline
制品仓库 CodeArts Artifact
测试计划 CodeArts TestPlan
代码检查 CodeArts Check
代码托管 CodeArts Repo
云应用引擎 CAE
开天aPaaS
云消息服务 KooMessage
云手机服务 KooPhone
云空间服务 KooDrive

将PostgreSQL迁移到PostgreSQL

更新时间:2022-08-16 GMT+08:00

支持的源和目标数据库

表1 支持的数据库

源数据库

目标数据库

  • 本地自建PostgreSQL数据库
  • ECS自建PostgreSQL数据库
  • 其他云上PostgreSQL数据库
  • RDS for PostgreSQL
  • RDS for PostgreSQL

前提条件

  • 已登录数据复制服务控制台。
  • 满足实时迁移支持的数据库类型和版本,详情请参见实时迁移

使用建议

  • 数据库迁移与环境多样性和人为操作均有密切关系,为了确保迁移的平顺,建议您在进行正式的数据库迁移之前进行一次演练,可以帮助您提前发现问题并解决问题。
  • 迁移阶段,确保目标数据库无业务写入,保证迁移前后数据一致。
  • 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性迁移成功率,避免迁移对业务造成性能影响。
    • 在网络无瓶颈的情况下,全量迁移会对源数据库增加约20MB/s的查询压力,以及占用2~4个CPU。
    • DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。
  • 数据对比

    建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。

使用须知

在创建迁移任务前,请务必阅读以下使用须知。

表2 使用须知

类型名称

使用和操作限制

数据库权限设置

  • 全量迁移最小权限要求:
    • 源数据库账号需要具备数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,如果需要同步用户,还需要具有CREATEROLE权限。
    • 库级迁移时,目标数据库账户需要具有CREATEDB权限。
    • 表级迁移时,如果数据库不存在,目标数据库账户需要具有CREATEDB权限;如果数据库存在,目标数据库账户需要数据库的CREATE和CONNECT权限;如果模式存在,需要模式的CREATE和USAGE权限。

迁移对象约束

  • 支持的迁移对象有:表、索引、外键、存储过程、函数(不支持C语言函数、带有LEAKPROOF或SUPPORT属性的函数)、视图、约束、触发器、模式、插件、排序规则、编码转换信息、数据类型(不支持基本类型)、聚合函数、操作符、序列、物化视图、统计扩展、规则、事件触发器(仅PostgreSQL11.11及以上的目标库版本支持)、类型转换(不支持二进制强制型的类型转换)、转换信息、文本搜索配置、文本搜索字典、文本搜索解析器(仅PostgreSQL11.11及以上的目标库版本支持)、文本搜索模版(仅PostgreSQL11.11及以上的目标库版本支持)。
  • 目前暂不支持表空间、外部数据包装器、外部服务器、用户映射、发布、订阅等对象的迁移,不支持的对象将不被迁移。
  • 支持如下字段类型:数字类型、货币类型、字符类型、二进制数据类型、日期/时间类型、布尔类型、枚举类型、几何类型、网络地址类型、位串类型、文本搜索类型、UUID类型、XML类型、JSON类型、数组、复合类型、范围类型。
  • 插件迁移将在目标库使用默认版本创建插件对象,仅支持插件的对象的迁移,如果源库在使用某个插件的过程中有新增的插件元数据,请在迁移结束后使用该插件自有的语法重建元数据。
  • 不支持迁移源库中的临时表。
  • 不支持表名末尾是空格的表。
  • 支持在跨大版本间迁移,不允许从高的大版本迁移到低的大版本。
  • 不迁移数据库中的系统模式,包括:“pg_”开头的任何模式、“information_schema”,RDS for PostgreSQL增强版还包括“sys”、“utl_raw”、“dbms_lob”、“dbms_output”和“dbms_random”。

源数据库要求

  • 源数据库库名不支持如下字符:“+”、“%”、“"”、“'”、“\ ”、“<”和“>”,模式名和表名不支持“"”和“.”。
  • 源数据库中同一个数据库下的触发器名称必须唯一。
  • 源库的block_size参数不能大于目标库。
  • 源库不支持低于PostgreSQL 9.4的版本。
  • 源库为RDS for PostgreSQL增强版时,目标库仅支持RDS for PostgreSQL增强版。
  • 为保证源数据库连接的安全性,请将源库的ssl参数设置为on,且源库连接用户的认证方式必须为密码口令认证。认证方式的修改方法为在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host all <src_user_name> <drs_instance_ip>/32 md5”,在源库中通过SUPERUSER用户执行语句“select pg_reload_conf();”或重启数据库实例生效。

目标数据库要求

  • 目标库版本不能低于源库版本。
  • 目标数据库实例的运行状态必须正常。
  • 库级迁移时,如果源库不存在plpgsql之外的插件,目标数据库不能包含与指定数据库同名的数据库;如果源库安装了plpgsql之外的插件,请确保目标库仅在对应数据库中安装了插件,而未创建其他自建对象。
  • 表级迁移时,目标数据库不能包含与源库要迁移的对象同名的对象。
  • 目标数据库实例必须有足够的磁盘空间。
  • 目标数据库和源数据库的lc_monetary参数值需保持一致。
  • 目标数据库的block_size参数值必须大于源库中的对应参数值。

操作须知

  • 一个迁移任务只能对一个数据库进行数据迁移,如果一个PostgreSQL实例下有多个数据库需要迁移,则需要为每个数据库创建实时迁移任务。
  • 表级迁移仅支持表、视图、物化视图和序列的对象选择,表上所创建的约束、索引和规则将和表一起迁移,不迁移触发器。相互关联的数据对象要确保同时迁移或在目标库提前建好,避免迁移因关联对象缺失,导致迁移失败。常见的关联关系:视图引用表、视图引用视图、主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。
  • 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
  • 迁移过程中,目标库不能进行写入操作,否则会导致数据不一致。
  • 在任务全量迁移阶段,由于迁移期间源库发生的变更无法完全同步到目标库,所以源库不能有任何对象和数据的变更操作,否则会导致目标库与源库的对象和数据状态不一致。
  • 在任务启动、任务全量迁移阶段,不允许对源数据库做DDL操作,比如删除表、增加表等,这样会导致任务迁移失败。
  • 全量迁移物化视图后,如果目标数据库需要使用物化视图,需要执行以下刷新语句:
    refresh materialized view matviewname;

我们使用cookie来确保您的高速浏览体验。继续浏览本站,即表示您同意我们使用cookie。 详情

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容