zoukankan      html  css  js  c++  java
  • PostgreSQL数据库逻辑复制实践

    修改主库以及从库的postgresql.conf

    wal_level = logical
    
    max_wal_senders = 10
    
    max_replication_slots = 8
    

    参数简要说明如下

    • wal_level:设置成logical才支持逻辑复制

    • max_wal_senders:由于每个订阅节点和流复制备库在主库上都会占用主库上一个WAL发送进程,因此此参数设置值需大于max_replication_slots参数值加上物理备库数量

    • max_replication_slots:设置值需大于订阅节点的数量

    逻辑主库创建库和表,逻辑从库创建库和表

    主库和从库库名可以不一致,但是库中需要同步的表必须表名和表结构一致

    createdb sourcedb
    
    create table logical_tb(id int primary key,name varchar(20));
    

    创建逻辑复制账号并授权

    逻辑复制用户需要REPLICATION权限即可,可以不需要SUPERUSER权限,之后需要在主库上将需要同步的表赋权给logical_repl用户,使logical_repl账号具有对这些表的读权限,这样从库可以通过这个账号进行连接访问

    CREATE USER logical_repl REPLICATION LOGIN CONNECTION LIMIT 8 ENCRYPTED PASSWORD 'logical_repl';
    
    GRANT USAGE ON SCHEMA public TO logical_repl;
    
    GRANT SELECT ON logical_tb1 TO logical_repl;
    

    主库创建发布

    注意:进入当前库下执行语句

    • 为库中所有的表创建发布
    CREATE PUBLICATION puball FOR ALL TABLES
    
    • 指定库中某个表创建发布
    CREATE PUBLICATION pub FOR TABLE logical_tb;
    

    从库创建订阅

    CREATE SUBSCRIPTION suballtable
    CONNECTION 'host=10.10.64.30 port=5434 user=logical_repl password=logical_repl dbname=testall'
    PUBLICATION puball;
    
    ALTER SUBSCRIPTION sub REFRESH PUBLICATION
    
  • 相关阅读:
    ThinkPHP5.0更改框架的验证方法:对象->validate(true)->save();
    ThinkPHP5.0版本和ThinkPHP3.2版本的区别
    ThinkPHP5.0版本的优势在于:
    11: django-haystack+jieba+whoosh实现全文检索
    10: supervisor进程管理工具
    09: redis集群之sentinel
    08: python支付宝支付
    07: redis分布式锁解决超卖问题
    06:keepalive高可用集群(新)
    05: 使用docker部署nginx负载均衡
  • 原文地址:https://www.cnblogs.com/MartyCode/p/14149361.html
Copyright © 2011-2022 走看看