pg_dump এবং pg_restore: ইনপুট ফাইলটি কোনও বৈধ সংরক্ষণাগার হিসাবে উপস্থিত হয় না


66

আমি একটি মেশিনে pg_dump ব্যবহার করেছি এবং ফলাফল ফাইলটি অন্যটিতে অনুলিপি করেছি, যেখানে আমি এটি পুনরুদ্ধার করার চেষ্টা করেছি। আমি বিশ্বাস করি স্কিমা একই। তবে, আমি পেয়েছি:

pg_restore: [archiver] input file does not appear to be a valid archive

আমি নিম্নলিখিত অপারেশনগুলি সম্পন্ন করেছি:

pg_dump -a -f db.txt dbname

এবং:

pg_restore -a -d dbname db.txt

কী ভুল হতে পারে?


একই মেশিনে ডাম্প আমদানি করে দেখুন যা এটি তৈরি করেছে। এছাড়াও, পোস্টগ্র্যাস সংস্করণগুলি পরীক্ষা করুন।
হ্যাঙ্ক গে

আমি একই মেশিনে এটি আমদানির চেষ্টা করতে পারি না, কারণ এটি একটি উত্পাদন যন্ত্র। কোন ধারণা, আমি আর কি করতে পারি?
গ্রাস্কজি

এই সমাধানটি কিছু লোকের সাথেও প্রাসঙ্গিক হতে পারে: স্ট্যাকওভারফ্লো
মুহাম্মদ হান্নান

উত্তর:


93

আপনি প্লেইন এসকিএল ফর্ম্যাটে ডাম্পিং করছেন যা পিএসএলএল ফিড করার জন্য ডিজাইন করা হয়েছিল। এটি pg_restore দ্বারা স্বীকৃত নয়।

cat db.txt | psql dbname

কৌতুক করা উচিত


5

26

pg_dumpডিফল্টরূপে ডেটা পুনরায় তৈরি করার জন্য প্রয়োজনীয় স্কয়ার কম্যান্ড তৈরি করে। এটি পুনরুদ্ধার করার জন্য, আপনাকে কেবল ইনপুট হিসাবে ফাইলের সাথে psql(না pg_restore) অনুরোধ করতে হবে। pg_restoreকেবল বাইনারি (ডিফল্ট নয়, এবং কম স্বাভাবিকের জন্য প্রস্তাবিত নয় ) ফর্ম্যাটের জন্য ব্যবহার করতে হবে pg_dumpদস্তাবেজগুলি পড়ুন ।

আপডেট: pg_dumpবাইনারি ফর্ম্যাটগুলি ( -Fc -Ft) যা ব্যবহার করা হবে pg_restoreতা ঠিক আছে এবং কিছু অতিরিক্ত নমনীয়তা সরবরাহ করে। তবে সেগুলি কম স্ট্যান্ডার্ড (এসকিউএল নন), কিছু সরঞ্জাম (যেমন একটি পিএইচপি ফ্রন্টএন্ড) থেকে আমদানি করার জন্য কম উপযুক্ত বা কোনও পাঠ্য সম্পাদক দ্বারা কারসাজি করা, এবং অন্যান্য সংস্করণ এবং এমনকি অন্যান্য ডেটাবেসগুলিতে সামান্য কম বহনযোগ্য। ব্যাকআপগুলির জন্য, আমি ডিফল্ট প্লেইন ফর্ম্যাটটি রেখেছি। অন্যান্য পরিস্থিতিতে, বাইনারি + pg_restore বিকল্পটি সমান বা আরও উপযুক্ত হতে পারে।

রাখার বিষয়টি হ'ল পোস্টগ্র্যাস্কল-এ, সাধারণ দৃশ্যে ব্যাকআপটি সাধারণত পিজি_ডাম্প (প্লেইন) এবং স্ট্যান্ডার্ড কমান্ড লাইন ক্লায়েন্ট ( পিএসকিএল ) দ্বারা পুনরুদ্ধার দ্বারা সম্পন্ন হয় ।


