searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PostgreSQL怎么开启逻辑迁移

2024-11-12 09:25:13
1
0

一、配置主服务器

  1. 修改postgresql.conf文件
    你需要找到并修改PostgreSQL主服务器上的postgresql.conf文件,以启用逻辑复制所需的相关设置。具体需要调整的参数包括:

    • wal_level:设置为logical,这是启用逻辑复制所必需的。
    • max_wal_senders:根据你的需要调整WAL发送器的最大数量。这个参数定义了可以有多少个并发连接用于逻辑复制。
    • max_replication_slots:设置可用的复制槽数量。

    例如:

    wal_level = logical
    max_wal_senders = 10
    max_replication_slots = 10
    
  2. 修改pg_hba.conf文件
    你还需要修改pg_hba.conf文件,以允许从服务器连接到主服务器进行复制。你需要添加一条规则,允许从特定IP地址或子网进行基于复制的连接。例如:

    host replication replicator your_slave_ip/32 md5
    

    其中,replicator是你在从服务器上用于复制的用户名,your_slave_ip需要替换为你的从服务器的IP地址。

  3. 重启PostgreSQL服务
    在修改了postgresql.confpg_hba.conf文件后,你需要重启PostgreSQL服务以使更改生效。

二、配置从服务器

  1. 创建与主服务器相同的数据库
    在从服务器上,你需要创建一个与主服务器上相同的数据库。

  2. 配置recovery.conf文件(或postgresql.auto.conf文件,取决于你的PostgreSQL版本和配置方式)
    在从服务器的数据目录中,你需要配置恢复参数以启用逻辑复制模式。如果你使用的是较新的PostgreSQL版本,可能会使用postgresql.auto.conf文件而不是recovery.conf文件。你需要添加以下参数:

    • primary_conninfo:指定连接到主服务器的信息,包括主机名、端口、用户名、密码等。
    • standby_mode:对于逻辑复制,通常将其设置为off,因为逻辑复制不需要像流复制那样的持续恢复模式。

    例如:

    primary_conninfo = 'host=your_master_ip port=5432 user=replicator password=your_password dbname=your_database application_name=your_slave_name'
    standby_mode = 'off'
    

    注意:这里的dbnameapplication_name参数是可选的,但它们在逻辑复制中很有用,因为dbname指定了要复制的数据库,而application_name则可以在主服务器上用于识别和管理从服务器。

  3. (可选)创建订阅用户并授予权限
    在从服务器上,你可能需要创建一个用于订阅的用户,并授予其必要的权限。这通常包括连接到数据库、读取表数据以及执行复制操作的权限。

三、在主服务器上创建发布

  1. 创建逻辑复制发布
    在主服务器上,你需要使用CREATE PUBLICATION语句创建一个逻辑复制发布。这个发布将包含你想要复制到从服务器的表或整个数据库。例如:

    CREATE PUBLICATION my_publication FOR ALL TABLES WITH (publish = 'insert, update, delete, truncate', publish_via_partition_root = false);
    

    在这个例子中,my_publication是发布的名称,FOR ALL TABLES指定了发布包含所有表,WITH子句则定义了要发布的操作类型(如插入、更新、删除和截断)。

四、在从服务器上创建订阅

  1. 创建逻辑复制订阅
    在从服务器上,你需要使用CREATE SUBSCRIPTION语句创建一个逻辑复制订阅。这个订阅将连接到主服务器上的发布,并应用发布的更改到从服务器上的数据库。例如:

    CREATE SUBSCRIPTION my_subscription CONNECTION 'host=your_master_ip port=5432 user=replicator dbname=your_database password=your_password connect_timeout=10' PUBLICATION my_publication WITH (connect = true, enabled = true, copy_data = true, create_slot = true, synchronous_commit = 'remote_apply');
    

    在这个例子中,my_subscription是订阅的名称,CONNECTION字符串指定了连接到主服务器的信息,PUBLICATION指定了要订阅的发布名称,WITH子句则定义了订阅的选项(如是否立即连接、是否启用、是否复制现有数据等)。

五、验证逻辑复制

完成上述步骤后,你应该能够验证逻辑复制是否已成功配置并正在运行。你可以在主服务器和从服务器上执行一些数据操作(如插入、更新和删除),并观察这些操作是否正确地复制到了从服务器上的数据库中。

请注意,逻辑复制不会同步DDL操作(如创建表、修改表结构等),因此你需要手动维护主从实例数据库上的表结构使其保持一致。如果主库上新增或删除了表,你需要在从库上执行刷新订阅的SQL语句来同步这些更改。

0条评论
作者已关闭评论
李****东
2文章数
0粉丝数
李****东
2 文章 | 0 粉丝
李****东
2文章数
0粉丝数
李****东
2 文章 | 0 粉丝
原创

