কীভাবে একটি ওয়ার্কিং এবং সম্পূর্ণ পোস্টগ্র্যাস এসকিউএল ডিবি ব্যাকআপ এবং পরীক্ষাগুলি পাবেন


45

আমি আশা করছিলাম যে এমএস এসকিউএল সার্ভারের মতো আপনি কীভাবে একটি পূর্ণ পোস্টগ্রাস ব্যাকআপ গ্রহণ করবেন এবং তারপরে অনাথ ব্যবহারকারীদের যত্ন নেবেন সে সম্পর্কে কীভাবে একটি স্পষ্ট উত্তর পেতে পারি।

আমি যা পড়েছি এবং এটি ভুল হতে পারে, একটি ভাল পোস্টগ্র্যাস এসকিউএল ব্লগ খুঁজে পাওয়া চ্যালেঞ্জিং ছিল তাই দয়া করে আমাকে কিছু সম্পর্কে পরামর্শ দেওয়ার জন্য নির্দ্বিধায় অনুভব করুন, আমার অ্যাপ্লিকেশনটি কীভাবে কাজ করে তা আমার ব্যাকআপ এবং স্লোনির উপর আস্থা রাখতে পারে তা নির্ধারণ করতে হবে রেপ্লিকেশন। আমি একজন বিকাশকারী একটি ব্যাকআপ আমি মাধ্যমে PgadminIII থেকে গ্রহণ পুনঃস্থাপন ছিল custom, directoryএবং tarবিন্যাস যখন নির্বাচন OIDগুলি কিন্তু সে বলল যে তারা দুজন লোড হয়নি, tarকরেনি কিন্তু এটি শুধুমাত্র ডিরেক্টরির না ডেটা ছিল। আমি এখন সত্যিই বিভ্রান্ত।

  1. আমি পিজিএডমিনিআইআইআই ব্যবহার করছি, এর একটি pg_dumpএবং pg_dumpallবিকল্প রয়েছে। আমি ফিরে চাই সবকিছু আপ যে আমি এই ডাটাবেসের কোথাও পুনরুদ্ধার করতে পারেন এবং যাচাই করুন যে হ্যাঁ, সমস্ত ডেটা আমরা প্রয়োজন পরীক্ষা করতে হবে এবং আমাদের ব্যাকআপ ভাল। অবশেষে আমি একটি অটো-রিস্টোর স্ক্রিপ্ট লিখতে চাই তবে একবারে একদিন।

pg_dumpallস্পষ্টতই একটি -globalsবিকল্প রয়েছে যা সমস্ত কিছু ব্যাকআপ করার কথা রয়েছে, তবে এর জন্য সহায়তা একটি বিকল্প নয়, pg_dumpallএকটি প্রদর্শন করে । -g, --globals-only dump only global objects, no databases--globals

আমি ভেবেছিলাম pg_dumpallকমপক্ষে বিদেশী কীগুলি ব্যাকআপ করব তবে এটি একটি 'বিকল্প' বলে মনে হচ্ছে। ডকুমেন্টেশন অনুসারে , বিদেশী কীগুলির ব্যাকআপ pg_dumpallনেওয়ার জন্য আমার একটি -oবিকল্প ব্যবহার করার পরেও , আমি কখনই বিদেশী কীগুলি ব্যাকআপ করতে চাই না এবং কখনই এটি একটি ডিফল্ট বিকল্প হিসাবে আরও অর্থবোধ করতে পারি তা ভাবতে পারি না।

  1. আমি কীভাবে অনাথ ব্যবহারকারীদের যত্ন নেব এবং আমার সমস্ত কিছু যাচাই করব? আমি আমার সার্ভারের ব্যাকআপ ফাইলটি অন্য সার্ভারে পুনরুদ্ধার করতে এবং সমস্ত কিছু যাচাই করে দেখছি। পোস্টগ্র্রেএসকিউএল-এ কীভাবে সত্যিকারের ব্যাকআপ নেওয়া এবং পুনরুদ্ধার করবেন সে সম্পর্কে কারও কাছে যদি কোনও পরামর্শ থাকে তবে আমি খুব কৃতজ্ঞ হব।

আমার একটি পোস্টগ্রিজ এসকিউএল সার্ভার ছিল তবে আমি এখনও বুঝতে পারি না যে অ্যাপ্লিকেশনটি OIDডিফল্টরূপে ব্যাকআপ কেন দেয় না ! মনে হচ্ছে 99.9% সময় আপনি এটি চাইবেন।

আপডেট 1:

পোস্টগ্রিস ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে globalsআমি যে বিকল্পটি সন্ধান করছিলাম তা এই সংস্করণে একটি ডিফল্ট বিকল্প বলে মনে হচ্ছে, তবে এটির জন্য এখনও -oবিকল্পটি দরকার। যদি কেউ যা যাচাই করতে বা আমাকে উদাহরণ কমান্ড দিতে পারে তার প্রয়োজন মতো সমস্ত কিছু দিয়ে অন্য কোথাও পুনরুদ্ধার করার জন্য আমি এটির প্রশংসা করব।

