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

问题描述 投票:0回答:1

我必须使用服务器(比方说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;

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

sql postgresql remote-server
1个回答
0
投票
您有几种选择:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.