ব্যর্থ রাজ্যে এইচডিডি ক্র্যাশ ফলাফলের পরে পোস্টগ্রিজ এসকিউএল সার্ভার শুরু করা


10

আমি Fedora 15সাথে ব্যবহার করছি PostgreSQL 9.1.4। ফেডোরা সম্প্রতি ক্র্যাশ হয়েছে যার পরে:

PostgreSQL সার্ভার শুরু করার একটি প্রচেষ্টা:

service postgresql-9.1 start

দেয়

Starting postgresql-9.1 (via systemctl):  Job failed. See system logs and 'systemctl status' for details.
                                                       [FAILED]

যদিও, আমি সিস্টেম পুনরায় বুট করার পরে প্রথমবার সার্ভারটি চালু করার পরে সার্ভারটি স্বাভাবিকভাবে শুরু হয়
তবে, ব্যবহারের একটি প্রচেষ্টা psqlএই ত্রুটিটি দেয়:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

.s.PGSQL.5432ফাইলটি সিস্টেমে কোথাও উপস্থিত নেই। একটি ফলাফল locate .s.PGSQL.5432কিছুই।


সিস্টেম লগে এটি রয়েছে:

Aug 14 17:31:58 localhost systemd[1]: postgresql-9.1.service: control process exited, code=exited status=1
Aug 14 17:31:58 localhost systemd[1]: Unit postgresql-9.1.service entered failed state.

একজন

systemctl status postgresql-9.1.service

দেয়

postgresql-9.1.service - SYSV: PostgreSQL database server.
          Loaded: loaded (/etc/rc.d/init.d/postgresql-9.1)
      Active: failed since Tue, 14 Aug 2012 17:31:58 +0530; 58s ago
     Process: 2811 ExecStop=/etc/rc.d/init.d/postgresql-9.1 stop (code=exited, status=1/FAILURE)
     Process: 12423 ExecStart=/etc/rc.d/init.d/postgresql-9.1 start (code=exited, status=1/FAILURE)
    Main PID: 2551 (code=exited, status=1/FAILURE)
      CGroup: name=systemd:/system/postgresql-9.1.service

আমি ফিনসিঙ্কের ডিফল্ট সেটিংটি পরিবর্তন করি নি তাই আমি অনুমান করছি, এটিতে সেট করা হয়েছিল on। আমি এইচডিডি তে আছি এইচডিডি ক্র্যাশ হয়েছে।

এইচডিডি ক্রাশ

এইচডিডি ক্রাশের ফলে fsckপ্রম্পটে একটি ম্যানুয়াল চালানো হয়েছিল এবং গুই ভিত্তিক নয়। এটি গাজিলিয়ন ইনোড ইত্যাদি মেরামত করে .. এর পরে আমি একটি Ctrl+ Alt+ দিয়ে সিস্টেমটি পুনরায় চালু করেছি Delete

পোস্টগ্র্যাস এসকিউএল এর লগ এ আছে:

LOG:  database system was interrupted; last known up at 2012-08-14 17:31:57 IST
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  record with zero length at 0/41A4E58
LOG:  redo is not required
FATAL:  could not access status of transaction 1
DETAIL:  Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG:  startup process (PID 13016) exited with exit code 1
LOG:  aborting startup due to startup process failure

হালনাগাদ

/var/lib/pgsqlডিরেক্টরিতে কোনও ফাইল সিস্টেমের স্তরের অনুলিপি নেওয়ার পরে সার্ভারটি শুরু করার চেষ্টা করা হচ্ছে ./pg_resetxlog -f /var/lib/pgsql/9.1/data/এবং ফলাফলটি দিয়ে চালানো xlog -f /var/lib/pgsql/9.1/data/এখনও এগুলিতে পাওয়া যায়:

LOG:  database system was interrupted; last known up at 2012-08-14 18:46:36 IST
LOG:  database system was not properly shut down; automatic recovery in progress
LOG:  record with zero length at 0/6000078
LOG:  redo is not required
FATAL:  could not access status of transaction 1
DETAIL:  Could not open file "pg_multixact/offsets/0000": No such file or directory.
LOG:  startup process (PID 13766) exited with exit code 1
LOG:  aborting startup due to startup process failure

আর পোস্টগ্রিসের লগ?
মাইলেন এ রাদেভ

