Postgres将数据从本地数据库传输到远程数据库

时间:2020-01-12 18:43:53

标签: sql postgresql remote-server

我必须使用服务器(假设x.x.x.x-主服务器和y.y.y.y-次服务器)
在主服务器上,我有一个正在运行的Django应用程序,它将其数据存储到Postgres数据库中,第二个应用程序绝对是空的。
它每分钟在一个表中创建约900多个行,因此,最终,该表中的行数超过了3M,并且由于数量庞大,所有这些对象(过滤,排序)的处理都变得非常缓慢。但是,我只需要最近三天内写的那些行,就不再需要。不过,我不能简单地删除数据,因为将来需要进行分析,因此需要将其保存在某个地方。
我考虑的是在辅助服务器上创建另一个数据库,并将所有其他数据保留在那里。因此,我需要将超过3天的所有数据从本地(主)服务器传输到远程(辅助)服务器。
可以使用cron来实现规律性,这是一项微不足道的任务。
我需要在cron中执行的命令并不简单。我不认为没有内置的SQL命令可以执行此操作,所以我想知道这是否完全可能。

我认为该命令应类似于

INSERT INTO remote_server:table
SELECT * FROM my_table;

此外,我认为值得一提的是,我在上面遇到问题的表正在不断更新。因此,可能是这些更新在执行某些过滤器或排序查询时引起速度问题。

1 个答案:

答案 0 :(得分:0)

您有几种选择:

如果您要坚持使用手动副本,则可以设置foreign server,以将辅助副本连接到主要副本。然后创建一个foreign table以从主服务器访问该表。也许通过外部表的访问已经足够快,所以您实际上不需要物理复制数据。但是,如果要复制副本,只需运行insert into local_table select * from foreign_table或创建通过cron刷新的实例化视图。

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

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

相关问题