শারীরিক ফাইলগুলি থেকে মাইএসকিউএল ডাটাবেস পুনরুদ্ধার করা হচ্ছে


139

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

ক্লায়েন্ট.ফরম
ক্লায়েন্ট।এমওয়াইডি
ক্লায়েন্ট।এমওয়াইআই

তবে প্রায় 20 টি টেবিলের জন্য।

আমি সাধারণত 1 এসকিউএল ফাইলটিতে সবকিছু পেতে মাইএসকিএলডাম্প বা একটি অনুরূপ সরঞ্জাম ব্যবহার করি তাই এই ধরণের ফাইলগুলি মোকাবেলা করার উপায় কী?


আমার একই সমস্যা রয়েছে: এক্সটেনশানগুলির সাথে এফআরএম, এমওয়াইডি এবং এমওয়াইআই একাধিক ফাইল। আমার কাছে আইবি_লগফিল 0, ইব_লগফিল 1 এবং ইবদাটা 1 ফাইল রয়েছে। আমি কোনও চলমান সার্ভার অ্যাক্সেস করতে বা ডাম্প তৈরি করতে পারি না। আমি একটি নতুন মাইএসকিউএল সার্ভার চালানোর চেষ্টা করেছি এবং ফাইলগুলি ব্যবহার করেছি, তবে আমি সফল হইনি ... কারও কীভাবে পরিষ্কার আছে?
flo5783

উত্তর:


132

একটি মাইএসকিউএল মাইআইএসএএম টেবিলটি তিনটি ফাইলের সংমিশ্রণ:

  • এফআরএম ফাইলটি সারণি সংজ্ঞা।
  • এমওয়াইডি ফাইলটি যেখানে আসল ডেটা সংরক্ষণ করা হয়।
  • এমওয়াইআই ফাইলটি যেখানে টেবিলে তৈরি সূচিগুলি সংরক্ষণ করা হয়।

আপনার ডাটাবেস ফোল্ডারে তাদের অনুলিপি করে পুনরুদ্ধার করতে সক্ষম হওয়া উচিত (লিনাক্সে, ডিফল্ট অবস্থানটি হয় /var/lib/mysql/)

সার্ভার চলমান না থাকলে আপনার এটি করা উচিত।


64
এটি কেবল মাইআইএসএএম টেবিলের ক্ষেত্রেই সত্য। InnoDB তার সারণী এবং সূচীগুলি একটি একক টেবিল স্পেস * এ সঞ্চয় করে, যা ডিফল্টরূপে 3 ফাইল আইবডাটা 1, আইব_লগফাইল 0 এবং আইবি_লগফাইল 1 থাকে। একটি ডাটাবেস পুনরুদ্ধার করার জন্য, আপনার সেই ফাইলগুলিও দরকার। * প্রতি টেবিলের টেবিল স্পেসগুলি সম্ভব তবে ডিফল্ট নয়
কুড়াল।

21
সে বলেছে তার কাছে .frm .myi এবং .myd ফাইল আছে। আমি তখন ধরে নিয়েছিলাম এটি মাইআইএসএএম টেবিল।
ভিনসেন্ট

5
মূল্যবান উত্তর, তবে জিনিসগুলি ভাল কাজ করার জন্য আমাকে আরও এক ধাপ এগিয়ে যেতে হয়েছিল: যেহেতু ফাইলগুলি পুনরুদ্ধার করতে আমাকে রুট হিসাবে লগ ইন করতে হয়েছিল, mysqlতাই mysqldপ্রক্রিয়াটি চালিত ব্যবহারকারী তাদের অ্যাক্সেস করতে পারেনি। একটি এরকম chmod -R mysql:mysql .মাইএসকিউএল ডেটা ডিরেক্টরিতে উপর দ্রুত এবং সহজ, কিন্তু figuring আউট, যে আগে, কেন আমার resoterd DBS করলো কোনো টেবিল আরেকটু বেশি গ্রহণ করেন।
এডুরন পাসকুল

10
হেরেনভার্ডো আমার মনে হয় আপনি ছোড না ছাঁটাই বোঝাচ্ছেন
অলিভার এম গ্রেচ

2
কিছু গুরুত্বপূর্ণ নোট chownsudo chown -R mysql:mysql /var/lib/mysql
পুনরুদ্ধার

50

@ ভিসেন্টের উত্তর থেকে, আমি ইতিমধ্যে নীচের মত মাইএসকিউএল ডাটাবেস পুনরুদ্ধার করেছি:

পদক্ষেপ 1. বন্ধ মাইকিউএল সার্ভার

