Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不寻常的DB情况——必须逐个模式从Heroku模式进行pg_转储,有没有快速的方法?_Heroku_Pg Dump_Apartment Gem - Fatal编程技术网

不寻常的DB情况——必须逐个模式从Heroku模式进行pg_转储,有没有快速的方法?

不寻常的DB情况——必须逐个模式从Heroku模式进行pg_转储,有没有快速的方法?,heroku,pg-dump,apartment-gem,Heroku,Pg Dump,Apartment Gem,我们的Rails应用程序使用公寓gem存储客户机数据,公寓gem为每个租户创建一个模式。我们是在希罗库的9.4年级 一切都很顺利,直到我们有大约600个租户,突然我们的自动pg备份停止工作。Heroku支持人员告诉我们,他们无法执行备份,因为给定了该数量的模式(大约30000个)的表的总数导致pg_dump出现OOM错误。(我们直接向本地机器进行pg_转储的尝试也失败了。) Heroku建议,我们可以通过逐个模式备份数据,例如,在一个bash脚本中循环遍历每个模式名称: pg_dump -Fc

我们的Rails应用程序使用公寓gem存储客户机数据,公寓gem为每个租户创建一个模式。我们是在希罗库的9.4年级

一切都很顺利,直到我们有大约600个租户,突然我们的自动pg备份停止工作。Heroku支持人员告诉我们,他们无法执行备份,因为给定了该数量的模式(大约30000个)的表的总数导致pg_dump出现OOM错误。(我们直接向本地机器进行pg_转储的尝试也失败了。)

Heroku建议,我们可以通过逐个模式备份数据,例如,在一个bash脚本中循环遍历每个模式名称:

pg_dump -Fc "<db_credentials>" -n $schema >"$schema.dump"
pg_dump-Fc”“-n$schema>“$schema.dump”
这是可行的,但根据我们的计算,下载所有数据(假设一切正常)需要40多个小时。这有点令人沮丧,因为实际的数据量是微不足道的(大约4GB未压缩)

我们想考虑将数据库导出到Amazon RDS,但我们公司并不认为我们的客户会容忍应用程序宕机两天(假设一切正常)。我们正在成长,潜在的迁移停机时间只会变得更糟,有效地将我们锁定在Heroku

问题:

  • 我们有没有办法加快这一进程?(FWIW,进行未压缩的pg_转储似乎并没有提高性能。)

  • 这是否只是标准的数据库迁移停机时间,开发人员只需要告诉公司他们必须处理停机时间