মাইআইএসএএম টেবিলের ক্রাশ হওয়া বরং এটি সহজ।
প্রতিটি মাইআইএসএএম টেবিলের শিরোনামে এমন একটি কাউন্টার রয়েছে যা টেবিলের বিপরীতে কতগুলি মুক্ত ফাইল হ্যান্ডেল রয়েছে তা সনাক্ত করে।
যদি আপনি মাইএসকিএল শুরু করেন এবং শিরোনামের মধ্যে নম্বরটি প্রকৃত ফাইল হ্যান্ডলের সংখ্যার সাথে মেলে না, মাইএসকিএলএডটি টেবিলটিকে ক্র্যাশ হওয়ার সাথে সাথে আচরণ করে।
যদি কোনও সাধারণ REPAIR TABLE mdl_user
কোনও ডেটা ক্ষতি ছাড়াই প্রতিবার এটি কাজ করে, তবে এটি সূচিত করতে পারে যে আপনার কাছে খুব উচ্চ পাচার হওয়া একটি সাইট রয়েছে যা এখানে লিখেছিল mdl_user
।
কয়েক ডজন টেবিলের যদি এটির প্রয়োজন হয় REPAIR TABLE
, আমি সমস্ত টেবিলগুলিকে InnoDB তে রূপান্তর করব। তবে, যদি mdl_user
এই সমস্যাটি সহ টেবিলটি একমাত্র সারণী হয় তবে আপনি কিছু করতে পারেন (উদাহরণস্বরূপ, বলুন ডাটাবেসটি হয় moodle
);
আপনি চাইলে সমস্ত সারণী মাইআইএসএএম হিসাবে রেখে দেওয়া হয়েছে
পদক্ষেপ 01: একটি মেরামত সারণী স্ক্রিপ্ট তৈরি করুন
echo "REPAIR TABLE moodle.mdl_user;" > /var/lib/mysql/MoodleStartUp.sql
পদক্ষেপ 02: মেরামত স্ক্রিপ্টটি স্টার্টআপ ফাইল হিসাবে ঘোষণা করুন
এটিকে /etc/my.cnf এ যুক্ত করুন
[mysqld]
init-file=/var/lib/mysql/MoodleStartUp.sql
পদক্ষেপ 03: মাইএসকিএল পুনরায় আরম্ভ করুন
মাইএসকিএল-এর প্রতিটি পুনঃসূচনা মেরামত সারণী স্ক্রিপ্টটি ট্রিগার করবে
আপনি যদি চান সমস্ত টেবিল InnoDB হয়ে যায়
মাইআইএসএএম টেবিলগুলির একটি বাল্ক রূপান্তর স্ক্রিপ্ট ইনোডিবিতে তৈরি করতে এই কোডটি চালান, এবং এটি দেখুন
MYSQL_USER=root
MYSQL_PASS=password
MYSQL_CONN="-u${MYSQL_USER} -p ${MYSQL_PASS}"
echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
mysql ${MYSQL_CONN} -A --skip-column-names -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql
less /root/ConvertMyISAMToInnoDB.sql
একবার আপনি রূপান্তর স্ক্রিপ্টের বিষয়বস্তুতে সন্তুষ্ট হয়ে গেলে এটি চালান
mysql ${MYSQL_CONN} < /root/ConvertMyISAMToInnoDB.sql
আপডেট 2012-03-15 14:00 ইডিটি
কেভিন , মাইআইএসএএম ব্যবহার করার সময়, যদি ডিস্ক স্পেসের বাইরে চলে যাওয়া আপনার ব্যয় হয়?
এখানে বিবেচনা করার মতো কিছু রয়েছে: মাইএসকিউএল 5.0 শংসাপত্রের স্টাডি গাইড অনুসারে ,
বুলেটপয়েন্ট # 11 পৃষ্ঠাগুলিতে 408,409 ধারা 29.2 তে নিম্নলিখিতটি বলেছেন:
আপনি যদি মাইআইএসএএম টেবিলটিতে সারি যুক্ত করার সময় ডিস্কের জায়গাটি সরিয়ে ফেলে থাকেন তবে কোনও ত্রুটি ঘটেনি। সার্ভার স্থান উপলব্ধ না হওয়া অবধি অপারেশন স্থগিত করে এবং তারপরে অপারেশন সম্পূর্ণ করে।
আপনি যখন ডিস্কের স্থানটি সরিয়ে ফেলেন, কেবল বন্ধ বা মাইএসকিএল মারবেন না। বর্তমানে ব্যবহৃত মাইআইএসএএম-তে খোলা ফাইল হ্যান্ডলগুলির গণনা সাফ করা হবে না। সুতরাং, মাইআইএসএএম টেবিলটি ক্র্যাশযুক্ত চিহ্নিত হয়েছে। যদি আপনি এখনও মাইএসকিএলডি সহ ডেটা ভলিউমে ডিস্কের স্থান খালি করতে পারেন, ডিস্কের স্পেস উপলব্ধ হয়ে গেলে মাইএসকিএলডি সৈনিক হবে।