我期待設置一個時間表,以便我的臨時數據庫始終是我的生產數據庫的副本,並且每天一次或每小時一次地進行復制。如何安排從生產到暫存Heroku的連續數據庫副本?
我知道,有執行一次性拷貝一個簡單的方法,使用heroku pg
:
heroku pg:copy SOURCE_APP::SOURCE_DATABASE DESTINATION_DATABASE --app DESTINATION_DATABASE
不過這只是一次性的事情。
我也知道使用Heroku調度程序運行計劃命令非常簡單,Heroku調度程序運行在一次性的dynos中。但是dynos沒有安裝Heroku Toolbelt,所以heroku pg:copy
不可用。
我使用pg_dump | pg_restore
試過,但我遇到的兩個問題之一:
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 3205; 0 0 COMMENT EXTENSION plpgsql
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql
Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
:
不限制的模式,因爲我沒有正確的權限,我認爲失敗通過將pg_dump
限制爲僅限於--schema=public
,它會失敗,因爲某些擴展取決於公共架構,並且不會被刪除。
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 9; 2615 16385 SCHEMA public Storm
pg_restore: [archiver (db)] could not execute query: ERROR: cannot drop schema public because other objects depend on it
DETAIL: extension citext depends on schema public
extension pg_stat_statements depends on schema public
HINT: Use DROP ... CASCADE to drop the dependent objects too.
Command was: DROP SCHEMA IF EXISTS public;
這樣做的最佳方式是什麼?