@ MilenA.Radev আছে postgres 'লগ সঙ্গে প্রশ্ন .. আপডেট
ThinkingMonkey

pg_resetxlogকোনও ভাল করেনি, তাই আপনি মজাদার অঞ্চলে into ক্র্যাশ হওয়ার আগে থেকেই আপনার কাছে কি এই ডাটাবেসের ব্যাকআপ আছে?
ক্রেগ রিঞ্জার

@ ক্রেইগ্রিঞ্জার হ্যাঁ আমার একটি ব্যাক আপ আছে। আমি আসলে এই যাত্রা উপভোগ করছি।
থিংকিংমনেকি

টুইটারে আপনি ভাল ব্যাকআপ সহ কয়েকটি বেছে নিন :-)। সত্যিই, এটি সম্ভবত আপনার ডিবি মেরামতযোগ্য, তবে যেহেতু আপনার ফাইল সিস্টেমের দুর্নীতির কারণে গুরুত্বপূর্ণ ফাইলগুলি নষ্ট হয়ে গেছে আপনার সম্ভবত এমন কোনও ব্যক্তির প্রয়োজন হবে যিনি আপনার প্যাগের সাহসগুলি জানেন যে আপনার ডেটা বের করার জন্য কিছুটা সময় ব্যয় করতে পারে। পরিষেবাগুলি এখানে উপলভ্য: postgresql.org/support/professional_support। আপনি যদি pg_multixact/offsets/0000সেই পিজির জন্য কিছু ডামি কন্টেন্ট নিয়ে আসতে পারেন তবে ...
ক্রেগ রিঞ্জার

উত্তর:


15

আসল উত্তরটি পোস্টগ্রিসএসকিউএল লগগুলিতে থাকবে /var/lib/pgsql/data/pg_log

তবে, আপনি কোনও পদক্ষেপ নেওয়ার আগে: আপনার ডেটা কোনও মূল্যবান যদি আপনার কাছে মূল্যবান হয় তবে মেরামত করার চেষ্টা করার আগে আপনার ডাটাবেসের একটি ফাইল সিস্টেম স্তরের কপি নেওয়া আপনার পক্ষে গুরুত্বপূর্ণHttp://wiki.postgresql.org/wiki/ দুর্নীতি দেখুন । আপনাকে অবশ্যই পুরো ডেটা ডিরেক্টরিটি অনুলিপি করতে হবে। ফেডোরায় এটি /var/lib/pgsql/dataডিফল্টরূপে রয়েছে তবে এটি আপনার ইনস্টলের জন্য যাচাই করুন।

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

আপনি একবার আপনার ডেটা ডিরেক্টরির একটি সম্পূর্ণ ফাইল-সিস্টেম স্তর কপি তৈরি করার পরে, ক্ষতিগ্রস্ত লেনদেন লগগুলি সাফ করার জন্য এবং আপনার ডাটাবেস শুরু করার জন্য pg_resetxlog ব্যবহার করার চেষ্টা করুন । এটি শুরু হলেও এটি দুর্নীতিগ্রস্থ হওয়ার সম্ভাবনা খুব বেশি; আপনার pg_dumpতখন এটি পুনরায় ব্যবহার করা উচিত initdbএবং ডাম্পটিকে তাজা ইভেন্টে পুনরুদ্ধার করা উচিত ।

আপনি যদি এখনও এটির পরে শুরু করতে না পারেন pg_resetxlogতবে রিসেটল্লগের পরে স্টার্টআপ প্রয়াসের একটি আপডেট লগ পোস্ট করুন। এটি সম্ভব আপনার সাথে স্ট্যান্ড-অলোন মোডে পিজি শুরু করতে হবে:

sudo -u postgres postgres --single -D /var/lib/pgsql/data -P -f i postgres

যদি এটি কাজ করে, আপনাকে একটি backend>প্রম্পট দেয়, আপনি যে ডিবিতে সংযোগ করতে চান তার নামের সাথে সর্বশেষ "পোস্টগ্রিজ" প্রতিস্থাপনের পরে আবার চেষ্টা করুন। আপনি সক্ষম হতে হবে SELECT, COPYটেবিল থেকে ডেটা, ইত্যাদি।

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

আপনার ফাইল সিস্টেমটি সম্ভবত ক্ষতিগ্রস্থ হয়েছে

