pgloader 支持比较丰富的配置参数,同时默认数据在同步的时候是会进行索、schema
以及数据的同步对于实际我们可能存在需要进行控制,我们可以通过with 参数方便的处理

参考配置

  • load 文件
 
load database
  from pgsql://postgres:dalong@postgres:5432/postgres
  into pgsql://postgres:dalong@postgres2:5432/postgres
  including only table names matching 'users','members' in schema 'public'
  ALTER TABLE NAMES MATCHING 'users' IN SCHEMA 'public' RENAME TO 'gitlab2_users'
  ALTER TABLE NAMES MATCHING 'members' IN SCHEMA 'public' RENAME TO 'gitlab2_members'
  with 
  create no indexes,
  no foreign keys;
  • load 文件说明
    这个一个简单的同步gitlab users,members 数据到pg 数据库的处理(数据聚合处理),同时进行了别名处理
    users -> gitlab2_users members -> gitlab2-members 同时忽略源数据表的索引以及外键的添加处理(我们
    只需要数据)

完整docker-compose 运行说明

  • docker-compose 文件
version: "3"
services:
  pgloader-pg:
    image: dimitri/pgloader
    volumes: 
    - "./pgloader-config:/loader"
    command: pgloader /loader/pg/pg.load
  postgres:
    image: postgres:9.6.11
    ports:
    - "5432:5432"
    environment:
    - "POSTGRES_PASSWORD:dalong"
  postgres2:
    image: postgres:9.6.11
    ports:
    - "5433:5432"
    environment:
    - "POSTGRES_PASSWORD:dalong"
 
  • 运行说明
    先导出gitlab pg 数据(默认是本地unix socket),然后导出数据到docker-compose 定义中的postgres
    操作:
 
导出表数据:
pg_dump -h hostip -p 5432 -U postgres -t members -d postgres > members.sql
pg_dump -h hostip -p 5432 -U postgres -t users -d postgres > users.sql
导入表数据:
psql -h 127.0.0.1 -U postgres -p 5432 -d postgres < users.sql
psql -h 127.0.0.1 -U postgres -p 5432 -d postgres < members.sql
运行数据导入:
docker-compose up pgloader-pg
 
  • 效果
pgloader-pg_1 | WARNING:
pgloader-pg_1 | Couldn't re-execute SBCL with proper personality flags (/proc isn't mounted? setuid?)
pgloader-pg_1 | Trying to continue anyway.
pgloader-pg_1 | 2019-06-27T04:43:52.045000Z LOG pgloader version "3.6.2~devel"
pgloader-pg_1 | 2019-06-27T04:43:52.150000Z LOG Migrating from #<PGSQL-CONNECTION pgsql://postgres@postgres:5432/postgres {10070D34D3}>
pgloader-pg_1 | 2019-06-27T04:43:52.151000Z LOG Migrating into #<PGSQL-CONNECTION pgsql://postgres@postgres2:5432/postgres {10070D4B63}>
pgloader-pg_1 | 2019-06-27T04:43:52.882000Z LOG report summary reset
pgloader-pg_1 | table name errors rows bytes total time
pgloader-pg_1 | ------------------------ --------- --------- --------- --------------
pgloader-pg_1 | fetch meta data 0 2 0.061s
pgloader-pg_1 | Create Schemas 0 0 0.000s
pgloader-pg_1 | Create SQL Types 0 0 0.006s
pgloader-pg_1 | Create tables 0 4 0.035s
pgloader-pg_1 | Set Table OIDs 0 2 0.000s
pgloader-pg_1 | ------------------------ --------- --------- --------- --------------
pgloader-pg_1 | "public".gitlab2_members 0 27629 3.1 MB 0.513s
pgloader-pg_1 | "public".gitlab2_users 0 4153 2.2 MB 0.392s
pgloader-pg_1 | ------------------------ --------- --------- --------- --------------
pgloader-pg_1 | COPY Threads Completion 0 4 0.506s
pgloader-pg_1 | Reset Sequences 0 2 0.022s
pgloader-pg_1 | Create Triggers 0 0 0.001s
pgloader-pg_1 | Install Comments 0 0 0.000s
pgloader-pg_1 | ------------------------ --------- --------- --------- --------------
pgloader-pg_1 | Total import time ? 31782 5.3 MB 0.529s
pgloader-pg2pg_pgloader-pg_1 exited with code 0

说明

同时可以也可以配置一些其他参数,比如schema only , data only, 还是很方便的

参考资料

https://github.com/rongfengliang/pgloader-gitlab-pg2pg
https://pgloader.readthedocs.io/en/latest/ref/pgsql.html

