Database 如何在PostgreSQL中复制DDL更改

Database 如何在PostgreSQL中复制DDL更改,database,postgresql,replication,Database,Postgresql,Replication,在PostgreSQl 9.1中,流式复制是通过对主数据进行更新和删除而生成的WALs记录来完成的 如何复制DDL更改?这些不是WAL的一部分 Postgresql的预写日志(WAL)确实包含DDL。在Postgresql中,DDL是事务性的,就像DML一样。一切都要通过墙 要详细说明科林的答案,请参见,几乎所有内容都通过预写日志。它是一个块级日志,记录对任何数据库结构的每次写入。对数据目录任何部分的每次更改都首先记录在WAL中。这是因为WAL的主要目的是允许在系统崩溃或断电时重播更改,因此它需

在PostgreSQl 9.1中,流式复制是通过对主数据进行更新和删除而生成的WALs记录来完成的


如何复制DDL更改?这些不是WAL的一部分

Postgresql的预写日志(WAL)确实包含DDL。在Postgresql中,DDL是事务性的,就像DML一样。一切都要通过墙


要详细说明科林的答案,请参见

,几乎所有内容都通过预写日志。它是一个块级日志,记录对任何数据库结构的每次写入。对数据目录任何部分的每次更改都首先记录在WAL中。这是因为WAL的主要目的是允许在系统崩溃或断电时重播更改,因此它需要记录每个计划的磁盘写入

在PostgreSQL中,表、视图等只是系统目录表中的条目。对这些目录的更改将与其他内容一起提前写入日志。数据库创建也是如此;db只是
pg_数据库
和相应目录结构中的一个条目

VACUUM
CLUSTER
TRUNCATE
等对表格所做的更改;它们都要通过WAL,要么是块级更改记录,要么是描述操作的特殊WAL条目

只有少数不耐用的东西不会穿过墙壁,例如:

  • 未标记的
    临时表的更改
  • 用于磁盘排序的临时文件