PostgreSQL 9.1 হট ব্যাকআপ ত্রুটি: ডাটাবেস সিস্টেম শুরু হচ্ছে


16

আমি কিছুক্ষণের জন্য পোস্টগ্রিস 9.1 এর জন্য একটি গরম ব্যাকআপ নিয়ে কাজ করছি এবং একটি ধারাবাহিক ইস্যুতে চলে এসেছি। স্লেভ সার্ভারে পোস্টগ্রিজ পুনঃসূচনা করার পরে pgstartup লগ ফাইল এবং pg_log ডিরেক্টরিতে দৈনিক লগ ফাইল কোনও ত্রুটি ছাড়াই পড়ে। যাইহোক, যখন আমি পিএসকিএল কমান্ডটি ব্যবহার করে ডাটাবেসে প্রবেশ করার চেষ্টা করি তখন আমি ত্রুটিটি পাই:

FATAL: ডাটাবেস সিস্টেম শুরু হচ্ছে।

পুনরুদ্ধার.কনফ ফাইলটিও পুনরুদ্ধার.ডোন হয়ে যায় না। আমি এই ত্রুটিটি ব্যাপকভাবে গবেষণা করেছি এবং ধারাবাহিকভাবে একই প্রতিক্রিয়াটি পেয়েছি: পোস্টগ্র্যাস পুনরায় চালু করার চেষ্টা করার আগে ডাটাবেসটি পরিষ্কারভাবে বন্ধ করা হয়নি। পোস্টগ্রিস পুনরায় আরম্ভ করার একমাত্র উপায় হ'ল আদেশ service postgresql-9.1 restartবা /etc/init.d/postgresql-9.1 restartআদেশের মাধ্যমে । আমি এই ত্রুটিটি পাওয়ার পরে, আমি সমস্ত প্রক্রিয়া মেরে ফেলি এবং আবার ডাটাবেস পুনরায় আরম্ভ করার চেষ্টা করি এবং এখনও একই ত্রুটি পাই। আমি এখান থেকে কোথায় যাব এবং কীভাবে এই সমস্যাটি সমাধান করব তার ক্ষতি করছি loss নীচে হট ব্যাকআপটি সম্পূর্ণ করার জন্য আমি সঠিক প্রক্রিয়াটি করেছি।

মাস্টার সার্ভার কনফিগারেশন:

pg_hba.conf, লাইনটি যুক্ত করুন:

হোস্ট প্রতিলিপি IPAddressOfSlaveServer বিশ্বাস পোস্টগ্রাস করে

postgresql.conf:

ওয়াল_লেভেল = হট_ স্ট্যান্ডবাই
সর্বোচ্চ_ওয়ালার_সেন্ডার = 5
শোনো_ড্রেস = '*'
পোর্ট = 5432
সর্বোচ্চ_ওয়ালার_সেন্ডার = 5
ওয়াল_কিপ_সেকশন = 32

স্লেভ সার্ভার কনফিগারেশন:

postgresql.conf:

হট_স্ট্যান্ডবাই = চালু

recovery.conf:

স্ট্যান্ডবাই_মোড = চালু
প্রাথমিক_কন্নিনফো = হোস্ট = আইপিএড্রেসঅফমাস্টার সার্ভার
পোর্ট = 5432
ব্যবহারকারী = postgres
পুনরুদ্ধার_কমন্ড = 'সিপি /var/lib/pgsql/9.1/data/pg_xlog/%f "% পি"'

উভয় সার্ভার কনফিগার করার পরে

আমি মাস্টার সার্ভারে পোস্টগ্রিজ ব্যবহারকারীর কাছে পরিবর্তন করেছি এবং কমান্ডগুলি চালাচ্ছি:

psql -c "pg_start_backup ('লেবেল', সত্য) নির্বাচন করুন;";
আরএসআইএনসি -এ -ভি-এসএসএস /vv/lib/pgsql/9.1/data দাস: /var/lib/pgsql/9.1/data \
        - সর্বমোট পোস্টমাস্টার.পিড
pgsql -c "pg_stop_backup () নির্বাচন করুন;";

স্লেভ সার্ভারের সাথে ডাটাবেস সিঙ্ক করার পরে

আমি স্লেভ সার্ভারটি পুনরায় চালু করি এবং প্রারম্ভটি ব্যর্থ হয় না। Pgstartup.log পড়ে:

সাফল্য। আপনি এখন ব্যবহার করে ডাটাবেস সার্ভার শুরু করতে পারেন:

    /usr/pgsql-9.1/bin/postgres -D /var/lib/pgsql/9.1/data
অথবা
    /usr/pgsql/9.1/bin/pg_ctl -D /var/lib/pgsql/9.1/data -l লগফিল শুরু

বর্তমান দিনের লগ ফাইল, পোস্টগ্রেস্কল-থু.লগ, পড়ে:

লগ: বন্ধ হচ্ছে
লগ: ডাটাবেস সিস্টেম বন্ধ আছে
লগ: 2012-4-10-10 এ পুনরুদ্ধারে ডেটাবেস সিস্টেম বন্ধ ছিল
লগ: স্ট্যান্ডবাই মোডে প্রবেশ করা
লগ: সংরক্ষণাগার থেকে লগ ফাইল "লগফিলনাম" পুনরুদ্ধার করা হয়েছে
লগ: ধারাবাহিক পুনরুদ্ধার অবস্থা 0 / BF0000B0 এ পৌঁছেছে
লগ: পুনরায় 0 / BF000020 এ শুরু হয়
লগ: সংরক্ষণাগার থেকে লগ ফাইল "লগফিলনাম" পুনরুদ্ধার করা হয়েছে
লগ: অপ্রত্যাশিত পেজএডিআর 0/85000000 লগ ফাইল 0, বিভাগ 192, অফসেট 0
লগ: অপ্রত্যাশিত পেজএডিআর 0/85000000 লগ ফাইল 0, বিভাগ 192, অফসেট 0
লগ: স্ট্রিমিংয়ের প্রতিরূপ সফলভাবে প্রাথমিকের সাথে সংযুক্ত

আমি অপ্রত্যাশিত পেজএডিডিআর এবং পোস্টগ্রিস আর্কাইভগুলি থেকে গবেষণা করেছি, এটি আমার বোঝা যায় যে এটি বেশ স্বাভাবিক এবং ওয়াল-অব-ওয়াল সনাক্তকরণের প্রত্যাশিত উপায়গুলির মধ্যে একটি।

যেকোনো উপদেশ সাদরে গৃহীত হবে।

উত্তর:


11

"ডাটাবেস সিস্টেম শুরু হচ্ছে" বার্তাটি। একটি ত্রুটি নির্দেশ করে না। এটি FATAL পর্যায়ে থাকার কারণটি হ'ল এটি সেটিং নির্বিশেষে সর্বদা এটি লগতে সক্ষম করে তোলে log_min_messages:

http://www.postgresql.org/docs/9.1/interactive/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN

RSSync এর পরে, আপনি যা দেখিয়েছেন তা কি সত্যই চালিয়েছেন ?:

pgsql -c "pg_stop_backup () নির্বাচন করুন;";

যেহেতু আমি জানি, এখন পর্যন্ত কোনও pgsqlনির্বাহযোগ্য নয়, এটি ব্যাকআপটি অপূর্ণবিহিত ছেড়ে দেবে, এবং ক্রীতদাস কখনই পুনরুদ্ধার মোড থেকে বেরিয়ে আসবে না। অন্যদিকে, সম্ভবত আপনি সত্যিই দৌড়ে গেছেন psql, কারণ অন্যথায় আমি দেখছি না যে দাস কীভাবে এমন সাফল্যের বার্তাগুলি লগ করত:

লগ: ধারাবাহিক পুনরুদ্ধার অবস্থা 0 / BF0000B0 এ পৌঁছেছে

এবং:

লগ: স্ট্রিমিংয়ের প্রতিরূপ সফলভাবে প্রাথমিকের সাথে সংযুক্ত

আপনি কি এই মুহুর্তে দাসের সাথে সংযোগ স্থাপনের চেষ্টা করেছিলেন? কি হলো?

"সাফল্য। আপনি এখন শুরু করতে পারেন ..." বার্তাটি আপনি উল্লেখ করেছেন initdbযার দ্বারা উত্পন্ন হয়েছে , যা দাস স্থাপনের অংশ হিসাবে চালানো উচিত নয়; সুতরাং আমি মনে করি আপনি সেখানে কিছু সম্পর্কে বিভ্রান্ত হতে পারে। আমি আপাতদৃষ্টিতে এই বিরোধী বক্তব্যগুলি সম্পর্কেও উদ্বিগ্ন:

পোস্টগ্র্রেস পুনরায় আরম্ভ করার একমাত্র উপায় হ'ল সার্ভিস পোস্টগ্রেস্কএল -9.1 পুনরায় চালু করুন বা /etc/init.d/postgresql-9.1 পুনর্সূচনা কমান্ডগুলির মাধ্যমে। আমি এই ত্রুটিটি পাওয়ার পরে, আমি সমস্ত প্রক্রিয়া মেরে ফেলেছি এবং আবার ডাটাবেস পুনরায় আরম্ভ করার চেষ্টা করছি ...

আপনি কি পরিষেবা স্ক্রিপ্টের মাধ্যমে পরিষেবাটি বন্ধ করার চেষ্টা করেছিলেন? কি হলো? যদি আপনি আরও তথ্যের সাথে লাইনগুলি পূর্বনির্ধারিত করেন তবে এটি লগগুলি বুঝতে সহায়তা করতে পারে। আমরা ব্যাবহার করি:

log_line_prefix = '[%m] %p %q<%u %d %r> '

recovery.confস্ক্রিপ্ট বিজোড় দেখায়। আপনি কি মাস্টারের pg_xlog ডিরেক্টরি, স্লেভের সক্রিয় pg_xlog ডিরেক্টরি, বা একটি সংরক্ষণাগার ডিরেক্টরি থেকে অনুলিপি করছেন?


8

আমি 9.3-এ ছিলাম, 9.1-এ না ছাড়া আমারও এটির সাথে কিছু সমস্যা ছিল। যাইহোক, ফিক্সটি মোটামুটি তুচ্ছ হিসাবে প্রমাণিত:

postgresql.confফাইল তাদের মাস্টার ও স্লেভ থেকে কপি করা হচ্ছে, আর আমি এটা ক্রীতদাস উপর অপরিবর্তিত রেখে যায়নি। আমি ভেবেছিলাম আপনার যা যা করতে হবে তা হ'ল একটি recovery.confফাইল যুক্ত করুন এবং সমস্ত কিছু কাজ করবে (ভাল এটি হয়েছে তবে আমি প্রতিলিপি দাস সার্ভারে লগ ইন করতে পারিনি, তবে, এটি প্রতিলিপি করা হচ্ছে)।

আমি দাসের postgresql.confফাইলটি সম্পাদনা করেছি এবং:

  • মন্তব্য archive_mode=on
  • কমেন্ট আউট মন্তব্য archive; এবং
  • মন্তব্য সমূহ hot_standby=on

এটি এটি করেছে: আমি কেবলমাত্র পঠন প্রশ্নাবলী গ্রহণের জন্য প্রস্তুত একটি কেবল পঠন সার্ভার হিসাবে ডাটাবেস পেতে সক্ষম হয়েছি।

একটি স্ক্রিপ্ট বলা হয়েছে pg_basebackupযা দাসের জন্য বুটস্ট্র্যাপ ডিরেক্টরি তৈরি করবে। এটিতে ডাটাবেসের সাথে ডেটা ডিরেক্টরি। postgresql.confবর্ণিত হিসাবে দাস হিসাবে ব্যবহার করার আগে আপনার ফাইলটি পরিবর্তন করতে হবে, একটি পোস্ট pg_basebackupস্ক্রিপ্টের জন্য খুব সহজ কিছু pretty


1
আপনি যখন লেখেন "কমেন্ট আউট হট_স্ট্যান্ডবাই =" "আমি মনে করি আপনি বোঝাতে চাইছেন" হট_স্ট্যান্ডবাইকে সক্ষম করার আগে #-কমেন্ট-চিহ্নটি মুছে ফেলেছে ":) হট_স্ট্যান্ডবিতে না থাকলে, ডিবি সর্বদা ডিজাইনের মাধ্যমে" শুরু "হবে (এটি উষ্ণ স্ট্যান্ডবাই, ব্যর্থ ওভারের জন্য প্রস্তুত, তবে জিজ্ঞাসাবাদ নয়)। দ্রষ্টব্য, আপনি যদি মাস্টারের ওয়াল_লেভেল = হট_স্ট্যান্ডবি ছাড়াই বেস-ব্যাকআপ ডাম্প তৈরি করেন এবং তারপরে দাসের উপর হট_স্তানবি চালু করে থাকেন তবে আপনাকে হট_ স্ট্যান্ডবাইয়ের জন্য দৌড়ে ডিবি পুনরায় ডাম্প করতে হবে এবং চালাতে হবে। অন্যথায় আপনি কিছু মারাত্মক ত্রুটি পাবেন।
ফ্রেডেরিক স্ট্রাক-শোইনিং

হট_স্ট্যান্ডবি = অন প্রয়োজনীয়, এটি অবশ্যই সেখানে থাকবে
অভিলাষ মিশ্র

7

মজার বিষয় হল আমি পল যে বিপরীতভাবে এটি সমাধান করেছি।

আমি আরো বললাম:

hot_standby = on

অথবা, পরিবর্তে #hot_standby = offউপরের দিকে পরিবর্তিত হয়েছে। (এটি 9.5 ব্যবহার করছিল)


1

আমি লগ এ পেয়েছি:

MSK FATAL:  the database system is starting up

সার্ভারের অসীম সূচনাটি ঠিক করার জন্য এটি করুন: পরিষেবা বন্ধ করুন (যদি বিদ্যমান থাকে), প্রসারণ 'পোস্টগ্রিজ' (সাধারণত এটি উপস্থিত থাকে) kill এটি কনসোলে চালান:

pg_resetxlog.exe -D ../Data -f

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

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