Postgres 9.2 的流式复制如何处理架构更改和初始表设置?

oro*_*aki 9 schema postgresql replication postgresql-9.2

我想在位于我的主要物理数据库服务器下的物理服务器上设置一个备份数据库。我正在使用 Postgres 9.2,并且我想使用同步流复制(用于原子性),但我完全不知道诸如A)初始表设置如何从服务器 1 传输到服务器 2(例如,我运行syncdb来自我的 Django 应用程序,它在服务器 1) 上创建了一系列表),以及B)如何将持续的架构更改从服务器 1 传送到服务器 2(例如,我运行 Django South 迁移,它发送ALTER TABLE查询,以及添加/删除索引等)。这些事情是通过流式复制透明地处理的,还是我必须做些什么才能影响两台服务器之间的这种变化?

Cra*_*ger 16

如果您打算使用 PostgreSQL 的内置流复制,那么您可以使用基本备份(原始数据库的文件系统级副本)为副本设定种子。所以它已经拥有了来自 master 的所有表和数据。pg_basebackup通常用于此。

流式复制从预写日志中读取块级别的更改,因此数据库在物理上保持不变。由于 DDL 和 DML 一样,记录在 WAL 中,因此 DDL 和 DML 都是透明复制的。

有关详细信息,请参阅有关PostgreSQL 中的 HA 和复制文档