সম্পাদনা করুন: আমার প্রশ্ন সম্পাদনা করে এই প্রশ্নের স্বতন্ত্রতা দেখাতে সাইটকে জিজ্ঞাসা করা হচ্ছে। এই প্রশ্নটি উত্থাপন করে এবং ব্যাকআপগুলিতে ওআইডি সম্পর্কিত স্পষ্টতা, গ্লোবাল এবং নন গ্লোবালগুলির মধ্যে পার্থক্য এবং পাশাপাশি ব্যাকআপটি ঠিক ব্যাক আপ করার বিপরীতে ব্যাকআপটি ভাল কিনা তা নিশ্চিত করার জন্য সুপারিশ পুনরুদ্ধার করে। উত্তরের কারণে আমি ব্যাকআপ নিতে সক্ষম হয়েছি, গ্লোবাল / অয়েডগুলি খুঁজে বের করতে পেরেছি এবং ক্রোন জবস ব্যবহার করে পোস্টগ্র্রেসে রাতে একটি পুনরুদ্ধার প্রক্রিয়া শুরু করেছি। সাহায্যের জন্য ধন্যবাদ!


উত্তর:


58

আপনি pg_dumpall দিয়ে পুরো পোস্টগ্রিসএসকিউএল ক্লাস্টারটি ফেলে দিতে পারেন। যে সব ডাটাবেস ও একটি একক ক্লাস্টার জন্য সব globals। সার্ভারের কমান্ড লাইন থেকে, আমি এই জাতীয় কিছু করব। (মাইনের ডিফল্ট পোর্টে নয়, 5433 পোর্টে শোনা যাচ্ছে)) আপনার - ক্লিন বিকল্পের প্রয়োজন হতে পারে বা নাও লাগতে পারে।

$ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql

এর মধ্যে গ্লোবালগুলি রয়েছে - ব্যবহারকারী এবং গোষ্ঠী সম্পর্কে তথ্য, টেবিল স্পেসগুলি এবং আরও।

যদি আমি একটি একক ডাটাবেস ব্যাকআপ করতে এবং একটি স্ক্র্যাচ সার্ভারে স্থানান্তরিত করতে যাচ্ছিলাম, আমি pg_dump দিয়ে ডাটাবেসটি ডাম্প করব, এবং কোনওটি দিয়ে গ্লোবালগুলি ডাম্প করব

  • pg_dumpall --globals-only, বা
  • pg_dumpall --roles-only (যদি আপনার কেবল ভূমিকা প্রয়োজন)

এটার মত.

$ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql

আউটপুটগুলি কেবল পাঠ্য ফাইল।

আপনি এই ফাইলগুলিকে অন্য সার্ভারে স্থানান্তরিত করার পরে প্রথমে গ্লোবালগুলি লোড করুন, তারপরে ডাটাবেস ডাম্প।

$ psql -U postgres -h localhost -p 5433 < globals.sql
$ psql -U postgres -h localhost -p 5433 < sandbox.sql

আমি ভেবেছিলাম পিজি_ডম্পল কমপক্ষে বিদেশী কীগুলি ব্যাকআপ করবে, তবে এটি 'বিকল্প' বলে মনে হচ্ছে। অনুসারে: http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html এমনকি পিজি_ডাম্পল সহ বিদেশী কীগুলি ব্যাকআপ করার জন্য আমাকে একটি -o বিকল্প ব্যবহার করতে হবে

না, সেই উল্লেখটি বলে "যদি আপনার অ্যাপ্লিকেশনটি কোনওভাবে OID কলামগুলিকে রেফারেন্স করে তবে এই বিকল্পটি ব্যবহার করুন (উদাহরণস্বরূপ, কোনও বিদেশী কী সীমাবদ্ধতায়) Otherwise অন্যথায়, এই বিকল্পটি ব্যবহার করা উচিত নয়" " (জোর দেওয়া হয়েছে)) আমি মনে করি আপনার অ্যাপ্লিকেশনটি ওআইডি কলামগুলিকে উল্লেখ করেছে। "বিদেশী কীগুলি ব্যাকআপ করতে" আপনার এই বিকল্পটি ব্যবহার করার দরকার নেই। (আপনার সম্পাদক বা ফাইল দর্শকের ডাম্প ফাইলটি পড়ুন))


3
স্যান্ডবক্স.এসকিউএল যে লাইনটি আমদানি করা হচ্ছে সেই লাইনটি থেকে কি ডাটাবেসটির নামটি পাওয়া যাচ্ছে না? psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
সেবকে

এটি দেখেছে যে pg_dumpall, 9.5 সংস্করণটি NULLব্যবহার করার সময় মানগুলির সাথে সঠিকভাবে কাজ করে না COPY। আমি এর মতো অনেক ত্রুটি পেয়েছি: psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.psql -f /tmp/dumpall.sql
পোস্টগ্র্রেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.