博客
关于我
瀚高HGHAC高可用集群配置逻辑复制槽方法
阅读量:739 次
发布时间:2019-03-22

本文共 1926 字,大约阅读时间需要 6 分钟。

瀚高数据库集群配置逻辑复制槽指南

目录

  • 确认集群wal日志级别为logical
  • 确认hot_standby_feedback参数为on
  • 动态修改集群配置参数
  • 逻辑复制使用逻辑复制槽
  • 主备节点查看逻辑复制槽信息
  • 集群切换逻辑复制槽不受影响,但订阅端需要重新订阅
  • 断流测试

  • 1. 确认集群wal日志级别为logical

    在高可用集群(HGHAC)中,wal日志级别必须设置为logical,否则无法正常配置逻辑复制槽。执行以下命令确认当前配置:

    highgo=# show wal_level;
    wal_level
    ---------
    logical

    如果当前wal_level不是logical,执行以下命令修改参数:

    highgo=# alter system set wal_level = logical;
    ALTER SYSTEM

    修改完成后,所有节点需要重新启动 PostgreSQL 服务:

    highgo=# systemctl restart postgresql

    2. 确认hot_standby_feedback参数为on

    hot_standby_feedback参数用于控制备库是否向主库反馈查询执行情况。默认情况下该参数为off,但在高可用集群中通常需要设置为on。执行以下命令确认当前状态:

    highgo=# show hot_standby_feedback;
    hot_standby_feedback
    ---------
    off

    如果参数为off,执行以下命令修改为on:

    highgo=# alter system set hot_standby_feedback = on;
    ALTER SYSTEM

    修改完成后,需要重新加载配置:

    highgo=# pg_reload_conf();

    验证修改结果:

    highgo=# show hot_standby_feedback;
    hot_standby_feedback
    ---------
    on

    3. 动态修改集群配置参数

    在高可用集群中,可以动态修改集群配置参数,而无需重启服务。例如,添加或删除复制槽:

    highgo=# hghactl edit-config

    系统会提示确认操作,执行后修改会立即生效。


    4. 逻辑复制使用逻辑复制槽

    方法一:创建订阅指定逻辑复制槽

    highgo=# create subscription sub1
    connection 'host=x.x.10.216 port=5866 dbname=highgo user=highgo password=Hello@123'
    publication pub1
    with (copy_data = true, create_slot = false, enabled = true, slot_name = 'cdc_slot1');

    方法二:修改订阅指定逻辑复制槽

    highgo=# alter subscription sub2 set (slot_name = 'cdc_slot2');

    注意事项:

    • 创建订阅时不指定复制槽,默认会自动创建逻辑复制槽。
    • 修改订阅时指定新的逻辑复制槽,旧的逻辑复制槽会被集群自动删除。

    5. 主备节点查看逻辑复制槽信息

    主库

    highgo=# select * from pg_replication_slots;

    备库

    highgo=# select * from pg_replication_slots;

    6. 集群切换逻辑复制槽不受影响,但订阅端需要重新订阅

    6.1 切换后逻辑复制槽状态

    • 新主库(逻辑复制槽active为f):

      已有订阅请参考下文更改订阅信息,数据自动同步。若使用VIP主备切换,无需更改订阅信息。

    • 新备库(逻辑复制槽active为f):

      创建新的订阅,订阅端需重新订阅。

    6.2 重新创建订阅之后,逻辑复制槽active变为t


    7. 断流测试

    7.1 关闭逻辑复制数据库,查看逻辑复制槽信息

    highgo=# pg_stop_logical_replication;

    查看逻辑复制槽状态:

    highgo=# select * from pg_replication_slots;

    7.2 启动逻辑复制数据库,查看逻辑复制槽信息

    highgo=# pg_start_logical_replication;

    查看逻辑复制槽状态:

    highgo=# select * from pg_replication_slots;

    以上步骤详细指导了如何在高可用集群中配置逻辑复制槽,确保集群高可用性和数据同步稳定性。

    转载地址:http://glzwk.baihongyu.com/

    你可能感兴趣的文章
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>
    mysql中实现rownum,对结果进行排序
    查看>>
    mysql中对于数据库的基本操作
    查看>>
    Mysql中常用函数的使用示例
    查看>>
    MySql中怎样使用case-when实现判断查询结果返回
    查看>>
    Mysql中怎样使用update更新某列的数据减去指定值
    查看>>
    Mysql中怎样设置指定ip远程访问连接
    查看>>