আমি কীভাবে একটি মাইএসকিউএল টেবিলকে দূষিত হতে বাধ্য করতে পারি?


17

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

তবে আমার টেবিলগুলির কোনওটিই এখন দুর্নীতিগ্রস্থ নয়। সুতরাং আমি আমার 100% নিশ্চিত নই যে আমার প্লাগইনটি ঠিকঠাক কাজ করছে। আমার একটি ডেভ সার্ভার রয়েছে যা মিসন সমালোচনা নয়। আমি কীভাবে সেখানকার টেবিলগুলির একটি (বা কোনও) কে দুর্নীতিগ্রস্থ হতে বাধ্য করতে পারি যাতে আমি আমার নাগিও সতর্কতা পরীক্ষা করতে পারি?

রেকর্ডের জন্য সার্ভারটি উবুন্টু ড্যাপার এবং মাইএসকিএল 5.0 সংস্করণ



3
ধরে নিলাম তারা মাইআইএসএএম টেবিলগুলি আমি কল্পনা করেছি আপনি কেবল একটি উইন্ডো খুলতে পারবেন। এই এসিডি ফ্রি টেবিলগুলি ক্র্যাশ করতে, আগুনে টিপ দেওয়ার এবং আগুন ধরার জন্য একটি সামান্য লঙ্ঘন যথেষ্ট হওয়া উচিত))
ডেভিড

উত্তর:


1

সাধারণত আপনি / var / lib / mysql থেকে অনুলিপি করে ডেটাবেসগুলি ব্যাক আপ করতে পারবেন না এবং তারপরে সেগুলি অনুলিপি করুন কারণ সেগুলি দূষিত হয়ে যায়, পরিবর্তে আপনাকে mysqldump ব্যবহার করতে হবে।

সুতরাং আপনি যদি / var / lib / mysql, অর্থাৎ / var / lib / mysql / myDB / এবং ডাটাবেসগুলির জন্য কোনও ফোল্ডারে যান তবে এটি করা উচিত এমন কিছু ফাইল: --)

সুতরাং আমি কোনও একটি ফাইল অনুলিপি করার, হেক্স সম্পাদকের সাথে সামান্য সম্পাদনা করার এবং এটিকে অনুলিপি করার পরামর্শ দেব।


8
cat DB1.myd /dev/random > DB2.myd

আমার এটা ভাল লেগেছে!
কাইল ব্র্যান্ডট

1
আমার হার্ডডিস্কটি পূর্ণ না হওয়া পর্যন্ত / ডি / এলোমেলো থেকে ডেটা টানতে থাকবে না? : পি
ররি

2
আরে, আপনি দুর্নীতি বলেছেন, তাই না? ;-)
ম্যাট সিমন্স

ররি, ইয়া, তবে কেবল কোনও সময়ে Ctrl-C টিপুন
কাইল ব্র্যান্ড্ট

ররি, বা হেড / ডেভ / ইউরানডম, একটি ফাইলের জন্য এবং তারপরে বিড়ালগুলি ব্যবহার করুন
কাইল ব্র্যান্ড্ট



2

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

বিকল্পভাবে আমি অন্য ব্যক্তির পরামর্শ প্রয়োগ করতে চাই .MYIতবে তথ্য ফাইলের পরিবর্তে ইনডেক ফাইলে।


2

উদাহরণ:

mysql> repair table Transactions;
^CQuery aborted by Ctrl+C
+-----------------------------------+--------+----------+-----------------------+
| Table                             | Op     | Msg_type | Msg_text              |
+-----------------------------------+--------+----------+-----------------------+
| test.Transactions | repair | error    | 137 when fixing table |
| test.Transactions | repair | status   | Operation failed      |
+-----------------------------------+--------+----------+-----------------------+
2 rows in set (17.84 sec)

mysql> select * from Transactions limit 1;
ERROR 144 (HY000): Table './test/Transactions' is marked as crashed and last (automatic?) repair failed

1

সম্ভবত একটি আদেশ কার্যকর করা যা নিম্নলিখিতগুলির মতো কিছু করে:

echo "aaa" > file.myd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.