pgloader 学习(九) pg 2 pg 使用with 参数控制同步逻辑的更多相关文章

  1. pgloader 学习(八) pg 2 pg 简单demo

    pg 数据到pg 数据的迁移,同时支持名称的变更 环境准备 docker-compose文件 内容偏多可以忽略部分 version: "3" services: pgloader- ...

  2. pgloader 学习(四)一些简单操作例子

    上边已经说明了pgloader 的基本使用(篇理论),但是对于实际操作偏少,以下是一个简单的操作 不像官方文档那样,我为了方便,直接使用docker-compose 运行,同时这个环境,会在后边大部分 ...

  3. pgloader 学习(一)支持的特性

    pgloader 是一个不错的多种格式数据同步到pg 的工具,pgloader 使用postrgresql 的copy 协议进行高效的数据同步处理 特性 加载文件到内容pg 多种数据源格式的支持 cs ...

  4. pgbouncer+pg(fdw)+pg(datanode)分表方案

    pgbouncer+pg(fdw)+pg(datanode)分表方案 (环境RHEL6.5,PG9.4.5,pgbouncer1.5.4,libevent2.0.22) 方案架构图如下: pgboun ...

  5. pgloader 学习(五)pgloader 参考手册

    pgloader将各种来源的数据加载到PostgreSQL中.它可以转换动态读取的数据,并在加载前后提交原始SQL. 它使用COPY PostgreSQL协议将数据流式传输到服务器,并通过填充一对re ...

  6. FastAPI 学习之路(十三)Cookie 参数,Header参数

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  7. Android学习笔记之使用百度地图实现地图控制

    PS:吾之荣耀,离别已久. 学习内容: 1.实现地图控制. 2.百度地图开发的一些细节     1.实现地图控制:   这一篇主要写在百度地图上添加一些其他控制.上一篇书写了覆盖物的添加,地理编码和反 ...

  8. Android特效专辑(九)——仿微信雷达搜索好友特效,逻辑清晰实现简单

    Android特效专辑(九)--仿微信雷达搜索好友特效,逻辑清晰实现简单 不知不觉这个春节也已经过完了,遗憾家里没网,没能及时给大家送上祝福,今天回到深圳,明天就要上班了,小伙伴们是不是和我一样呢?今 ...

  9. 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用

    目录 学习笔记:CentOS7学习之二十三: 跳出循环-shift参数左移-函数的使用 23.1 跳出循环 23.1.1 break和continue 23.2 Shift参数左移指令 23.3 函数 ...

随机推荐

  1. IDEA中使用git

    这篇文章写的很好,记录参考 [转载] https://blog.csdn.net/autfish/article/details/52513465 https://www.jianshu.com/p/ ...

  2. RabbitMQ之消息模式

    目的: 消息如何保证100%的投递 幂等性概念 Confirm确认消息 Return返回消息 自定义消费者 前言: 想必知道消息中间件RabbitMQ的小伙伴,对于引入中间件的好处可以起到抗高并发,削 ...

  3. springBoot入门到精通-Simple

    https://blog.csdn.net/zhiyikeji/article/details/84346189 1.springBoot前期准备 1.环境配置:jdk,maven 2.编写工具:st ...

  4. c#利用定时器自动备份数据库(mysql)

    1:引用dll MySql.Data.dll,   MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql{public static strin ...

  5. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  6. 常用方法装windows

    1.通过制作启动盘来进行安装 (1)简单的启动盘制作工具 通过百度”启动盘“,会发现有很多制作启动盘的工具. 这些工具操作都比较简单,易于上手,功能强大,不仅能装系统,而且还能维修. 具体使用方法,官 ...

  7. 英语DIAMAUND钻石指坚硬不可侵犯的物质

    首先谈谈钻石和金刚石的名称.金刚石是一种天然矿物,是钻石的原石.习惯上人们常将加工过的金刚石称为钻石,而未加工过的称为金刚石(当然,有的金刚石不用加工便可应用).钻石是那些达到宝石级别的金刚石晶体切磨 ...

  8. Android存储及getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区别

    存储介绍 Android系统分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都比较小,外部存储一般是SD卡的存储,空间一般都比较大,但不一定可用或者剩余空间可能不足.一般我们存储内容都会 ...

  9. iOS网络请求之数据解析

    JSON解析 IOS中Json解析的四种方法 NSURLConnection-网络请求浅析 IOS开发:官方自带的JSON使用 XML 解析 GDataXMLNode应用 IOS学习:常用第三方库(G ...

  10. 二十五、sql中where条件在数据库中提取与应用浅析

    问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语法解析.权限检查. ...