
点击蓝字关注我们
一、EDB clone schema概述
EDB克隆架构是EDB Postgres Advanced Server的扩展模块,允许您将架构及其数据库对象从本地或远程数据库(源数据库)复制到接收数据库(目标数据库)。
二、EDB clone schema 特点
灵活性:
1. 源和目标数据库的可选性:源数据库和目标数据库可以是同一个物理数据库内的不同模式,也可以是同一数据库集群内的不同数据库,甚至可以是运行在不同数据库服务器上的独立数据库集群。
2. 多种复制方式:提供了多种函数来支持不同的复制需求,包括localcopyschema、localcopyschema_nb(非阻塞)、remotecopyschema、remotecopyschema_nb(非阻塞)。
丰富的数据库对象支持:
1. 支持克隆的数据库对象包括数据类型、表(包括分区表)、索引、约束、序列、视图定义、物化视图、私有同义词、表触发器(不包括事件触发器)、规则、函数、过程、包、所有支持对象类型的注释以及访问控制列表(ACLs)。
2. 不支持克隆的数据库对象包括大对象(如Postgres LOBs和BFILEs)、表的逻辑复制属性、数据库链接和外部数据包装器。
状态监控和日志管理:
1. 提供process_status_from_log函数来显示克隆函数的状态,以及remove_log_file_and_job函数来删除克隆过程中创建的日志文件和作业。
三、EDB克隆模式先决条件
当您在安装过程中在EDB Postgres高级服务器方言对话框中指定与Oracle兼容的编程语言时,EDB Postgres高级服务器支持在EDB克隆架构的外部服务器的CREATE USER MAPPING命令中定义的数据库超级用户,因此您已连接到目标或本地数据库。当您在文本模式安装或集群初始化过程中包含类似--redwood的关键字时,也支持它。
函数、过程、触发器、包等中的源代码在复制到目标模式后不会被修改。如果此类程序包含对具有模式名称的对象的编码引用,则如果此类模式名称在目标模式中不再一致,则程序在目标模式下调用时可能会失败。
未解决跨架构对象依赖关系,如果目标架构中的一个对象依赖于另一个架构中的对象,则克隆函数不会解析这种依赖关系。
对于远程克隆如果源架构中的对象依赖于扩展,则必须在调用远程克隆函数之前在远程数据库的公共架构中创建此扩展。
最多可以并行运行16个复制作业以克隆模式,每个作业最多可以有16个工作进程来并行复制表数据。
四、在EDB克隆架构中使用以下函数
Localcopyschema:此函数将模式及其数据库对象从源数据库复制到同一数据库(目标)中,但模式名称与原始数据库不同。当源架构和副本位于同一数据库中时使用此功能。
localcopyschema_nb:此函数执行与localcopyschema相同的目的,但作为后台作业,它释放了启动该函数的终端,此功能称为非阻塞功能。
远程复制模式:此函数用于将架构及其数据库对象从源数据库复制到其他目标数据库。当源架构和副本将驻留在单独的数据库中时使用此功能。单独的数据库可以驻留在相同的EDB Postgres Advanced Server数据库集群中,也可以驻留在不同的集群中。
remotecopyschema_nb:此函数执行与remotecopyschema相同的目的,但作为后台作业,它释放启动该函数的终端。此功能为非阻塞功能。
process_status_from_log:此功能显示克隆功能的状态:该信息是从调用克隆函数时指定的日志文件中获得的。
remove_log_file_and_job:此函数用于删除克隆函数创建的日志文件,还可以使用此功能删除由该功能的非阻塞形式创建的作业。
五、支持的数据库对象列表
数据类型
表包括分区表,不包括外来表
索引
约束条件
序列
查看定义
物化视图
私有同义词
表触发器,但不包括事件触发器
规则
功能
程序
包装
所有支持的对象类型的注释
所有受支持对象类型的访问控制列表(ACL)
您无法克隆以下数据库对象:
大型对象(Postgres LOB和BFILE)
表的逻辑复制属性
数据库链接
外部数据包装器
事件触发器
扩展
六、安装EXTENSION并解决故障

