আমি যে ফলোলিংয়ের কৌশলটি প্রদর্শন করতে চলেছি তার জন্য আপনাকে স্টিলের সাহস প্রয়োজন।
নিম্নলিখিত মানদণ্ড দেওয়া
- দাতাদির
/var/lib/mysql
- টেবিল হয়
mydb.mytb
- যাকে এনাম কলাম বলা হয়
enum_col
- ইঞ্জিনটি মাইআইএসএএম
এটি এখানে একটি মৃত্যু-বিস্মৃত ক্র্যাক:
CREATE TABLE mydb.mybt LIKE mydb.mytb;
ALTER TABLE mydb.mybt MODIFY enum_col ENUM('First value','Second value');
SET wait_timeout=86400; SET interactive_timeout=86400;
FLUSH TABLES WITH READ LOCK;
একটি পৃথক ওএস / এসএসএইচ সেশনে .frm ফাইলগুলি স্যুপ করুন
$ mv /var/lib/mysql/mydb/mytb.frm /var/lib/mysql/mydb/myxx.frm
$ mv /var/lib/mysql/mydb/mybt.frm /var/lib/mysql/mydb/mytb.frm
$ mv /var/lib/mysql/mydb/myxx.frm /var/lib/mysql/mydb/mybt.frm
UNLOCK TABLES;
DROP TABLE mydb.mybt;
এটাই !!!
কভিয়েট: আমি এটির জন্য ক্রেডিট নিতে পারি না!
এই কৌশলটি থেকে আসে , পৃষ্ঠাগুলি 146-148: "অপ্টিমাইজেশান, ব্যাকআপ, আত্ম, এবং আরও হাই পারফরমেন্স মাইএসকিউএল" উপশিরোনামের নীচে দেওয়া দ্রুত গাড়ী চালানোর আপ ALTER টেবিল । পৃষ্ঠা 147 অনুচ্ছেদ 1 বলেছেন:
আমরা যে কৌশলটি প্রদর্শন করতে চলেছি তা অসমর্থিত, অনাবৃত, এবং এটি কার্যকর নাও হতে পারে। আপনার ঝুঁকিতে এটি ব্যবহার করুন। আমরা আপনাকে প্রথমে আপনার ডেটা ব্যাক আপ করার পরামর্শ দিচ্ছি!
একবার চেষ্টা করে দেখো ! (দয়া করে এটি আমাদের কীভাবে চালু হয়েছিল তা জানান)
আপডেট করুন ২০১০-১০-০৫ 17:49 ইডিটি
যদি টেবিলটি মাইআইএসএএম হয় এবং আপনার উত্পাদন পর্যাপ্ত জায়গা এবং একটি সরাসরি-আপ ডাউনটাইম উইন্ডো থাকে তবে এটি ব্যবহার করে দেখুন:
service mysql restart --skip-networking
একটি পৃথক ওএস / এসএসএইচ সেশনে, টেবিলের একটি অনুলিপি তৈরি করুন
cp /var/lib/mysql/mydb/mytb.frm /var/lib/mysql/mydb/mytbplay.frm
cp /var/lib/mysql/mydb/mytb.MYD /var/lib/mysql/mydb/mytbplay.MYD
cp /var/lib/mysql/mydb/mytb.MYI /var/lib/mysql/mydb/mytbplay.MYI
INFORMATION_SCHEMA.TABLES
কল করা নতুন টেবিলের উপস্থিতিটি স্বয়ংক্রিয়ভাবে সনাক্ত করবে mydb.mytbplay
।
সাহস-অফ-ইস্পাত অ্যালগরিদম সম্পাদন করুন mydb.mytbplay
আপনি এর অখণ্ডতা পরীক্ষা mydb.mytbplay
সন্তুষ্ট হলে
ALTER TABLE mydb.mytb RENAME mydb.mytb_backup;
ALTER TABLE mydb.mytbplay RENAME mydb.mytb;
service mysql restart
একবার চেষ্টা করে দেখো!