মাইএসকিএলে ইবদাতার আকার হ্রাস করার সর্বোত্তম উপায় কী?


63

আমার কিছু প্রোডাকশন সার্ভার রয়েছে যার ibdataফাইলগুলি দিন দিন আকারে বৃদ্ধি পায়।

এটি ইতিমধ্যে 290GB স্পেস গ্রহণ করেছে।

সার্ভারগুলির টেবিলগুলি বেশিরভাগই InnoDB এবং সেখানে উচ্চতর পড়ার এবং লেখার অনুরোধ রয়েছে।

লগ ফাইলের আকারও বাড়ছে। টেবিলগুলিতে প্রচুর পরিমাণে ডেটা রয়েছে।

আমি উভয়ের ক্রমবর্ধমান আকারকে কীভাবে নিয়ন্ত্রণ করতে পারি?

আমি ব্যবহার করছি না innodb_file_per_table

উত্তর:


104

InnoDB অবকাঠামোগত ব্যস্ততম ফাইলটি মনে রাখবেন / var / lib / mysql / ibdata1

এই ফাইলটি সাধারণত বিভিন্ন শ্রেণীর তথ্য রাখে (যখন ইনোডোবি_ফাইলে_পিঠকটি 0 হয়)

  • সারণী ডেটা
  • সারণী সূচি
  • এমভিসিসি (মাল্টিভিশনিং কনকুরেন্সি নিয়ন্ত্রণ) ডেটা
    • রোলব্যাকস সেগমেন্টস
    • টেবিলস্পেস পূর্বাবস্থায় ফেরান
  • টেবিল মেটাডেটা
  • চিত্রের উপস্থাপনা দেখুন

অনেকগুলি ডিস্কস্পেস পরিচালনা এবং দক্ষতার জন্য আরও একাধিক ইবদাটা ফাইল তৈরি করে। এটি সাহায্য করে না।

দুর্ভাগ্যক্রমে, ইবদাটা 1 তে সঞ্চিত ইনোডিবি টেবিলের বিরুদ্ধে টেবিলটি অপ্টিমাইজ করুন দুটি কাজ করে:

  • টেবিলের ডেটা এবং সূচিগুলিকে আইবিডাটা 1-এর সাথে সামঞ্জস্যপূর্ণ করে তোলে
  • এটি আইবডাটা 1টিকে বাড়তে দেয় কারণ একটানা ডেটা আইবডাটা 1-এ যুক্ত হয়

আপনি ইবদাটা 1 থেকে সারণী ডেটা এবং সারণী সূচীগুলি পৃথক করতে পারেন এবং ইনোডাব_ফিল_পিটার_সামগ্রী ব্যবহার করে স্বতন্ত্রভাবে পরিচালনা করতে পারেন । একবার এবং সকলের জন্য ইবদাতা 1 সঙ্কুচিত করতে আপনাকে নিম্নলিখিতগুলি অবশ্যই করতে হবে

পদক্ষেপ 01) মাইএসকিউএল সমস্ত ডাটাবেস একটি এসকিউএল পাঠ্য ফাইলে ফেলা (এটি এসকিউএলডাটা.এসকিউএল কল করুন) ( আরও বিশদ এখানে )

ধাপ 02) (ছাড়া সমস্ত ডাটাবেস ছাড়ুন mysql, performance_schemaএবং information_schema)

পদক্ষেপ 03) শাটডাউন মাইএসকিএল

পদক্ষেপ 04) /etc/my.cnf এ নিম্নলিখিত লাইনগুলি যুক্ত করুন

[mysqld]
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G

সিডিনোট: ইনোডাব_ফুফার_পুল_সাইজের জন্য আপনার সেট যাই হোক না কেন, নিশ্চিত করুন যে ইনোডাব_লগ_ফায়াল_সাইজ ইনোডাব_বফার_পুল_সাইজের 25%।

পদক্ষেপ 05) ibdata1, ib_logfile0 এবং ib_logfile1 মুছুন

এই মুহুর্তে, কেবলমাত্র / var / lib / mysql তে মাইএসকিএল স্কিমা থাকা উচিত

পদক্ষেপ 06) মাইএসকিএল পুনরায় চালু করুন

এটি আইবিডেটা 1 10 এমবিতে, ইব_লগফাইল 0 এবং আইবি_লগফাইল 1 প্রতিটি 1 জি তে পুনরায় তৈরি করবে

পদক্ষেপ 07) এসকিউএলডেটা.এসকিউএলকে মাইএসকিএলে পুনরায় লোড করুন

আইবডাটা 1 বৃদ্ধি পাবে তবে কেবল টেবিল মেটাডেটা থাকে

প্রতিটি InnoDB টেবিল ইবদাটা 1 এর বাইরে থাকবে

ধরুন আপনার কাছে একটি আইএনডিবিবি টেবিল আছে যার নাম mydb.mytable। আপনি যদি / var / lib / mysql / mydb এ যান, আপনি টেবিলের প্রতিনিধিত্বকারী দুটি ফাইল দেখতে পাবেন

  • mytable.frm (স্টোরেজ ইঞ্জিন শিরোনাম)
  • mytable.ibd (টেবিল ডেটা এবং mydb.mytable জন্য সারণী সূচীর হোম)

আইবডাটা 1-এ আর কখনও ইনোডিবি ডেটা এবং সূচি থাকবে না।

/Etc/my.cnf- এ ইনোডোবি_ফায়াল_পার_সারণযোগ্য বিকল্পের সাহায্যে আপনি চালাতে পারবেন OPTIMIZE TABLE mydb.mytableএবং ফাইলটি /var/lib/mysql/mydb/mytable.ibdসঙ্কুচিত হবে।

আমি আমার কেরিয়ারে মাইএসকিউএল ডিবিএ হিসাবে অনেকবার এটি করেছি

প্রকৃতপক্ষে, আমি প্রথমবার এটি করেছি, আমি একটি 50 জিবি ইবদাতা 1 ফাইলটি 500 এমবিতে ভেঙে ফেলেছি।

একবার চেষ্টা করে দেখো. আপনার যদি এই বিষয়ে আরও প্রশ্ন থাকে তবে আমাকে ইমেল করুন। আমাকে বিশ্বাস কর. এটি স্বল্প মেয়াদে এবং দীর্ঘ মেয়াদে কাজ করবে। !!!

আপনি যদি মাইআইএসএএম এবং ইনোডিবিতে প্রকৃত ডেটা সঞ্চয় করে রাখতে চান তবে দয়া করে এই কোয়েরিটি চালান:

SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Data Size", CONCAT(LPAD(REPLACE(
FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;

এমনকি my.cnf- এর প্রস্তাবিত সেটিংস (যা আমার কাছে ইতিমধ্যে রয়েছে), আইব_লগফিল 0 এবং 1 মুছে ফেলা এবং তারপর মাইএসকিএল শুরু করার পরে, নতুন ফাইলগুলি তৈরি করা হয় এবং কয়েক সেকেন্ডের মধ্যে সেগুলি আপনার উপরের ক্যোয়ারীর দ্বারা প্রদর্শিত ডাটাবেসের আকারের সমান হয়। নিশ্চিত না যে মাইএসকিএল এই ফাইলগুলিতে সমস্ত টেবিল এবং সূচি অনুলিপি করছে এবং প্রতিটি টেবিলকে পৃথক ফাইলে রক্ষণাবেক্ষণ করছে কিনা Not
অ্যালেন কিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.