PostgreSQL 的表传输功能

标签

PostgreSQL , transfer table , 表传输


背景

表传输的功能很有意思,比如一些企业会有中心数据库,边缘数据库。边缘数据库的数据需要周期性的导入到中心库进行汇总,例如每个工厂的日流水数据,每天导入到总部的中心数据库。

从边缘库导入到中心库,大家可能会想到使用ETL工具,或者是数据订阅(同步)的方式,但是大家有没有想过,这些方式都需要数据重新来一遍insert或者copy。

insert, copy是数据库的标准写入接口,没什么不好的,只不过当边缘数据库很多,数据量很大时,写入可能成为瓶颈(虽然PG已经是堆表,写入通常可以达到单机几百万行/s的速度)。如果有索引的话,更慢。

那么有没有效率更高的数据传输方法呢?

表传输应运而生,表传输可以理解为数据文件的拷贝,没有了BUILD INDEX,forming tuple,alloc extend的消耗,速度大幅提升。

pg_transfer插件是postgrespro 企业版本的一个插件,可以用来实现表传输。

pg_transfer用法

表传输前提

因为表传输是拷贝文件的方式传输数据,所以必须要求源、目标数据库具有物理文件兼容性。例如

1、数据库版本一致。

2、数据库所在操作系统架构一致(CPU架构、操作系统架构)。

3、数据库某些涉及物理格式的编译参数一致(块大小、是否开启CHECKSUM、数据文件段大小(涉及到文件寻址))。

准备步骤

源和目标都必须安装pg_transfer插件

create extension pg_transfer;

将表置为只读

 ALTER TABLE table_name SET CONSTANT;

收集统计信息

VACUUM (ANALYZE) table_name;

迁移表定义

 pg_dump database -t table_name --schema-only -f transfer_dir/archive.out
 pg_restore -d database --schema-only transfer_dir/archive.out

获取目标库被迁移表的toast relid,备用。

psql target_database -c select reltoastrelid from pg_class where relname='table_name'

迁移表、索引、TOAST数据

将表的数据刷盘,确保shared buffer中没有表的脏页。

同时需要输入前一步获得的目标库生成的TOAST relid。

psql -d database -c select pg_transfer_freeze('table_name'::regclass::oid, reltoastrelid::oid);

导出表、索引、TOAST的数据文件

pg_dump database -Fc -t table_name --copy-mode-transfer --transfer-dir transfer_dir/ -f transfer_dir/archive.out

将数据文件导入目标库,并挂接filenode。

pg_restore -d target_database --data-only --transfer-dir transfer_dir/ transfer_dir/archive.out

注意事项

如果源和目标在同一个文件系统中,那么迁移过程中pg_dump或pg_restore 二选一,必须使用 --copy-mode-transfer 开关 。

如果目标库有slave,并且希望将表传输的数据通过WAL同步到目标库的slave,那么使用pg_restore时,必须加上--generate-wa选项,以产生WAL。

参考

https://postgrespro.com/docs/postgresproee/9.6/pgtransfer.html

时间: 2025-01-02 16:26:08

PostgreSQL 的表传输功能的相关文章

PostgreSQL数据保留窗口功能的使用

标签 PostgreSQL , 保留窗口 , ttl , stream , continuous view , pipelinedb 背景 类似mongodb的rotate collate(设置表的上限容量.上限记录数,持续写入,自动覆盖最老的记录),PostgreSQL通过pipelinedb也能实现类似的功能. 此类功能非常适合日志数据,无需维护成本,持续写入,自动覆盖最老的记录. pipelinedb计划会在2017-07月份转换为postgresql插件,届时使用会更加便利. 如果不使用

PostgreSQL 10.0 preview 功能增强 - 增加access method CHECK接口amcheck

标签 PostgreSQL , 10.0 , amcheck , 逻辑一致性检测 , 物理存储检测 背景 一些高端存储.包括ZFS文件系统,在使用了RAID后,有块检测和异常块的修复功能. 对于数据库来说,数据的可靠性是非常重要的指标,例如: 1. 写进入是什么,读出来就应该是什么. 2. 当操作系统的collate发生变化时,索引的顺序可能与实际的collate顺序不匹配.造成不稳定现象. 3. 数据块partial write,可能导致数据损坏. 4. 内存页异常,使用到某些异常页时,可能带

PostgreSQL flashback(闪回) 功能实现与介绍

