কিভাবে আমার মাইএসকিউএল ডাটাবেস এক পুনঃস্থাপন .myd, .myi, .frmফাইল?
কিভাবে আমার মাইএসকিউএল ডাটাবেস এক পুনঃস্থাপন .myd, .myi, .frmফাইল?
উত্তর:
যদি এটি মাইআইএসএএম টেবিল হয়, তবে .FRM, .MYD, এবং .MYI ফাইলগুলি একটি ডাটাবেস ডিরেক্টরিতে (যেমন, /var/lib/mysql/dbname) ফাঁসিয়ে দেওয়া সেই টেবিলটি উপলব্ধ করবে। এটি যেমন একই ডাটাবেস থেকে এসেছে, একই সার্ভার, একই মাইএসকিউএল সংস্করণ বা একই আর্কিটেকচার হতে হবে না। ফোল্ডারের জন্য আপনাকেও মালিকানা পরিবর্তন করতে হবে (যেমন, chown -R mysql:mysql /var/lib/mysql/dbname)
নোট করুন যে অনুমতিগুলি ( GRANTইত্যাদি) mysqlডাটাবেসের একটি অংশ । সুতরাং সেগুলি টেবিল সহ পুনরুদ্ধার করা হবে না; GRANTব্যবহারকারী তৈরি করতে, অ্যাক্সেস দিতে ইত্যাদি আপনার যথাযথ বিবৃতি চালানোর দরকার হতে পারে ( mysqlডাটাবেস পুনরুদ্ধার করা সম্ভব তবে আপনার মাইএসকিউএল সংস্করণ এবং mysql_upgradeইউটিলিটির প্রয়োজনীয় কোনও রান সম্পর্কে সতর্কতা অবলম্বন করা উচিত ।)
আসলে, আপনার সম্ভবত সম্ভবত .FRM (টেবিল কাঠামো) এবং .MYD (টেবিল ডেটা) প্রয়োজন, তবে .MYI (সূচিপত্র) পুনর্নির্মাণের জন্য আপনাকে টেবিলটি মেরামত করতে হবে।
একমাত্র সীমাবদ্ধতা হ'ল আপনি যদি ডাউনগ্রেড হন তবে আপনি ভালভাবে রিলিজ নোটগুলি পরীক্ষা করতে পারেন (এবং সম্ভবত মেরামতের টেবিলটি চালান)। আরও মাইএসকিউএল সংস্করণগুলি অবশ্যই বৈশিষ্ট্যগুলি যুক্ত করে।
[যদিও এটি সুস্পষ্ট হওয়া উচিত, আপনি যদি টেবিলগুলি মিশ্রিত করেন এবং মিলেন তবে those টেবিলগুলির মধ্যে সম্পর্কের অখণ্ডতা আপনার সমস্যা; মাইএসকিউএল যত্ন করে না, তবে আপনার অ্যাপ্লিকেশন এবং আপনার ব্যবহারকারীরা পারে। এছাড়াও, InnoDB টেবিলগুলির জন্য এই পদ্ধতিটি মোটেই কার্যকর হয় না। কেবল মাইআইএসএএম, তবে আপনার কাছে থাকা ফাইলগুলি বিবেচনা করে আপনার মাইআইএসএএম]
check table sometable; এবং তারপরে মেরামত চালান (কেবল প্রয়োজন হলে): repair table sometable;
আমি সবেমাত্র এর সমাধান করতে পেরেছি। আমি উইন্ডোজ 7 এ মাইএসকিউএল 5.1 বা 5.6 ব্যবহার করছি।
এই পুনরুদ্ধারের জন্য .MYI এবং .MYD ফাইলটি সনাক্ত করার দরকার নেই।
innodb_force_recovery = 4স্তরটি ব্যবহার করেছে (নিশ্চিত নয় যে এই ক্ষেত্রে তার প্রয়োজন ছিল)। শুকরিয়া ধন্যবাদ!
ibdata1ইনোডিবি, মাইআইএসএএম নয়।
একটি বিষয় লক্ষণীয়:
.FRM ফাইলটির এতে আপনার টেবিলের কাঠামো রয়েছে এবং এটি আপনার মাইএসকিউএল সংস্করণে সুনির্দিষ্ট।
.MYD ফাইলটি সংস্করণের সাথে সুনির্দিষ্ট নয়, কমপক্ষে ছোটখাটো সংস্করণ নয়।
.MYI ফাইলটি সুনির্দিষ্ট, তবে REPAIR TABLEঅন্য উত্তরগুলির মতই ফেলে রেখে পুনরায় জেনারেট করা যায় ।
এই উত্তরের বিষয়টি আপনাকে জানাতে হবে যে যদি আপনার টেবিলগুলির স্কিমা ডাম্প থাকে তবে আপনি এটি ব্যবহার করতে পারেন টেবিলের কাঠামো তৈরি করতে, তারপরে সেইগুলি .MYD ফাইলগুলিকে আপনার ব্যাকআপগুলি দিয়ে প্রতিস্থাপন করুন, MYI ফাইলগুলি মুছুন এবং তাদের মেরামত করুন them সব। এইভাবে আপনি আপনার ব্যাকআপগুলি অন্য মাইএসকিউএল সংস্করণে পুনরুদ্ধার করতে পারেন, বা ব্যবহার না করে আপনার ডাটাবেসটিকে পুরোপুরি সরিয়ে নিতে পারেন mysqldump। বড় ডাটাবেসগুলি সরিয়ে নেওয়ার সময় আমি এই সুপারটি সহায়ক পেয়েছি।
সরল! একটি ডামি ডাটাবেস তৈরি করুন (বলুন আব্বাস)
এই সমস্ত .myd, .myi, .frm ফাইলগুলিকে mysql \ data \ abc এ অনুলিপি করুন যেখানে mysql \ ডেটা the এমন এক স্থান যেখানে সমস্ত ডাটাবেসের জন্য .myd, .myi, .frm সংরক্ষণ করা হয়।
তারপরে phpMyadmin এ যান, db abc এ যান এবং আপনি আপনার ডাটাবেস খুঁজে পান।
আমার মনে হয় .আমি আপনি ভিতরে MySQL থেকে মেরামত করতে পারেন।
আপনি যদি মাইএসকিউএল থেকে এই ধরণের ত্রুটি বার্তাগুলি দেখেন: ডেটাবেসগুলি কোয়েরি (ক্যোয়ারী) কার্যকর করতে ব্যর্থ হয়েছে 1016: ফাইলটি খুলতে পারে না: 'সামিটবেল.এমওয়াইআই'। (errno: 145) ত্রুটি এমএসজি: 1034: টেবিলের জন্য ভুল কী ফাইল: 'সামিটবেবল'। এটি সম্ভবত মেরামত করার চেষ্টা করুন আপনার কাছে সম্ভবত ক্র্যাশ হওয়া বা দূষিত টেবিল রয়েছে।
আপনি এই জাতীয় কোনও mysql প্রম্পট থেকে টেবিলটি চেক এবং মেরামত করতে পারেন:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
এবং এখন আপনার টেবিল ভাল করা উচিত:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
ডিরেক্টরিটি অ্যাক্সেস করার প্রয়োজন ছাড়াই আমি একটি .sqlফাইল ফাইলগুলিতে রূপান্তর করার জন্য একটি সমাধান পেয়েছি (আপনি তারপরে .sqlফাইলটি একটি সার্ভারে আমদানি করতে এবং ডাটাবেসটি পুনরুদ্ধার করতে পারেন), সুতরাং এটি করার জন্য আপনাকে /varকোনও সার্ভার প্রশাসক হওয়ার দরকার নেই।
এটি আপনার কম্পিউটারে এক্সএএমপিপি বা এমএএমপি ইনস্টল করা দরকার।
C:\XAMPP) এবং উপ ডিরেক্টরিতে নেভিগেট করুন mysql\data। পুরো পথটি হওয়া উচিতC:\XAMPP\mysql\dataভিতরে আপনি তৈরি করেছেন এমন অন্য কোনও ডাটাবেসের ফোল্ডার দেখতে পাবেন। কপি & ফোল্ডার পূর্ণ আটকান .myd, .myiএবং .frmসেখানে ফাইল। সেই ফোল্ডারটির পথ হওয়া উচিত
C:\XAMPP\mysql\data\foldername\.mydfiles
তারপরে localhost/phpmyadminএকটি ব্রাউজারে যান। সবেমাত্র mysql\dataফোল্ডারে আপনি যে ডাটাবেসটি পেস্ট করেছেন তা নির্বাচন করুন এবং নেভিগেশন বারের এক্সপোর্টে ক্লিক করুন। এটি .sqlফাইল হিসাবে রফতানি চয়ন করে । এটি তখন ফাইলটি সেভ করে জিজ্ঞাসা করে পপ আপ করবে
আর এটাই! আপনি এখন একজন আছে (উচিত) .sqlডাটাবেসের মূলত ছিল ফাইল .myd, .myiএবং .frmফাইল। তারপরে আপনি নতুন ডাটাবেস তৈরি করে এবং নেভিগেশন বারে 'আমদানি' টিপুন এবং তারপরে এটি আমদানির পদক্ষেপগুলি অনুসরণ করে phpMyAdmin এর মাধ্যমে অন্য সার্ভারে আমদানি করতে পারেন
আপনি মাইএসকিউএল এর ঠিক একই সংস্করণ হিসাবে এই ফাইলগুলিকে ডেটা ফোল্ডারের যথাযথভাবে নামের সাব ডাইরেক্টরি ডিরেক্টরিতে অনুলিপি করতে পারবেন এবং আপনি সেই ডিরেক্টরিতে সম্পর্কিত সমস্ত ফাইল ধরে রেখেছেন। যদি আপনার কাছে সমস্ত ফাইল না থাকে তবে আমি নিশ্চিত যে আপনার সমস্যা হবে।
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
এটি আইবি_ * ফাইলগুলির নাম পরিবর্তন করতে বলে। আমি এটি করেছি এবং এটি আমাকে ডিবি ফিরিয়ে দিয়েছে।
উপরের বর্ণনাটি আমার পক্ষে কাজ করার জন্য যথেষ্ট ছিল না (সম্ভবত ঘন বা অলস) তাই ভবিষ্যতে আমাকে সহায়তা করার উত্তরটি খুঁজে পেয়ে আমি এই স্ক্রিপ্টটি তৈরি করেছি। আশা করি এটি অন্যকে সহায়তা করবে
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
উইন্ডোজ এক্সপি রয়েছে এবং মাইএসকিউএল সার্ভার 5.5 ইনস্টলড রয়েছে তাদের জন্য - ডাটাবেসের জন্য অবস্থান সি: \ নথি এবং সেটিংস \ সমস্ত ব্যবহারকারীদের অ্যাপ্লিকেশন ডেটা \ মাইএসকিউএল \ মাইএসকিউএল সার্ভার 5.5 \ ডেটা, যদি আপনি মাইএসকিএল ওয়ার্কবেঞ্চ ইনস্টলেশনটির মধ্যে অবস্থান পরিবর্তন না করেন unless গুই।