मैं एक शेड्यूल सेट अप करना चाहता हूं जैसे कि मेरा स्टेजिंग डेटाबेस हमेशा मेरे उत्पादन डेटाबेस की एक प्रति है, और प्रति दिन एक बार या एक घंटे में प्रतिलिपि होती है।हेरोकू पर उत्पादन के लिए उत्पादन से डेटाबेस की निरंतर प्रतिलिपि कैसे निर्धारित करें?
मैं जानता हूँ कि एक बंद प्रतिलिपि प्रदर्शन करने के लिए एक आसान तरीका है कि वहाँ, heroku pg
का उपयोग कर:
heroku pg:copy SOURCE_APP::SOURCE_DATABASE DESTINATION_DATABASE --app DESTINATION_DATABASE
लेकिन वह सिर्फ एक बार की बात है।
मुझे यह भी पता है कि अनुसूचित आदेशों को हेरोकू शेड्यूलर के साथ चलाने में आसान है, जो एक-ऑफ डिनोस में चल रहे हैं। लेकिन 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;
यह सबसे अच्छा तरीका क्या है?