首页 > 解决方案 > Postgres 将数据从本地数据库传输到远程数据库

问题描述

我必须使用服务器(比如说x.x.x.x- 主服务器和y.y.y.y- 辅助服务器)
在主服务器上,我运行了一个 Django 应用程序,它将其数据存储到 Postgres 数据库中,辅助服务器绝对是空的。
每分钟它在一个表中创建大约 900 多行,因此最终,该表中的行数超过 3M,并且所有这些对象的处理(过滤、排序)由于其数量而变得非常缓慢。但是,我只需要最近 3 天内写的那些行,不再需要了。尽管如此,我还是不能简单地删除数据,因为我需要它在未来进行分析,所以我需要将它保存在某个地方。
我的想法是在辅助服务器上创建另一个数据库并将所有额外的数据保存在那里。所以我需要将所有超过 3 天的数据从本地(主)服务器传输到远程(辅助)服务器。
可以使用cronwhich 来实现规律性,这是一项微不足道的任务。
重要的是我需要在cron. 我认为没有内置的 SQL 命令可以做到这一点,所以我想知道这是否可能。

我认为命令应该看起来像

INSERT INTO remote_server:table
SELECT * FROM my_table;

另外,我认为值得一提的是,正如我上面所写的那样,我遇到问题的表格正在不断更新。因此,在执行某些过滤或排序查询时,这些更新可能会导致速度问题。

标签: sqlpostgresqlremote-server

解决方案


你有几个选择:

如果您想坚持手动复制,您可以设置一个从辅助服务器连接到主服务器的外部服务器。然后创建一个外部表以从主服务器访问该表。也许通过外部表的访问已经足够快,因此您实际上不需要物理复制数据。但是,如果您想要一个“断开连接”的副本,您可以简单地运行insert into local_table select * from foreign_table或创建一个通过 cron 刷新的物化视图。

另一个更容易设置(但可能更慢)的解决方案是使用dblink模块来访问远程服务器。

最后,您可以选择为该表设置从主服务器到辅助服务器的逻辑复制。然后您不需要任何 cron 作业,因为主服务器上的任何更改都会自动应用于辅助服务器上的表。


推荐阅读