পদক্ষেপ 2. আপনার ডাটাবেস ফোল্ডারে ডাটাবেস অনুলিপি করুন (লিনাক্সে, ডিফল্ট অবস্থানটি / var / lib / mysql)। ডাটাবেসের একই নাম এবং মাইএসকিএল মোডে ডাটাবেসের একই নাম রাখুন।

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

পদক্ষেপ 3: নিজস্ব পরিবর্তন করুন এবং ফোল্ডারটি মোড পরিবর্তন করুন:

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

পদক্ষেপ 4: আপনার ডাটাবেস ফোল্ডারে আইবডাটা 1 অনুলিপি করুন

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

পদক্ষেপ 5: আপনার ডাটাবেস ফোল্ডারে ib_logfile0 এবং ib_logfile1 ফাইলগুলি অনুলিপি করুন।

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

নিজের ফাইল পরিবর্তন করুন এবং সেই ফাইলগুলির মূল পরিবর্তন করুন:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

অথবা

sudo chown -R mysql:mysql /var/lib/mysql

পদক্ষেপ ((ptionচ্ছিক): আমার সাইটে ফাইলগুলি একটি নির্দিষ্ট স্থানে সংরক্ষণের জন্য কনফিগারেশন রয়েছে, তারপরে আমি সেগুলি যথাযথভাবে সম্পর্কিত স্থানে অনুলিপি করি।

পদক্ষেপ:: আপনার মাইএসকিএল সার্ভারটি শুরু করুন। সবকিছু ফিরে এসে উপভোগ করুন।

হ্যাঁ, ওটাই.

আরও তথ্য এখানে দেখুন: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/


4
পদক্ষেপ নির্দেশের বিশদ ধাপের জন্য +1। তবে তাদের কী হওয়া উচিত তা সত্যই প্রতিফলিত করার জন্য আমি কয়েকটি বিবৃতি সম্পাদনা করেছি।
পিটার

একটি # 1932 ত্রুটি পেয়েছে, ডেটা অ্যাক্সেস করতে অক্ষম। ডাটাবেসগুলি উপস্থিত হয়, তবে ডেটা অ্যাক্সেসযোগ্য নয়। ম্যাক ওএস এক্স মোজাভেতে এক্সএএমপিপি 7.2.12 চলছে।
স্টিভ 1754 এ

@ স্টিভ ১75৫৪ এ ত্রুটিটি অনেক কারণ হতে পারে 1.. আপনি কি ম্যাক ওএস থেকে ম্যাক ওএসে কোনও ডাটাবেস স্থানান্তর করেন? ২. দয়া করে এই ফাইলগুলি / ডেটা / টেবিলের অনুমতি পরীক্ষা করুন
বায়োলিনহ

উত্তর: 1. হ্যাঁ; 2. আমি করেছি। আমাকে আমার ডিবি সম্পূর্ণরূপে পুনর্নির্মাণের কাজ করতে হয়েছিল। কোনও সমাধান বের করতে পারেনি। গল্পের নৈতিক: সর্বদা ডিবি-র একটি ব্যাকআপ তৈরি করুন। আমি আশা করি এক্সএএমপিপি-তে স্বয়ংক্রিয়ভাবে এটি করার সহজ উপায় ছিল।
স্টিভ1754 এ

1
আপনি আমার জীবন
বাঁচালেন

8

যদি আপনি ফোল্ডারটি পুনরুদ্ধার করে থাকেন তবে ফাইলগুলি মাইএসকিএল: মাইএসকিএল-তে ছড়িয়ে দিতে ভুলবেন না

chown -R mysql:mysql /var/lib/mysql-data

অন্যথায় একটি ডাটাবেস ফেলে দেওয়ার বা নতুন কলাম ইত্যাদি যুক্ত করার সময় আপনি ত্রুটিগুলি পেয়ে যাবেন ..

এবং মাইএসকিউএল পুনরায় চালু করুন

service mysql restart

2
এটি আসলে প্রশ্নের উত্তর নয় তবে এটি খুব সহায়ক ছিল।
রায়টাক

আসলে আপনার সমস্ত কিছু মাইএসকিএল-তে ছুঁড়ে ফেলা উচিত নয়, মাইএসকিএল ডাটাবেস ফোল্ডারে রুট গ্রুপটি রাখা উচিত
গালভানি ২

8

আমার একই সমস্যা রয়েছে তবে উপরের নির্দেশাবলীর ভিত্তিতে ডাটাবেসটি সফলভাবে পুনরুদ্ধার করতে সক্ষম হইনি।

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

* দ্রষ্টব্য আমার উইন্ডোয় চলমান একটি ডাটাবেস সার্ভার রয়েছে এবং উদ্ধারকৃত ফাইলগুলি থেকে পুনরুদ্ধার করার জন্য আমার কেবল কয়েকটি ডাটাবেস ফাইলের প্রয়োজন। উবুন্টু ওএস থেকে ডাটাবেস ফাইলগুলি সাফল্যের সাথে পুনরুদ্ধার করতে আমার সেই পুরানো ডাটাবেস সার্ভারের সমস্ত কিছুর পুনরুদ্ধার করার জন্য আমার তাজাতে মাইএসকিএল ডাটাবেস সার্ভার (আমার উইন OS ওএসে উবুন্টু ওএস থেকে একই সংস্করণ) ইনস্টল করতে হবে।

  1. পুনরুদ্ধার করা ফাইলগুলি থেকে অন্য নতুন মাইএসকিএল ডাটাবেস সার্ভারের একই সংস্করণ তৈরি করুন।

  2. মাইএসকিএল সার্ভারটি বন্ধ করুন

  3. পুনরুদ্ধার করা ফোল্ডারটি অনুলিপি করুন এবং (সি: \ প্রোগ্রামডাটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.5 \ ডেটা) মাইএসকিএল ডাটাবেস সংরক্ষণ করা আছে।

  4. লিনাক্স মাইএসকিএল ইনস্টল করা ফোল্ডারে অবস্থিত আইবডাটা 1 ফাইলটি অনুলিপি করুন এবং এটিতে পেস্ট করুন (সি: \ প্রোগ্রামডাটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.5 \ ডেটা)। কেবল বিদ্যমান ওভাররাইট করুন বা প্রতিস্থাপনের আগে ব্যাকআপ করুন।

  5. mysql সার্ভারটি শুরু করুন এবং পরীক্ষা করুন যে আপনি সফলভাবে ডাটাবেস ফাইলগুলি পুনরুদ্ধার করেছেন কিনা।

  6. আমার বর্তমানে ব্যবহৃত মাইএসকিএল সার্ভারে পুনরুদ্ধার করা ডাটাবেসটি ব্যবহার করার জন্য পুনরুদ্ধার করা ডাটাবেসটি রফতানি করুন এবং এটি আমার বিদ্যমান মাইএসকিএল সার্ভারটি আমদানি করুন।

আশা করি এগুলি সাহায্য করবে, কারণ আমার পক্ষে আর কিছুই কাজ করেনি।


1
পদ্ধতিটি আইবডাতা 1, আইব_লগফাইল 0, এবং আইবি_লগফিল 1 ফাইল এবং ডাটাবেস ফোল্ডারের সাথে উবুন্টু / ডেবিয়ানেও কাজ করে। ব্যবহারকারীর অনুলিপি করা হবে না, তবে তারপরে আপনি একটি নতুন ব্যবহারকারীকে ডাটাবেসে যুক্ত করতে এবং এটি দিয়ে ডাম্প করতে পারেন।
বোকরবেন

2

মাইএসকিএল 5.1 (উইন 7) সহ। ডিবিগুলি পুনরায় তৈরি করতে (ইনোডিবিএস) আমি নিম্নলিখিত ডিয়ারগুলির সমস্ত বিষয়বস্তু (my.ini প্যারাম) প্রতিস্থাপন করেছি:

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

এর পরে আমি মাইএসকিএল পরিষেবা শুরু করেছি এবং সমস্ত কাজ ঠিক আছে।


1

হ্যাঁ! এগুলি কেবল আপনার ডাটাবেস-ফোল্ডারে যুক্ত করুন (ওএসের উপর নির্ভর করে) এবং "মাইএসকিউএল ফিক্স অনুমতি" এর মতো একটি কমান্ড চালান। এটি ডাটাবেসটি পুনরায় সঞ্চিত করেছে। এটিও দেখুন যে ফাইলগুলির পাশাপাশি সঠিক অনুমতিগুলি সেট করা আছে।


আমি এটি করেছি, তবে আমি এটি টেবিলগুলিকে চিনতে পারি না। যেমনটি আমি পূর্ববর্তী উত্তরে আমার মন্তব্যে বলেছি।
orezvani

0

আমি এই ফাইলগুলিকে একবার একটি মাইএসকিএল ডাটাবেসের জন্য ডাটাবেস স্টোরেজ ফোল্ডারে অনুলিপি করেছিলাম যা কাজ করছে, ডিবি শুরু করে এবং ফাইলগুলি "মেরামত" করার জন্য অপেক্ষা করল, তারপরে মাইএসকিএলডাম্প দিয়ে এগুলি বের করে নিল।


-1

আমার ক্ষেত্রে, / var / lib / mysql তে কেবল tc.log অপসারণ মারিয়্যাডবি / মাইএসকিএল আবার শুরু করার জন্য যথেষ্ট ছিল।


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