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

Postgres transfer data from local to remote database

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

我认为命令应该类似于

INSERT INTO remote_server:table
SELECT * FROM my_table;

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

您有多种选择:

如果你想坚持手动复制,你可以设置一个 foreign server that connects from the secondary to the main. Then create a foreign table 从主服务器访问 table。也许通过外部 table 访问已经足够快,以至于您实际上不需要物理复制数据。但是如果你想要一个 "disconnected" 副本,你可以简单地 运行 insert into local_table select * from foreign_table 或者创建一个通过 cron 刷新的物化视图。

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

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