2
[ওটি] কাস্টম আউটপুট ফর্ম্যাটটির "প্রস্তাবিত প্রস্তাবিত" স্থিতি সম্পর্কে আমি আলাদা হতে চাই - বাক্যটি "এটি সর্বাধিক নমনীয় বিন্যাস যা এটি ম্যানুয়াল থেকে ডেটা লোড করার পাশাপাশি অবজেক্টের সংজ্ঞাগুলিকে পুনরায় সাজানোর অনুমতি দেয় ..." আমার কাছে বেশ সমর্থন হিসাবে
মাইলেন এ রাদেব

"প্রস্তাবিত নয়" একটি অত্যুক্তি ছিল, আমি সম্মত। তবে "অতি নমনীয়" এর অর্থ "সর্বাধিক প্রস্তাবিত" নয়। ব্যাখ্যা।
লিওনব্লয়

13

--format=cবিকল্পটি পাস করার চেষ্টা করুন pg_dump। এটি pg_restoreএটি পুনরুদ্ধার করতে অনুমতি দেবে ।


যে কেউ এটিকে মোড করেছে তা কেন ব্যাখ্যা করতে চান? গৃহীত উত্তরটি ব্যাখ্যা করে যে এটি কাজ করবে :-)

@ এসক্রফি: আপনার বক্তব্য কী?
psmears

1
দুঃখিত, অনুলিপিটি অনুলিপি-আটকানো হয়েছে, সঠিকটি pg_restore: [archiver] did not find magic string in file headerতাই এটি সাধারণ স্কেল ডাম্পের জন্য কাজ করে না
স্ক্রাফি

@ এসক্রাফি: আপনার অর্থ কী তা আমি নিশ্চিত নই। আপনি যদি ব্যবহার করেন pg_dump --format=c ...> archivefile, এবং তারপরে ব্যবহার pg_restoreকরেন archivefile, তবে (কমপক্ষে আমি এখনই এটি পরীক্ষা করেছি) এটি ঠিকঠাক কাজ করে। আপনার ফাইলটি কোনওভাবে দুর্নীতিগ্রস্ত? বা আপনি একটি বিশেষ বাগ আঘাত করেছেন?
psmears

6

আমার পুরানো ডাটাবেসটি ব্যাকআপ এবং পুনরুদ্ধার করতে আমি এটিই করব

আপনার ডাটাবেস ব্যাক আপ করতে

pg_dump --format=c olddb_name > db_dump_file.dump

সেই ব্যাকআপটি পুনরুদ্ধার করতে

pg_restore -v -d newdb_name db_dump_file.dump

আরও পড়ুন pg_dump এবং pg_restore


5

উইন্ডোজ ব্যবহারকারীদের জন্য চেষ্টা করুন

type db.txt | psql --username="YOURNAME" dbname

একটি যাদুমন্ত্র মত কাজ করে


এই আমাকে বাঁচাতে ধন্যবাদ আপনাকে! কমপক্ষে উইন্ডোজের জন্য উত্তর গ্রহণ করা উচিত।
ড্যানিয়েল বাটলার

2

আপনি মাইএসকিউএল এর SOURCEআদেশে কিছু করতে পারেন :

psql dbname

তারপরে, পোস্টগ্র্যাস্কিল টার্মিনালে:

\i filename


1

এই ত্রুটি বার্তার অর্থ এইও হতে পারে যে ব্যাকআপ ফাইলটিতে (বা এটি সম্পর্কে আপনার অনুমান) কোনও সমস্যা আছে।

একটি ক্ষেত্রে, আমি একটি ডকার পাত্রে একটি ব্যাকআপ ফাইল মাউন্ট করেছি এবং পুনরুদ্ধার করার চেষ্টা করেছি, তবে এটি ব্যর্থ হয়েছিল does not appear to be a valid archive। এবং প্রকৃতপক্ষে, ফাইলটি খালি ছিল, কারণ মাউন্টটি সঠিকভাবে সম্পাদিত হয়নি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.