解决办法:dnf install -y edb-as16-pgagent


七. 修改EDB EPAS配置文件postgresql.conf

解决办法:
sudo dnf search parallel_clone
sudo dnf install -y edb-as16-server-parallel-clone.x86_64
八、安装EDB Clone Schema


dnf search cloneschema
dnf install -y edb-as16-server-cloneschema.x86_64

ERROR: extension "parallel_clone" must be installed in schema "edb_util"
testdb=# CREATE SCHEMA IF NOT EXISTS edb_util;
testdb=# SET search_path TO edb_util, public;
testdb=# CREATE EXTENSION parallel_clone WITH SCHEMA edb_util;
testdb=# CREATE EXTENSION edb_cloneschema;
九.创建外部服务器和用户映射
使用本地克隆函数localcopyschema或localcopyschema_nb时,所需参数之一包括单个外部服务器。此服务器用于标识数据库服务器及其数据库,该数据库是克隆模式的源和接收器。
当使用远程克隆函数remotecopyschema或remotecopyschema_nb时,两个必需的参数包括两个外部服务器。指定为第一个参数的外部服务器标识源数据库服务器及其作为克隆架构提供者的数据库。指定为第二个参数的外部服务器标识目标数据库服务器及其作为克隆架构接收器的数据库。
对于每个外部服务器,您必须创建一个用户映射。当选定的数据库超级用户调用克隆函数时,该超级用户必须映射到可以访问克隆函数中指定为参数的外部服务器的数据库用户名和密码。
本地克隆功能的外部服务器和用户映射
对于localcopyschema和localcopyschema_nb函数,源模式和目标模式都在同一数据库服务器的同一数据库中。您必须为这些功能仅定义和指定一个外部服务器。此外部服务器也称为本地服务器,因为在调用localcopyschema或localcopyschema_nb函数时,您必须连接到此服务器。
用户映射定义了外部服务器的连接和身份验证信息,您必须在克隆发生的本地服务器的数据库中创建此外部服务器和用户映射。
为其定义用户映射的数据库用户必须是超级用户,并且在调用EDB克隆架构函数时连接到本地服务器。

1.用于远程克隆功能的外部服务器和用户映射
对于remotecopyschema和remotecopyschema_nb函数,源模式和目标模式位于相同或不同数据库服务器的不同数据库中,您必须为这些功能定义并指定两个外部服务器。
定义源数据库服务器及其包含要克隆的源架构的数据库的外部服务器称为源服务器或远程服务器。
定义数据库服务器及其数据库以接收要克隆的模式的外部服务器称为目标服务器或本地服务器,目标服务器也称为本地服务器,因为在调用remotecopyschema或remotecopyschema_nb函数时,您必须连接到此服务器。
用户映射定义了外部服务器的连接和身份验证信息,您必须在目标/本地服务器的目标数据库中创建所有这些外部服务器和用户映射,为其定义用户映射的数据库用户必须是超级用户,并且在调用EDB克隆架构函数时连接到本地服务器的用户。
显示外部服务器和用户映射


2.有两个函数可以与EDB克隆架构一起使用,以执行架构及其数据库对象的本地副本
localcopyschema——此函数将模式及其数据库对象从源数据库复制到同一数据库(目标)中,但使用与原始数据库不同的模式名称。当源架构和副本位于同一数据库中时使用此功能。
localcopyschema_nb——此函数执行与localcopyschema相同的目的,但作为后台作业它释放了启动该函数的终端,此功能称为非阻塞功能。
执行架构的本地副本
localcopyschema函数将source_fdw外部服务器中指定的本地数据库中的架构及其数据库对象从源架构复制到同一数据库中的指定目标架构。
GRANT ALL PRIVILEGES ON SCHEMA edb_util TO enterprisedb;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA edb_util TO enterprisedb;


sudo systemctl reload edb-as-16.service

edbcopy进行验证


扫码进 EDB 微信群

发现“分享”和“赞”了吗,戳我看看吧