PostgreSQL怎么开启逻辑迁移

2024-11-12 09:25:13
1
0

一、配置主服务器

  1. 修改postgresql.conf文件
    你需要找到并修改PostgreSQL主服务器上的postgresql.conf文件,以启用逻辑复制所需的相关设置。具体需要调整的参数包括:

    • wal_level:设置为logical,这是启用逻辑复制所必需的。
    • max_wal_senders:根据你的需要调整WAL发送器的最大数量。这个参数定义了可以有多少个并发连接用于逻辑复制。
    • max_replication_slots:设置可用的复制槽数量。

    例如:

    wal_level = logical
    max_wal_senders = 10
    max_replication_slots = 10
    
  2. 修改pg_hba.conf文件
    你还需要修改pg_hba.conf文件,以允许从服务器连接到主服务器进行复制。你需要添加一条规则,允许从特定IP地址或子网进行基于复制的连接。例如:

    host replication replicator your_slave_ip/32 md5
    

    其中,replicator是你在从服务器上用于复制的用户名,your_slave_ip需要替换为你的从服务器的IP地址。

  3. 重启PostgreSQL服务
    在修改了postgresql.confpg_hba.conf文件后,你需要重启PostgreSQL服务以使更改生效。

二、配置从服务器

  1. 创建与主服务器相同的数据库
    在从服务器上,你需要创建一个与主服务器上相同的数据库。

  2. 配置recovery.conf文件(或postgresql.auto.conf文件,取决于你的PostgreSQL版本和配置方式)
    在从服务器的数据目录中,你需要配置恢复参数以启用逻辑复制模式。如果你使用的是较新的PostgreSQL版本,可能会使用postgresql.auto.conf文件而不是recovery.conf文件。你需要添加以下参数:

    • primary_conninfo:指定连接到主服务器的信息,包括主机名、端口、用户名、密码等。
    • standby_mode:对于逻辑复制,通常将其设置为off,因为逻辑复制不需要像流复制那样的持续恢复模式。

    例如:

    primary_conninfo = 'host=your_master_ip port=5432 user=replicator password=your_password dbname=your_database application_name=your_slave_name'
    standby_mode = 'off'
    

    注意:这里的dbnameapplication_name参数是可选的,但它们在逻辑复制中很有用,因为dbname指定了要复制的数据库,而application_name则可以在主服务器上用于识别和管理从服务器。

  3. (可选)创建订阅用户并授予权限
    在从服务器上,你可能需要创建一个用于订阅的用户,并授予其必要的权限。这通常包括连接到数据库、读取表数据以及执行复制操作的权限。

三、在主服务器上创建发布

  1. 创建逻辑复制发布
    在主服务器上,你需要使用CREATE PUBLICATION语句创建一个逻辑复制发布。这个发布将包含你想要复制到从服务器的表或整个数据库。例如:

    CREATE PUBLICATION my_publication FOR ALL TABLES WITH (publish = 'insert, update, delete, truncate', publish_via_partition_root = false);
    

    在这个例子中,my_publication是发布的名称,FOR ALL TABLES指定了发布包含所有表,WITH子句则定义了要发布的操作类型(如插入、更新、删除和截断)。

四、在从服务器上创建订阅

  1. 创建逻辑复制订阅
    在从服务器上,你需要使用CREATE SUBSCRIPTION语句创建一个逻辑复制订阅。这个订阅将连接到主服务器上的发布,并应用发布的更改到从服务器上的数据库。例如:

    CREATE SUBSCRIPTION my_subscription CONNECTION 'host=your_master_ip port=5432 user=replicator dbname=your_database password=your_password connect_timeout=10' PUBLICATION my_publication WITH (connect = true, enabled = true, copy_data = true, create_slot = true, synchronous_commit = 'remote_apply');
    

    在这个例子中,my_subscription是订阅的名称,CONNECTION字符串指定了连接到主服务器的信息,PUBLICATION指定了要订阅的发布名称,WITH子句则定义了订阅的选项(如是否立即连接、是否启用、是否复制现有数据等)。

五、验证逻辑复制

完成上述步骤后,你应该能够验证逻辑复制是否已成功配置并正在运行。你可以在主服务器和从服务器上执行一些数据操作(如插入、更新和删除),并观察这些操作是否正确地复制到了从服务器上的数据库中。

请注意,逻辑复制不会同步DDL操作(如创建表、修改表结构等),因此你需要手动维护主从实例数据库上的表结构使其保持一致。如果主库上新增或删除了表,你需要在从库上执行刷新订阅的SQL语句来同步这些更改。

文章来自个人专栏
pg
2 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0