美文网首页
14.高可用:逻辑复制

14.高可用:逻辑复制

作者: 善良的良 | 来源:发表于2019-06-02 12:30 被阅读0次
    • 逻辑主备角色分为Publication和Subscription
    • 逻辑主库和逻辑备库为不同的PostgreSQL实例可以在同一主机上也可以在不同主机上。

    Publication节点

    • 可在任何可读写的PostgreSQL实例上
    • 一个实例中允许创建多个发布,目前允许加入发布的对象只有Table,允许将多个Table注册到一个发布中
    • 加入发布的表通常需要有replica identity(复制标识),从而使逻辑主库表上的 DELETE/UPDAE操作 可以标记到相应数据行并复制到逻辑备库上的表
      默认使用主键作为复制标识
      如果没有主键, 也可是唯一索引
      如果没有主键或唯一键,可设置复制标识为 full ,意思是整行数据作为键值,这种 情况下复制效率会降低。
      如果加入发布的表没有指定复制标识,表上的UPDATE/DELETE 将会报错

    Subscription节点

    • 指定发布者的表数据
    • 订阅节点数据库上同时也能创建发布
    • 发布节点上发布的表的DDL不会被复制
    • 订阅节点通过逻辑复制槽获取发布节点发送WAL数据变化

    逻辑复制配置

    配置Publication节点参数

    wal_level = logical
    max_replication_slots = 8
    max_wal_senders = 10

    配置Subscription节点参数

    max_replication_slots = 8
    max_logical_replication_workers = 8

    说明

    • wal_level = logical增加逻辑解码所需的信息,低于这个级别逻辑复制不能复制
    • max_replication_slots必须大于订阅节点数量
    • max_wal_senders 必须大于 max_replication_slots加上流复制备库数量,因为每个订阅- 节点和流复制备库都会占用一个wal送进程
    • max_logical_replication_workers 建议大于订阅节点数

    Publication创建发布

    • 所有表
    create publication pub1 for all tables;--所有表
    create publication pub1 for table t1;--单表
    
    • 查看创建的发布
    select * from pg_publication;
    Subscription创建表的元数据,并创建订阅
    --create table metadata
    create table t1;
    pg_dump/pg_dumpall -s;
    create subscription sub1 connection 'host=192.162.1.52 port=5432 dbname=testdb user=repuser password=repuser' publication pub1;
    

    查看创建的订阅

    select * from pg_subscription;
    alter subscription sub1 refresh publication;
    

    启停方法

    alter subscription sub1 disable;
    alter subscription sub1 enable;
    

    查看订阅状态

    select subname,subenabled,subpublications from pg_subscription;
    

    相关文章

      网友评论

          本文标题:14.高可用:逻辑复制

          本文链接:https://www.haomeiwen.com/subject/suyatctx.html