标签 PostgreSQL , 脏读 , 事务 , flashback , 闪回 , drop , truncate , dml 背景 闪回的需求往往是救命的需求,因为通常情况下数据库正常运行是不需要闪回的,往往是出现了误操作,被攻击,被注入后,数据库的数据被删除或恶意纂改并且纂改的事务已提交,也就是说纂改已经被持久化了. 这种情况下需要闪回来救命,回到被破坏前的状态. 闪回的目标分为两种: DML闪回和DDL闪回. DML闪回指对INSET, UPDATE, DELETE操作的闪回.DDL闪回

PostgreSQL 10.0 preview 功能增强 - 后台运行(pg_background)

标签 PostgreSQL , 10.0 , 后台运行 , pg_background_launch , pg_background_result , pg_background_detach , pg_background 背景 当用户在管理数据库时,如果要在交互式界面跑一些QUERY,但是不知道QUERY要运行多久,担心网络问题或者其他问题导致终端断开,QUERY执行情况不明的话.就需要后台运行这个功能了. 后台运行在LINUX中也很常见,比如 nohup ls -la / >/tmp/re

PostgreSQL 内存表

背景 在某些场景,要求快速的DML,并且对数据可靠性要求不是非常高. 例如游戏的会话信息,传感器上传的最新数据,运算的中间结果,等等.例如在一个场景中,有非常多的传感器的数据要不断的被更新和查询,可以使用这种方法,每个传感器的ID哈希后分配给对应的会话,这个传感器. 上面的需求,PostgreSQL 临时表都能满足. 但是临时表也存在一定的限制或弊端. 临时表为会话级内存表,跨会话不共享数据和结构,不写REDO.超过一定大小时会落盘,不是纯内存的.同时临时表继承了普通表的多版本,但是实际上会话级

PostgreSQL 10.0 preview 功能增强 - 逻辑订阅端 控制参数解说

标签 PostgreSQL , 10.0 , 逻辑订阅 背景 PostgreSQL 逻辑订阅相关文章请参考 <PostgreSQL 10.0 preview 变化 - 逻辑复制pg_hba.conf变化,不再使用replication条目> <PostgreSQL 10.0 preview 功能增强 - 备库支持逻辑订阅,订阅支持主备漂移了> <PostgreSQL 10.0 preview 功能增强 - 逻辑复制支持并行COPY初始化数据> <PostgreSQ

并行方式全表扫描功能已提交 PG 9.6 版主干代码

我以前建议过将并行全表扫描功能加入至PostgreSQL 9.5中,但未实现.然而,今天我很高兴地向各位通报 我已经将第一版本的并行扫描功能提交至PostgreSQL的开发主分支中,我们确认它将会包含在将要发布的9.6版本中. 为PostgreSQL增加并行查询功能,目前这只是第一步,它也是我长久以来的一个梦想,我已为此工作了好几年了, 最早真正开发时是在9.4版本的开发期间,那时我主要是开发了一些后台动态进程和动态共享内存:接着在9.5版本 期间,我又增加了很多有关并行机制的底层基本加松的开发

TDW与PostgreSQL数据互访问功能

一.开源项目TDW介绍 腾讯分布式http://www.aliyun.com/zixun/aggregation/8302.html">数据仓库 ( Tencent distributed Data Warehouse,以下简称TDW) 是腾讯工程技术事业群数据平台部基于开源软件研发的大数据处理平台,它基于Hadoop.Hive.PostgreSQL之上进行研发,并在开源软件的基础上做了大量的定制和优化.目前TDW是腾讯内部规模最大的分布式系统,集中了腾讯内部各个产品的数据,为腾讯的各个产

iOS版WPS WiFi文件传输功能快速导入文件

  手机.平板等移动设备成为人们生活中的必需品后,如何简便地将电脑与移动设备连通.实现文件共享成为迫切的问题.文件传输功能软件已经数不胜数,但是在苹果设备上快速完成这个操作,就要说一说iOS版WPS Office新推出的WiFi文件传输功能. iTunes传送文件,需要使用数据线将电脑与移动设备相连.使用网盘又需要登录才可以.通过WiFi文件传输,只需连接WiFi,将移动设备显示的网址在电脑上打开即可将电脑本地文件传输至移动设备上WPS Office的文件夹中.下面就来向大家详细介绍一下这个功能