PgSQL · 内核开发 · 利用一致性快照迁移你的数据

  • 时间:
  • 浏览:1

2) pg_resotre 也支持并行恢复

朋友 都知道,PostgreSQL 使用 MVCC 和 WAL 两项技术实现 ACID 价值形式。 MVCC 即多版本并发控制,简单的说,是数据库中的同一份有效数据,会共同保留多个修改版;用 snapshot 即快照,来定义一一个多多 事务能看一遍哪几种版本的数据。

然而,事情到这里还那末 刚结速,可能用户的数据较多(累似 TB级或以上),上述存全量的数据迁移法子对业务造成的影响也会很大(业务停机时间较长)。

-j number-of-jobs

--jobs=number-of-jobs

Run the most time-consuming parts of pg_restore — those which load data, create indexes, or create constraints — using multiple concurrent jobs. This option can dramatically reduce the time to restore a large database to a server running on a multiprocessor machine.

4.并行逻辑恢复 pg_restore

PostgreSQL 利用上述技术点,把一致的全量数据迁移和增量逻辑克隆技术结合起来,做到在保证严格的数据一致性基础上的,接近 0 停业务时间的数据迁移服务。

可能使用多个连接并行的备份数据库中的不同的表,在数据库还在共同修改数据库的情况下是无法获得一一个多多 完整性一致的数据的。

数据迁移的步骤:

1) MySQL 早期版本中,使用 binlog 中一一个多多 unix 时间做数据一致的位点,后期版本被 GTID 替换。

2.开启指定一一个多多 处在的快照的完整性说明 SET TRANSACTION

从 PostgreSQL 9.3 刚结速,支持开启一一个多多 事务到一一个多多 指定的的快照版本。

一一个多多 连接进行查询或修改数据时会开启一一个多多 事务(只读事务或读写事务),事务的可见性由事务中的快照决定。 也要是说,一个多多 事务的快照相同,那末 看一遍的数据是完整性相同的。 PostgreSQL 9.3 刚结速,支持函数:pg_export_snapshot,它能返回一一个多多 快照的唯标识,便于累似 事务也使用相同的快照查看数据。

这份逻辑数据是灵活,完整性由用户自定义,用户可不须要根据另一方的需求定制

PostgreSQL 9.4 刚结速,支持逻辑克隆技术价值形式,能和上述价值形式完美的结合起来,做到接近 0 停机时间的业务迁移。

这时,使用上述连个价值形式,朋友 可不须要在 PostgreSQL 9.3 和以上版本做到拿到一份一致版本的数据。 大致的步骤是

众所周知 PostgreSQL 的物理克隆技术以稳定可靠著称,目前经成为默认的高可用方案。但较少一群人关注到,PostgreSQL 的逻辑克隆技术经过几个大版本迭代,已异常的强大。它结合了太久太久黑科技,本文就一一介绍给朋友 。

2) CREATE_REPLICATION_SLOT 时会一一个多多 SQL 得话,是一一个多多 前后端的协议命令,它的返回结果集第四列是一一个多多 snapshotid。snapshotid 的获取法子可不须要参考 pg_recvlogical –create-slot 的实现。

PostgreSQL 逻辑克隆技术(logical replication),原理是累似 MySQL binlog 同步,PostgreSQL 会启动一组后端守护守护进程,把数据库产生的 redo 日志(物理日志),解析成逻辑日志,并发送给客户端。转加在的逻辑数据可不须要通过插件的法子自定义。累似 模块叫 logical decoding。

1) pg_dump 的并行备份开关 -j

下面,我想慢慢道来。

详见:1.如可导出一一个多多 快照 Table 9-64. Snapshot Synchronization Functions