PostgreSQL ইনস্টলের ক্ষতির তীব্রতা থেকে বোঝা যায় যে আপনার পুরো ফাইল সিস্টেমটি সম্ভবত ক্ষতিগ্রস্থ হয়েছে। আপনি ব্যাকআপ থেকে পুরো সিস্টেমটি পুনরুদ্ধার করতে বা এটি পুনরায় ইনস্টল করার বিষয়টি বিবেচনা করতে পারেন।

আমি এই ফাইল সিস্টেমে বিশ্বাস করব না, fsckনা fsck

আপনার ড্রাইভকে স্মার্ট পরীক্ষা করুন

আমি সুপারিশও করি যে আপনি স্মার্টমনটোলগুলি SMARTদিয়ে আপনার হার্ড ড্রাইভে একটি চেক চালান smartctl; ধরে নিচ্ছি /dev/hdaযে এটি হবে smartctl -d ata -a /dev/sda | less। ব্যর্থ স্বাস্থ্য পরীক্ষার জন্য uncorrectable_sectors, একটি উচ্চ পঠিত ত্রুটির হার, 2 বা 3 এরও বেশি একটি রিলোকটেড_সেক্টর_কাউন্ট, বা একটি শূন্য-বর্তমান কারেন্ট_পেন্ডিং_সেক্টর দেখুন। smartctl -d ata -t long /dev/sdaআপনার এইচডিডি-তে একটি অ-ধ্বংসাত্মক স্ব-পরীক্ষা চালানোর জন্য চালান ; এটি সিস্টেমের স্বাভাবিক কার্যকারিতা ব্যাহত করবে না। যখন আনুমানিক সময়টি smartctl -d ata /dev/sdaআবার কেটে গেছে এবং স্বতঃপরীক্ষার লগটি দেখুন কিনা তা পেরিয়ে গেছে কিনা তা দেখতে।

কিছু নিখুঁত চেয়ে কম দেখায়, ড্রাইভ প্রতিস্থাপন।

ভবিষ্যতে, smartdড্রাইভ ব্যর্থতার প্রাথমিক সতর্কতার জন্য এই পরীক্ষাটি স্বয়ংক্রিয় করার কথা বিবেচনা করুন ।

(এই পোস্টের বিষয়বস্তু প্রশ্নের আপডেট দ্বারা অচল ছিল you're আপনি যদি একইরকম সমস্যার সমাধান করছেন তবে এই উত্তরটির সম্পাদনার ইতিহাস দেখুন)।


আমি পোস্টে পোস্টগ্রাসের লগ যুক্ত করেছি। আমি fsyncঅনুমান করছি এর ডিফল্ট সেটিংটি আমি পরিবর্তন করি নি , এটি সেট করা হয়েছিল on। আমি এইচডিডি তে আছি হ্যাঁ, এইচডিডি ক্রাশ হয়েছে। আমার ডিস্কের জায়গা শেষ হয়নি। কোনও মেমরির ত্রুটি / অতিরিক্ত তাপ / কেবল / কার্পানিকের উপরে ছাঁটা হয়নি।
থিংকিংমনকি

@ থিংকিংমনকি "এইচডিডি ক্র্যাশ" কেমন? নতুন ড্রাইভে ফাইলগুলি অনুলিপি করতে আপনার কি হার্ড ড্রাইভে ডেটা রিকভারি করতে হয়েছিল? আপনার কি চালাতে হবে fsckএবং ফাইল সিস্টেমের মেরামত করতে হবে? বিস্তারিত, দয়া করে। আপনার ক্রাশের গল্পটি লিখুন।
ক্রেগ রিঞ্জার

এইচডিডি ক্রাশের ফলে একটি ম্যানুয়াল চালানো fsckহয়েছিল। এটি গাজিলিয়ন ইনোড ইত্যাদি মেরামত করে .. যার পরে সিস্টেমটি আবার শুরু হয়েছিল। প্রশ্নে উপরোক্ত আপডেটও করেছেন।
থিংকিং

@ থিংকিংমনকি ঠিক আছে, উত্তর আপডেট হয়েছে। টিএল; ডিআর: তারপরে চালানো / var / lib / pgsql এর সম্পূর্ণ ফাইল সিস্টেম স্তরের অনুলিপি তৈরি করুনpg_resetxlog
ক্রেগ

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