在 Heroku Postgres 上导入新表时限制停机时间
Limiting downtime while importing new tables on Heroku Postgres
我们有几个表,其中包含大量条目,有时需要重新导入。只关注一些表,所以我们不使用restore
而是类似这样的命令:
heroku pg:psql --app ourapp HEROKU_POSTGRESQL_WHITE < data.sql
这大约需要 30 分钟,主要是由于数据上传(约 1GB)。
到目前为止,我们已将应用程序置于维护模式以导入新数据,但我们希望避免将来出现长时间停机。
在 Heroku 中实现此目标的最佳方法是什么?
我们减少停机时间的第一个想法是找到一种方法 运行 来自服务器的命令将具有更好的上传速度,但它仍然不完美。
我们考虑过使用 followers,但是当用户与应用程序交互时需要写入一些其他表,我们不确定是否可以告诉应用程序返回到 followers,即使 master数据库没有问题。
我们还考虑过在上传新数据时完全缓存所有相关表,然后清除该缓存,但 Heroku 似乎没有对缓存提供足够的控制来实现这一点。
导入临时第二个 table,然后删除第一个 table,并在事务中重命名第二个。
我们有几个表,其中包含大量条目,有时需要重新导入。只关注一些表,所以我们不使用restore
而是类似这样的命令:
heroku pg:psql --app ourapp HEROKU_POSTGRESQL_WHITE < data.sql
这大约需要 30 分钟,主要是由于数据上传(约 1GB)。
到目前为止,我们已将应用程序置于维护模式以导入新数据,但我们希望避免将来出现长时间停机。
在 Heroku 中实现此目标的最佳方法是什么?
我们减少停机时间的第一个想法是找到一种方法 运行 来自服务器的命令将具有更好的上传速度,但它仍然不完美。
我们考虑过使用 followers,但是当用户与应用程序交互时需要写入一些其他表,我们不确定是否可以告诉应用程序返回到 followers,即使 master数据库没有问题。
我们还考虑过在上传新数据时完全缓存所有相关表,然后清除该缓存,但 Heroku 似乎没有对缓存提供足够的控制来实现这一点。
导入临时第二个 table,然后删除第一个 table,并在事务中重命名第二个。