V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JackyTsang
V2EX  ›  PostgreSQL

请教,有无简单易用的 PostgreSQL 表结构、数据的同步工具?

  •  
  •   JackyTsang · 2024-05-15 16:19:30 +08:00 · 2994 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。
    可能我理解得比较简单,就是假设一个生产的 PostgreSQL 数据库的 A 、B 、C 库,都实时或 Cron 定时地同步到另外一个 PostgreSQL 数据库的 A 、B 、C 库。

    网上搜索都是都是啥大数据相关的内容,什么 ETL 、CDC 、ODS...看不懂,且感觉有些杀鸡用牛刀?还是说可能搜索的关键词不行?我主要的目的是提供给第三方写视图用的,烂视图对数据库性能的影响大家应该都知道,他们搞砸了都不会影响到生产库。

    因为涉及到增删改查,肯定有读写,也没法去做一个生产库的流复制从库给人家用。

    总结一下我要的功能可能是类似 Navicat 上的 “结构同步” 与 “数据同步”,然后它是简单的,命令行的,可自动化的。

    谢谢大家。
    18 条回复    2024-05-16 15:59:58 +08:00
    FTLIKON
        1
    FTLIKON  
       2024-05-15 16:28:41 +08:00
    自己写个脚本同步就可以了,你要用第三方工具难免很复杂
    tuutoo
        2
    tuutoo  
       2024-05-15 16:52:12 +08:00
    试试 Airbyte?
    thtznet
        3
    thtznet  
       2024-05-15 16:55:42 +08:00
    定时备份/还原
    littlezzll
        4
    littlezzll  
       2024-05-15 17:00:15 +08:00
    pgquarrel ?
    qing108
        5
    qing108  
       2024-05-15 17:03:12 +08:00
    自己写一个 python 脚本同步不就好了
    Ackvincent
        6
    Ackvincent  
       2024-05-15 19:29:51 +08:00
    python 用 psycopg2 写个脚本就可以了,没多大工作量。
    tomczhen
        7
    tomczhen  
       2024-05-15 22:16:58 +08:00
    fdw
    nolo
        8
    nolo  
       2024-05-15 22:35:22 +08:00
    外部表或者逻辑复制
    privil
        9
    privil  
       2024-05-15 22:43:52 +08:00
    dbswitch 试试,我上周刚测试同步空库没啥问题,实际数据量大了不知道
    54yzwddsg
        10
    54yzwddsg  
       2024-05-15 23:03:48 +08:00
    主从模式?
    srlp
        11
    srlp  
       2024-05-16 01:34:16 +08:00 via iPhone
    datax 阿里的,好用
    fangxing204
        12
    fangxing204  
       2024-05-16 01:46:50 +08:00 via Android
    pgsync
    dayeye2006199
        13
    dayeye2006199  
       2024-05-16 01:51:40 +08:00 via Android
    Airbyte
    ABBOTBREW
        14
    ABBOTBREW  
       2024-05-16 08:53:41 +08:00
    HeidiSQL
    encro
        15
    encro  
       2024-05-16 09:32:09 +08:00
    PostgreSQL 自带 fwd 能满足您要求?
    sujin190
        16
    sujin190  
       2024-05-16 09:51:44 +08:00
    只同步数据的话那分享下项目

    https://github.com/snower/syncany-sql

    把 SQL 当作脚本执行,内部有自动依据主键增删改同步数据的逻辑,可以用 crontab 来调用

    set @use_output_type='UPDATE_DELETE_INSERT';
    insert into `pg2`.`adata` select `id`, `name`, `create_time` from `pg1`.`bdata` where `id`>=2;

    使用 set @use_output_type 设定更新目标库方式,可选值有 INSERT 、UPDATE_DELETE_INSERT 、UPDATE_INSERT 、DELETE_INSERT ,不设置时和正常 insert into 一样默认 INSERT ,select 的第一个字段自动认为是主键,相同主键执行 update ,否则插入
    yjhatfdu2
        17
    yjhatfdu2  
       2024-05-16 10:20:03 +08:00
    数据的话,用数据库原生的 publish 、subscribe 是最简单最优的,但是不能自动同步 DDL ,发生 DDL 后需要先在从库中更新 DDL 再继续订阅
    guxin0123
        18
    guxin0123  
       2024-05-16 15:59:58 +08:00
    Navicat 自动运行 试过了没
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:09 · PVG 17:09 · LAX 02:09 · JFK 05:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.