Postgresql - बैकअप डेटाबेस और विभिन्न स्वामी पर पुनर्स्थापित करें?


87

मैंने अलग-अलग सर्वर पर डेटाबेस पर बैकअप लिया है और इस कमांड के साथ मेरी आवश्यकता से अलग भूमिका है:

pg_dump -Fc db_name -f db_name.dump

फिर मैंने दूसरे सर्वर पर बैकअप कॉपी किया, जहां मुझे डेटाबेस को पुनर्स्थापित करने की आवश्यकता है, लेकिन ऐसा कोई मालिक नहीं है जो उस डेटाबेस के लिए उपयोग किया गया था। मान लें कि डेटाबेस में स्वामी है owner1, लेकिन मेरे पास केवल भिन्न सर्वर पर है owner2और मुझे उस डेटाबेस को पुनर्स्थापित करने और स्वामी को बदलने की आवश्यकता है।

जब मैंने एक अन्य सर्वर पर काम किया था:

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump

लेकिन जब पुनर्स्थापित किया जाता है तो मुझे ये त्रुटियां मिलती हैं:

pg_restore: [archiver (db)] could not execute query: ERROR:  role "owner1" does not exist

मैं इसे कैसे निर्दिष्ट कर सकता हूं ताकि यह स्वामी को बदल दे? या यह असंभव है?


1
--no-ownerजैसा कि स्वीकृत उत्तर में सुझाव दिया गया है, इसके अलावा आपको आवश्यकता हो सकती है --no-privilegesइस उत्तर को
mivk

जवाबों:


133

आपको --no-ownerविकल्प का उपयोग करना चाहिए , यह pg_restoreमूल मालिक को वस्तुओं के स्वामित्व को निर्धारित करने की कोशिश करना बंद कर देता है । इसके बजाय ऑब्जेक्ट द्वारा निर्दिष्ट उपयोगकर्ता द्वारा स्वामित्व में होगा--role

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump

pg_restore doc


14
pg_dump --no-ownerयह भी करना चाहिए
निक बार्न्स

11
मेरी प्राथमिकता पुनर्स्थापना तक इस प्रकार के निर्णयों को स्थगित करना है। यदि आप इसे डंप स्टेज पर करते हैं तो इसका मतलब है कि आप निर्यात किए बिना अपना दिमाग नहीं बदल सकते। इसे बहाल करने का अर्थ है कि आपके द्वारा तय किए गए मामले में विकल्प खुले रह गए हैं कि आपको वास्तव में उस लापता भूमिका आदि का निर्माण करना चाहिए
गैरी

1
इसलिए अगर मुझे मालिक को बदलना है, तो मुझे बिना मालिक के बैकअप लेना चाहिए? क्योंकि मुझे लगा कि मैं मालिक को बहाल कर सकता हूं। लेकिन यहां तक ​​कि --roleअलग-अलग मालिक पर सेट करना, यह अभी भी मूल मालिक का उपयोग करने की कोशिश कर रहा था (लेकिन तब मैंने उपयोग नहीं किया था --no-owner
एंड्रियस

2
@Andrius: आपको अपना बैकअप बदलने की आवश्यकता नहीं है, गैरी के जवाब से आपकी समस्या का समाधान होना चाहिए
निक बार्न्स

5
इस विषय पर सभी पोस्टों को देखते हुए, वे इस तथ्य को भी छोड़ देते हैं कि इस दृष्टिकोण के लिए नए रोल मालिक की आवश्यकता होती है, कम से कम पुनर्स्थापना के दौरान। फिर सब कुछ काम करता है
क्रिस्मार्क्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.