美文网首页
基于postgresql11逻辑复制实现业务中心和数据中心数据订

基于postgresql11逻辑复制实现业务中心和数据中心数据订

作者: Terry_Qian | 来源:发表于2021-09-14 18:05 被阅读0次

1 场景

  • 中台的各个中心划分较细,主数据在用户、渠道、会员、商品这些中心,业务流程数据在支付、交易、库存、结算等中心,跨中心进行数据查询频繁使用feign调用的方式太过笨重。

2 方案

  • 搭建一个数据中心,通过pgsql-11提供的逻辑复制功能,实现各个业务中心的表数据实时同步到数据中心,再由数据中心多表联查提供对外的服务能力,也常用于读写分离,高可用的场景。
  • 本文基于开发环境进行演示记录,生产环境RDS类似。
  • 官方文档:https://www.postgresql.org/docs/devel/logical-replication.html

3 两台pgsql的搭建和基本配置

  • 使用docker-compose部署业务和数据两个数据库

  • 在/home下新建pgsql-item/,pgsql-data/两个文件夹,两个docker-compose.yml文件如下:

    version: "3"
    services:
      postgres:
        image: postgres:11-alpine
        container_name: pgsql-item
        environment:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: 123456
          MAX_CONNECTIONS: 2000
          TZ: Asia/Shanghai
        volumes:
          - ./data:/var/lib/postgresql/data
        ports:
          - "15432:5432"
    
    version: "3"
    services:
      postgres:
        image: postgres:11-alpine
        container_name: pgsql-data
        environment:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: 123456
          MAX_CONNECTIONS: 2000
          TZ: Asia/Shanghai
        volumes:
          - ./data:/var/lib/postgresql/data
        ports:
          - "15433:5432"
    

    可以使用数据卷挂在data文件夹,这里挂到当前目录下为了方便修改配置文件

  • 发布端配置

    vim /home/pgsql-item/data/postgresql.conf
    
    wal_level = logical        #开启逻辑复制模式
    max_replication_slots = 20 #该配置项表示发布端最多可以发布多个Publication
    max_wal_senders =40        #一般设置为max_replication_slots的2倍
    
  • 订阅端配置

    vim /home/pgsql-data/data/postgresql.conf
    
    wal_level = logical        #开启逻辑复制模式
    max_replication_slots=20   #订阅端也需要配置该配置项,不能小于需要订阅的数量
    max_logical_replication_workers=20 #订阅端可以配置多个订阅
    max_worker_processes=22    #最少为max_logical_replication_workers+1。
    
  • 重启两台pgsql

    docker restart pgsql-item pgsql-data
    

4 数据库订阅同步

  • pgsql-item创建一个数据库channel-center,3张表cc_store,cc_store_sku,cc_area

  • pgsql-data创建一个数据库data-center,使用navicat数据传输工具同步2张表结构cc_store,cc_store_sku

    发布节点和订阅节点表的模式名、表名必须一致。

  • 发布端

    -- 创建发布
    create publication channel_center_pub for table cc_store,cc_store_sku;
    -- 发布端常用命令
    select * from pg_publication ; #查看发布者列表
    select * from pg_stat_replication; #查看逻辑复制的状态
    select * from pg_publication_tables; #查看发布者发布了哪些数据表
    
  • 订阅端

    -- 创建订阅
    create subscription channel_center_sub connection 'host=192.168.31.167 port=15432 user=postgres password=devops dbname=channel_center' publication channel_center_pub;
    -- 订阅端常用命令
    select * from pg_subscription; #查看订阅者列表
    select * from pg_stat_subscription; #查看订阅者状态
    
  • 验证下,在业务中心表的增删改,金融级响应速度同步到数据中心对应的表

5 一些场景操作

  • 业务中心表结构发生变更,字段新增、字段删除、建立索引等操作,会使订阅失效

    处理方法:使用navicat结构同步工具,同步表更的表到数据中心,保持两端表结构一致,订阅即可恢复正常。

  • 一个发布修改发布的数据表,例如channel_center_pub的发布中2张表变更为3张表

    发布端修改发布:alter publication channel_center_pub set table cc_store,cc_store_sku,cc_area;

    订阅端刷新订阅:alter subscription channel_center_sub refresh publication;

相关文章

  • 基于postgresql11逻辑复制实现业务中心和数据中心数据订

    1 场景 中台的各个中心划分较细,主数据在用户、渠道、会员、商品这些中心,业务流程数据在支付、交易、库存、结算等中...

  • 一个基于Ocata版本的OpenStack建设方案

    背景 基于公司目前积极拓展新业务以及多数据中心的需求,老数据中心各种不稳定的情况也面临着逐渐被新数据中心淘汰。而当...

  • 什么是数据中心?

    导语 欲实现数据中心可视化,必先了解数据中心的概念;本文就数据中心概念,国内外大型数据中心进行一定的了解和分析; ...

  • (1)大系统小做<架构解决方案>

    一、1)多数据中心难题、2)多数据中心难题、3)基于dobbo实现服务化、4)两种发现模式:服务端vs客户端、5)...

  • 【网络技术控】OTV 技术浅析

    随着数据中心和虚拟化业务的快速发展,对新一代数据中心网络技术也提出新的要求。那么,网络建设如何满足数据中心发展要求...

  • 数据中心-虚拟化与云计算

    虚拟化与云计算 一 数据中心概述 1.数据中心是信息系统的中心,通过网络向企业或公众提供信息服务。 数据中心在逻辑...

  • 数据中心模式的类型

    数据中心是实现管理数据,并且对于数据中心在组织的现有体系结构中的“确切位置”存在很多困惑。人们通常想知道数据中心在...

  • 分析云计算数据中心和传统IDC之间的不同之处?

    云数据中心或云计算数据中心,是一种基于云计算架构的,高度虚拟化、自动化、节能化的新型数据中心。其服务器、存储、网络...

  • 这些数据中心专业名词你知道几个?

    1、数据中心(Data Center) 数据中心通常是指在一个物理空间内实现信息的集中处理、存储、传输、交换和管理...

  • consul 工作原理

    console 基本组成: 数据中心:一般说数据中心都是多中心,即数据分散存储,分摊压力和容易扩容,数据中心之间是...

网友评论

      本文标题:基于postgresql11逻辑复制实现业务中心和数据中心数据订

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