আইবিড ফাইলগুলি থেকে আইবিডিটা 1 ছাড়াই ডেটা ফোল্ডার থেকে মাইএসকিউএল ডাটাবেস পুনরুদ্ধার করুন


15

আমার ডাব্লুএএমএপি ডিরেক্টরিটি অন্য কোনও ব্যবহারকারী দ্বারা দুর্ঘটনাক্রমে মুছে ফেলা হবে। শুধুমাত্র মাইএসকিউএলএর ডেটা ফোল্ডার উপলব্ধ। এবং, কেবলমাত্র ডাটাবেস-ফোল্ডারগুলিতে ("\ bin \ mysql \ mysql5.6.12 \ data \" ডাটাবেসের নাম সহ ফোল্ডার) উপলব্ধ। " D bin \ mysql \ mysql5.6.12 \ ডেটা।" এর মূলের " ibdata1 " সহ সমস্ত ফাইলও মুছে ফেলা হয়েছে।

ডাটাবেস ফোল্ডারে কেবল নীচে এক্সটেনশানযুক্ত ফাইল থাকে।

* .ফর্ম, * .আইবিডি

এবং "db.opt" ফাইল।

কীভাবে ডাটাবেসগুলি পুনরুদ্ধার করা যায়?

আমি ইতিমধ্যে বিডাটা 1 পুনরুদ্ধার করার চেষ্টা করেছি। কিন্তু, এটি ফিরে পেতে অক্ষম। এবং কিছু ডাটাবেসে মাইআইএসএএমও রয়েছে।

উত্তর:


16

MyISAM

মাইআইএসএএম টেবিলের জন্য mydb.mytable, আপনার কাছে তিনটি ফাইল থাকা উচিত

  • \bin\mysql\mysql5.6.12\data\mydb\mytable.frm
  • \bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
  • \bin\mysql\mysql5.6.12\data\mydb\mytable.MYI

এগুলি ইতিমধ্যে একটি টেবিল হিসাবে অ্যাক্সেসযোগ্য হওয়া উচিত যেহেতু প্রতিটি ফাইলে প্রয়োজনীয় ডেটা, মেটাডেটা এবং সূচি তথ্য থাকে। সম্মিলিতভাবে, তারা টেবিল গঠন। অ্যাক্সেসের জন্য কোনও বাহ্যিক স্টোরেজ ইঞ্জিন মেকাহ্নিজ নেই।

InnoDB

InnoDB এর এই চিত্রের উপস্থাপনাটি একবার দেখুন

InnoDB আর্কিটেকচার

আইবডটা 1 .ibdফাইলগুলিতে সংযুক্ত করার একমাত্র বিষয় হ'ল ডেটা ডিকশনারি।

আপনার মিশন, আপনি এটি গ্রহণ করার সিদ্ধান্ত নেওয়া উচিত, প্রতিটি টেবিল তৈরি এবং এর মধ্যে অদলবদল হয় .ibd

আপনি কিছু করার আগে, "to bin \ mysql \ mysql5.6.12 \ ডেটা" এর একটি সম্পূর্ণ অনুলিপি অন্যকে করুন

এখানে একটি নমুনা

ধরুন আপনার mydbটেবিল সহ একটি ডাটাবেস আছে mytable। এর অর্থ

  • আপনার ফোল্ডারটি আছে \bin\mysql\mysql5.6.12\data\mydb
  • সেই ফোল্ডারের ভিতরে আপনার কাছে আছে
    • mytable.frm
    • mytable.ibd

আপনি প্রয়োজন .frm। আপনি যদি আমার পোস্টটি দেখুন তবে কীভাবে কেবল .frm ফাইলটি থেকে টেবিল স্কিমা বের করা যায়? , আপনি একটি মাইএসকিউএল ইউটিলিটি ডাউনলোড করতে পারেন যা সারণী তৈরি করতে প্রয়োজনীয় এসকিউএল তৈরি করতে পারে।

আপনার এখন নিম্নলিখিতটি করা উচিত

  • সরান mytable.ibdকরতে\bin\mysql\mysql5.6.12\data
  • InnoDB টেবিল তৈরি করতে এসকিউএল চালান
  • Mysql এ লগইন করুন এবং রান করুন ALTER TABLE mydb.mytable DISCARD TABLESPACE;(এটি মুছে ফেলা হবে \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd)
  • অনুলিপি \bin\mysql\mysql5.6.12\data\mytable.ibdমধ্যে\bin\mysql\mysql5.6.12\data\mydb
  • Mysql এ লগইন করুন এবং রান করুন ALTER TABLE mydb.mytable IMPORT TABLESPACE;(এটি \bin\mysql\mysql5.6.12\data\mydb\mytable.ibdডেটা অভিধানে নিবন্ধিত হবে )

এর পরে, টেবিলটি mydb.mytableসম্পূর্ণ অ্যাক্সেসযোগ্য হওয়া উচিত। আপনি কেবল চালিয়ে এই অ্যাক্সেসযোগ্যতা পরীক্ষা করতে পারেন:

SELECT * FROM mydb.mytable LIMIT 10;

একবার চেষ্টা করে দেখো !!!

DRINK (ডেটা রিকভারি প্রয়োজনীয় জ্ঞান অন্তর্ভুক্ত) দায়বদ্ধভাবে


এই দুর্দান্ত উত্তরটি সম্পূর্ণ করতে, ইনোনডাবের জন্য আপনাকে এমন কোনও এফকে বাধাকে সরিয়ে ফেলতে হবে যা টেবিলটির টেবিল স্পেসটি ফেলে দেওয়ার আগে উল্লেখ করে। আমদানির পরে, আপনার এফকে পুনরায় তৈরি করা উচিত।
সেবাগ্রা

টেবিল স্পেস আমদানির পরে information_schema.key_column_usage(সম্ভবত অন্যান্য টেবিলগুলিও) প্রথমে কোনও ডেটা ফেরত দেবে না selectযাতে আপনাকে কমপক্ষে একটি ক্যোয়ারী চালাতে হবে এবং পরবর্তী ক্যোয়ারিটি কাজ করার আগে কয়েক সেকেন্ড অপেক্ষা করতে হবে। (mysql Ver 14.14 ডিস্ট্রিবিউট 5.7.19, লিনাক্স-গ্লিবসি 2.12 এর জন্য (x86_64) এডিটলাইন র‌্যাপার ব্যবহার করে)
ব্যবহারকার 3338098
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.