复制数据库更改

时间:2010-10-27 14:30:56

标签: mysql database postgresql replication

我想将数据库“复制”到外部服务。为此,我可以复制整个数据库(SELECT * FROM TABLE)。

如果进行了一些更改(INSERT,UPDATE,DELETE),是否需要再次上传整个数据库,或者是否有描述这些操作的日志文件?

谢谢!

2 个答案:

答案 0 :(得分:2)

听起来您的“外部服务”不仅仅是另一个数据库,因此传统复制可能对您不起作用。关于该服务的更多细节将是很好的,所以我们可以自定义答案。根据您需要多长时间将数据提供给外部服务以及应用程序的性能需求,一些主要选项将是:

  • 触发器:添加INSERT / UPDATE / DELETE触发器 更新您的外部服务 数据发生变化时的数据(这个 你的应用程序可能很粗糙 性能但提供近 外部的实时数据 服务)
  • 日志处理:您可以解析日志中的更改并使用某种级别的ETL来确保它们能够在外部服务的数据存储上正常运行。如果您不熟悉特定DBMS的结构,我不建议您参与其中。
  • 增量差异:您可以在某个时间间隔(例如,每天3次)运行差异,并让cron作业或计划任务运行一个脚本,移动大块中的所有数据。这会优先考虑您的应用在外部服务上的表现。

如果选择触发器,则可以调整现有的基于触发器的复制解决方案来更新外部服务。我没有使用过这些,所以我不知道会有多疯狂,只是一个想法。一些示例是BucardoSlony

答案 1 :(得分:0)

有许多方法可以复制PostgreSQL数据库。在当前版本9.0中,PostgreSQL全球开发小组引入了两个新的岩石功能,称为Hot Standby和Streaming Replication,将PostgreSQL提升到一个新的水平,并引入了内置解决方案。

在wiki上,对PostgreSQL-9.0的新功能进行了完整的审核: http://wiki.postgresql.org/wiki/PostgreSQL_9.0

还有其他应用程序,如Bucardo,Slony-I,Londiste(Skytools)等,您也可以使用它们。

现在,您想要做什么来进行日志处理?你到底想要什么?问候