আমি দুর্ঘটনাক্রমে সমস্ত টেবিল বাদ দিলাম। আমি কি আবার ফিরিয়ে আনতে পারি? আমার কাছে ব্যাকআপ কপি নেই।
আমি দুর্ঘটনাক্রমে সমস্ত টেবিল বাদ দিলাম। আমি কি আবার ফিরিয়ে আনতে পারি? আমার কাছে ব্যাকআপ কপি নেই।
উত্তর:
আপনার যদি আক্ষরিকভাবে কোনও ব্যাকআপ না থাকে তবে আমি 99% নিশ্চিত যে আপনার ভাগ্যের বাইরে।
যদি আপনার কাছে কোনও প্রকারের ব্যাকআপ থাকে তবে তা পুরানো তবে আপনার কি বাইনারি লগইনটি মাইএসকিউএল কনফিগারেশন ফাইলে (my.ini) লগ-বিন বিকল্পের মাধ্যমে চালু হয়েছে? যদি তা হয় তবে আপনি শেষ ব্যাকআপ থেকে পুনরুদ্ধার করতে পারবেন।
খারাপ উপায় এক সপ্তাহের শুরু করার জন্য বন্ধু, দুঃখিত।
প্রশ্নটি বরং পুরানো, তবে কোনও একক ইতিবাচক উত্তর নেই, তাই আমি একটি যুক্ত করব।
মাইএসকিউএল একটি টেবিল ড্রপ করার পরে ডেটা কিছুক্ষণের জন্য মিডিয়াতে থাকে। সুতরাং আপনি রেকর্ডগুলি আনতে এবং একটি সারণী পুনর্নির্মাণ করতে পারেন। পরে আমি এটি সম্পর্কে ব্লগ করব, তবে আপাতত দ্রুত স্কেচ।
আপনার আপনার টেবিলের কাঠামো তৈরি করতে হবে (টেবিল তৈরি করুন)।
যদি ইনোডোবি_ফায়াল_পার_সামগ্রীটি চালিত টেবিলটি চালু থাকে তবে ডিস্ক বিভাজনে রয়েছে। মাইএসকিউএল বন্ধ করুন এবং এটিকে কেবল পঠনযোগ্য হিসাবে পুনরায় মাউন্ট করুন। মাইএসকিউএল যদি কোনও মূল বিভাজনে থাকে (তবে এটি বিটিডব্লিউটি ভাল নয়) তবে একটি চিত্র নিন বা ডিস্কটি বের করে অন্য সার্ভারে প্লাগ করুন। অন্য কথায় সমস্ত লেখা বন্ধ করুন।
যদি ইনোডোবি_ফাইলে_পার_সামগ্রী বন্ধ থাকে তবে কেবল মাইএসকিউএল বন্ধ করুন।
তারপরে https://github.com/twindb/undrop-for-innodb/ থেকে InnoDB এর জন্য আন-ড্রপ সরঞ্জামটি ডাউনলোড এবং সংকলন করুন । "চেক সংকলন TwinDB পুনরুদ্ধারের টুলকিট বিস্তারিত জানার জন্য" পোস্ট।
তারপরে স্ট্রিম_ পার্সারের সাহায্যে ডিস্ক পার্টিশন বা আইবডাটা 1 (ইনোডাব_ফিল_পিটার_সামগ্রী নির্ধারণের উপর নির্ভর করে) পার্স করুন:
./stream_parser -f /path/to/diskimage_or_ibdata1
তারপরে ইনডোনডিবির অভিধানটি পুনরুদ্ধার করুন সূচিত টেবিলটি কোন সূচক_তে ছিল।
তারপরে টেবিলের কাঠামোটি নিন এবং রেকর্ডগুলি আনুন
./c_parser -f pages-diskimage_or_ibdata1/FIL_PAGE_INDEX/00000<index_id>.page
এটি স্ট্যান্ডআউটে রেকর্ডগুলি আউটপুট এবং স্ট্রডারকে লোড ডেটা কমান্ড দেবে।
আমি যা করেছি তা এখানে। মাইএসকিএল ডিরেক্টরিতে (উবুন্টুর জন্য এটি হ'ল / ভার / লিবি / মাইএসকিএল, ম্যাকের জন্য হোমব্রিউ ব্যবহার করা এটি হ'ল / ইউএসআর / লোকাল / ভার / মাইএসকিএল), আমি কিছু ফাইল খুঁজে পেয়েছি। প্রথমে আমি আমার স্থানীয় মাইএসকিএল ডিরেক্টরিতে বিশেষ স্কিমাযুক্ত মাইএপ_ডিভেলপমেন্ট / ডিরেক্টরিটি অনুলিপি করেছিলাম। তারপরে আমি আমার স্থানীয় আইবডটা 1 ব্যাক আপ করেছি এবং সার্ভারের আইবডিটা 1 মাইএসকিএল ডিরেক্টরিতে অনুলিপি করেছি। নিহত মাইএসকিএলড ( ps aux
পিআইডি সন্ধান করার জন্য kill PID
)। পুনরায় আরম্ভ করা মাইএসকিএল, এটি ক্রাশ পুনরুদ্ধার মোডে শুরু হয়েছিল। তারপরে আমার স্থানীয় মাইএসকিএল ক্লায়েন্টকে বহিস্কার করে এবং আমার প্রয়োজনীয় টেবিলগুলির একটি সম্পূর্ণ ডাম্প তৈরি করে।
এবং, 15,000 সারি মেটাডাটা প্রবেশের সপ্তাহের কাজের প্রতিনিধিত্ব করে যা আমরা ভেবেছিলাম চিরকালের জন্য চলে গেছে, সংরক্ষণ করা হয়েছে !!
আশা করি এটি কাউকে সাহায্য করবে।
দুর্ভাগ্যক্রমে আপনি খুব সামান্য কিছু করতে পারেন, একটি ভাল ব্যাকআপ পরিকল্পনার প্রয়োজনীয়তা সম্পর্কে খুব মূল্যবান পাঠ গ্রহণ করা ছাড়া।
টেবিলের ধরণের উপর নির্ভর করে আপনি এমন একজন বিশেষজ্ঞকে খুঁজে পেতে সক্ষম হতে পারেন যিনি ডিস্কে যা রেখেছিলেন তা থেকে ডেটা আবার টুকরো টুকরো করে ফেলতে পারেন তবে এই জাতীয় ফরেনসিক বিশ্লেষণ খুব ব্যয়বহুল হবে (যেহেতু এটি তুলনামূলকভাবে অস্বাভাবিক দক্ষতার প্রয়োজন হবে) এবং কোনও গ্যারান্টিযুক্ত নয় সত্যিই দরকারী হতে।
যদি এটি মাইআইএসএএম টেবিল হয় তবে আপনার কেবলমাত্র / var / লগ / মাইএসকিএল টেবিল ফাইলগুলি মুছে ফেলতে হবে বা আপনার ডেটা ডিয়ার যা-ই হোক না কেন। আপনি উদাহরণস্বরূপ ext3grep ইউটিলিটি ব্যবহার করতে পারেন ।
আপনি "পূর্বাবস্থাপন" করতে পারবেন না DROP TABLE
।
আপনি দেখতে এবং দেখতে পারেন যে মাইএসকিউএলটিতে বাইনারি লগিং সক্ষম ছিল কিনা , সম্ভবত আপনি সেখান থেকে কিছু ডেটা বের করতে পারেন।
তা ছাড়া, আপনি মাইএসকিউএল সম্পর্কে ভুলে যেতে পারেন এবং একই ধরণের সমস্যার মধ্যে রয়েছেন "আমি ঘটনাক্রমে আমার ফাইল সিস্টেম থেকে কিছু ফাইল মুছলাম"। কিছু সরঞ্জাম আছে যা ফাইলগুলি পুনরুদ্ধার করার চেষ্টা করে এবং এমন কিছু সংস্থাগুলিও রয়েছে যা পেশাদার ভিত্তিতে এটি করে।
আপনার যদি বাইনারি লগিং চালু থাকে তবে আপনার স্কিমা থাকলে প্রথমে একটি টেবিলটি পুনরায় তৈরি করতে পারেন। আপনি বাইনলগগুলি বন্ধ করার সময় আপনি স্কিমা তৈরি করেছেন তা নিশ্চিত করুন। অথবা আপনি সেশনটি এড়িয়ে যেতে পারেন। তারপরে আপনি সর্বশেষ বিবৃতি পর্যন্ত বাইনলগগুলি পুনরায় খেলতে পারেন যা ড্রপ টেবিল নিজেই ছিল।
যদি না হয় তবে আপনার যদি কিছু থাকে তবে আপনি ব্যাকআপ ডাম্প ব্যবহার করে পুনঃস্থাপন করতে পারেন। আপনার যদি সিএসভি ফাইল থাকে তবে ডেটা পুনরুদ্ধার করতে আপনি লোড ডেটা ইনফিল পদ্ধতি করতে পারেন। আপনি যদি মাইএসকিলডাম্প থেকে পুনরুদ্ধার করে থাকেন তবে আপনি সম্পূর্ণ ডাটাবেস পুনরুদ্ধার করার পরিবর্তে ডাম্প ফাইল থেকে একটি টেবিল পুনঃস্থাপনের বিষয়টি বিবেচনা করতে পারেন। যদি ডেটার আকার খুব বেশি হয় তবে আপনি লোড করার আগে কীগুলি অক্ষম করার বিষয়টি বিবেচনা করতে পারেন এটি পুনরুদ্ধার প্রক্রিয়াটি উল্লেখযোগ্যভাবে বৃদ্ধি করবে।
ভবিষ্যতের জন্য আপনি পিছনে দাসের মতো 10-24 ঘন্টা পিছনে থাকতে পছন্দ করতে পারেন। পারকোনা টুলকিট (পিটি-স্লেভ-বিলম্ব) ব্যবহার করে আপনি বিলম্বিত গোলাম তৈরি করতে পারেন