pg数据库流复制

  • 9.0开始支持1+n的异步流复制
  • 9.1开始支持1+1+n的同步和异步流复制
  • 9.2开始支持级联流复制
  • 9.3开始流复制协议增加了时间线文件传输的协议,支持自动切换时间线
    注释:
    1+1+n是一个主节点,一个同步流复制,n个异步流复制

1 流复制原理

1 备份原理

postgresql在数据目录下的pg_xlog子目录中维护了一个WAL日志文件,该文件用于记录数据库文件的每次改变,这种日志文件机制提供了一种数据库热备份的方案,即:在把数据库使用文件系统的方式备份出来的同时也把相应的WAL日志进行备份,即使备份出来的数据块不一致,也可以重放WAL日志把备份的内容推到一致状态。这也就是基于时间点的备份(Point-in-Time Recovery),简称PITR。

把WAL日志传送到另一台服务器有两种方式

1.WAL日志归档(base-file)

2.流复制(streaming replication)

第一种是写完一个WAL日志后,才把WAL日志文件拷贝到standby数据库中,就是通过cp命令实现远程备份,这样通常备份会落后主库一个WAL日志文件。而第二种流复制是postgresql9.x之后才提供的新的传递WAL日志的方法,它的好处是只要master库一产生日志,就会马上传递到standby库,同第一种相比有更低同步延迟,所以我们肯定会选择流复制的方式。

在实际操作之前还有一点需要说明的是standby的搭建中最关键的一步,在standby中生成master的基础上备份。postgresql9.1之后提供了一个很方便的工具,pg_basebackup,关于它的详细介绍和参数可以在官网中查看。

你可能感兴趣的:(pg数据库流复制)