আংশিকভাবে নির্মিত এবং বিদ্যুৎ বিভ্রাট দ্বারা সমাপ্ত হওয়া একটি সূচক দ্বারা নেওয়া স্থানটিকে কীভাবে দাবি করতে হবে


9

আমি ম্যাক (10.10.4) এ পোস্টগ্র্রেস (পোস্টগ্রিস) 9.4.2 চালাচ্ছি।

আমি কয়েকটি বড় টেবিল পেয়েছি (বেশ কয়েকটি টিবি)।

প্রায় এক সপ্তাহ সময় লাগে তাদের মধ্যে একটিতে একটি সূচক তৈরির সময়, আমি উপলব্ধ এইচডি স্পেস ড্রপটি দেখেছি যখন আপনি যখন প্রায় কোনও পয়েন্টে প্রত্যাশা করতে চান যে কোনও সময় ব্যাটারি ইউনিট এবং সিস্টেমের চেয়ে বিদ্যুৎ বিভ্রাট দীর্ঘস্থায়ী হয় তবে সূচকটি সমাপ্ত হবে you' নিচে গেল. আমি বাফার বন্ধ করে দিয়েছিলাম, এবং fillfactor=100নির্মাণের সময় থেকে এটি একটি স্ট্যাটিক ডেটাসোর্স। পুনরায় বুট করার সময়, ড্রাইভে থাকা উপলভ্য স্থানটি ঠিক যেখানে সূচি নির্মানের শেষের দিকে ছিল। ভ্যাকুয়াম বিশ্লেষণ স্থান খালি করে না।

আমি টেবিলটি ফেলে দিয়ে পুনরায় ইনজেস্টিং করার চেষ্টা করেছি, এবং এটি স্থানটি ছাড়েনি। এখন আমি এমন এক জায়গায় রয়েছি যেখানে আমার সূচক তৈরির পর্যাপ্ত জায়গা নেই।

বিদ্যুৎ বিভ্রাটের সময় যন্ত্রটি যেভাবে নামিয়েছিল সে কারণে সূচী বিল্ডের সময় উত্পন্ন ফাইলগুলি কি এমন কোনও লম্বায় আটকে আছে যেখানে সেগুলি সিস্টেম দ্বারা মুছে ফেলা যায় না?

আমি যখন ডিবিতে টেবিলের আকার + সূচকগুলি দেখি (যা সেই ড্রাইভের একমাত্র ডেটা) তারা প্রায় 6 টিবি পর্যন্ত যুক্ত করে । ড্রাইভটি 8 টিবি , এবং ড্রাইভে 500 গিগাবাইটেরও কম অবশিষ্ট রয়েছে, সুতরাং মনে হচ্ছে কোথাও প্রায় 1.5TB হারিয়ে গেছে যা সূচকের আকারটি প্রায় হত।

কোন ধারনা?


সূচকটি কি এখনও এই জাতীয় প্রশ্নের সাথে তালিকাভুক্ত? SELECT r.relname, r.relkind, n.nspname FROM pg_class r INNER JOIN pg_namespace n ON r.relnamespace = n.oid WHERE relkind = 'i';
ক্যাসানড্রি

না, এটি এই ক্যোয়ারির ফলাফলগুলিতে প্রদর্শিত হবে না।
ডিসিচেল

1
তালিকায় এমন কিছু আছে SELECT indexrelid::regclass, indrelid::regclass FROM pg_catalog.pg_index WHERE NOT indisvalid;যা আপনাকে দেয়?
dezso

নাহ, খালি আসে।
ডিসিচেল

উত্তর:


5

সাধারণত আমরা আশা করতাম যে পোস্টগ্রিজ পুনরায় চালু করা হলে ক্র্যাশ পুনরুদ্ধার প্রক্রিয়াটি ডাটা ডিরেক্টরি থেকে রোলব্যাক'এড সূচী সম্পর্কিত ফাইলগুলি সরিয়ে ফেলত।

আসুন ধরে নেওয়া যাক এটি কার্যকর হয়নি বা কমপক্ষে এটি ম্যানুয়ালি পরীক্ষা করতে হবে।

ড্যাটাডিরের মধ্যে থাকা ফাইলগুলির তালিকা এই জাতীয় একটি কোয়েরির সাথে প্রতিষ্ঠিত হতে পারে:

select pg_relation_filenode(oid)
   from pg_class
  where relkind in ('i','r','t','S','m')
    and reltablespace=0
  order by 1;

reltablespace=0এটি ডিফল্ট টেবিল স্পেসের জন্য। যদি সমস্যাযুক্ত সূচকটি একটি অ-ডিফল্ট টেবিল স্পেসে তৈরি করা হয় তবে এটি 0অবশ্যই এর OID এর মাধ্যমে প্রতিস্থাপন করতে হবে pg_tablespace

আমি, আর, টি, এস, মি relkindযথাক্রমে সূচক, টেবিল, টোস্ট স্পেস, সিকোয়েন্স, বস্তুগত দৃশ্যের সাথে সামঞ্জস্য করি। এই সমস্ত বস্তুর ফাইলগুলিতে তাদের ডেটা রয়েছে যাদের নাম মেলে pg_relation_filenode(oid)

ডিস্কে, ডাটা ফাইল থেকে কম হয়, $PGDATA/base/oid/যেখানে oidহয় oidডেটাবেসের দ্বারা প্রাপ্ত select oid,datname from pg_database। আমরা যদি ডিফল্ট টেবিল স্পেসের কথা না বলি baseতবে পরিবর্তে প্রতিস্থাপন করা PG_version_somelabelহয়।

সেই ডিরেক্টরিতে পুনরায় ফাইলগুলির সাথে মেলে ফাইলগুলি তালিকাবদ্ধ এবং সাজান:

ls | grep -E '^[0-9]+$' | sort -n > /tmp/list-of-relations.txt

(এটি আসলে 1Gb এর চেয়ে বড় সম্পর্কের জন্য কেবলমাত্র প্রথম বিভাগটিকে রাখে there যদি কোনও স্থানে দীর্ঘকালীন বিভাগগুলি সংযুক্ত না থাকে তবে সেগুলি পৃথকভাবে বিবেচনা করা উচিত)

এবং উপরের ক্যোয়ারির ফলাফলের সাথে ফাইলটি পৃথক করুন।

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


অসাধারণ! আমি দাতাদিরে 1 টি ফাইল পেয়েছি যা নির্বাচনী তালিকায় প্রদর্শিত হয়নি। আমি কি সেই ফাইলটি নিরাপদে সরাতে পারি?
ডিসিচেল

প্রকৃতপক্ষে এটি বিন্দুর পরে পুনরাবৃত্তির সাথে প্রায় 800 টি ফাইলের সাথে মিলে যায় - সবগুলি 499807.484 এর মতো? আমি কি এই ফাইলগুলি নিরাপদে সরাতে পারি?
ডিসিচেল

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

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

ঠিক এমনটি অনুসরণ করা হয়েছে যাতে অন্যরা যারা একই দুরবস্থার মধ্যে থাকে তারা আত্মবিশ্বাসের সাথে @ ড্যানিয়েলভাইরাইটের সমাধানটি ব্যবহার করতে পারে। তাঁর সমাধানটি সত্যই আমার পক্ষে নিখুঁতভাবে কাজ করেছিল।
ডিসিচেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.