我想在两个数据库之间透明地同步一组表,而无需更改应用程序代码。我的想法是在源数据库表中创建插入、更新和删除触发器,以使用 dblink 将数据复制到目标。数据库表无缝。
问题是源表中的更改总是在事务中完成。触发器会自动复制 dest 中的更改。表,但如果源事务回滚 dest。表的变化不是。
有没有办法在两个数据库之间自动同步事务开始和提交/回滚?类似触发器的行为将是理想的。
我想在两个数据库之间透明地同步一组表,而无需更改应用程序代码。我的想法是在源数据库表中创建插入、更新和删除触发器,以使用 dblink 将数据复制到目标。数据库表无缝。
问题是源表中的更改总是在事务中完成。触发器会自动复制 dest 中的更改。表,但如果源事务回滚 dest。表的变化不是。
有没有办法在两个数据库之间自动同步事务开始和提交/回滚?类似触发器的行为将是理想的。
当 9.3 发布时,请查看http://www.postgresql.org/docs/9.3/static/postgres-fdw.html。您可以回滚外部数据库中的事务。
是的,从很久以前就有可能——使用Slony-I或其他基于触发器的复制。
行更新记录到“主”端的特殊表中,并在“从”端异步重播。
外部程序/守护进程用于同步更改。
有关详细信息,请参阅http://www.postgresql.org/docs/current/static/different-replication-solutions.html和http://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling#Replication。