আমার অ্যামাজন অররা ক্লাস্টারে কেন আমার "ভলিউম বাইটস" সর্বদা বাড়ছে?


11

আমার একটি অ্যামাজন (এডাব্লুএস) অরোরা ডিবি ক্লাস্টার রয়েছে এবং প্রতিদিন [Billed] Volume Bytes Usedএটি বাড়ছে।

সময়ের সাথে সাথে ভলিউমবাইটসযুক্ত ক্লাউডওয়াচ মেট্রিক

আমি আমার সমস্ত টেবিলের আকারটি পরীক্ষা করেছি (সেই ক্লাস্টারের সমস্ত ডাটাবেসে) INFORMATION_SCHEMA.TABLESটেবিলটি ব্যবহার করে :

SELECT ROUND(SUM(data_length)/1024/1024/1024) AS data_in_gb, ROUND(SUM(index_length)/1024/1024/1024) AS index_in_gb, ROUND(SUM(data_free)/1024/1024/1024) AS free_in_gb FROM INFORMATION_SCHEMA.TABLES;
+------------+-------------+------------+
| data_in_gb | index_in_gb | free_in_gb |
+------------+-------------+------------+
| 30         | 4           | 19         |
+------------+-------------+------------+

মোট: 53 জিবি

তাহলে কেন এই সময়ে আমার কাছে প্রায় 75 গিগাবাইট বিল করা হচ্ছে?

আমি বুঝেছি যে নিয়মিত মাইএসকিউএল সার্ভারে ইবদাটা ফাইলগুলি কখনই সঙ্কুচিত হতে পারে না সেভাবে প্রভিশন করা স্থান কখনই মুক্ত করা যায় না; আমি ঠিক আছে। এটি নথিভুক্ত, এবং গ্রহণযোগ্য।

আমার সমস্যাটি হ'ল প্রতিদিন, আমার কাছে বিল দেওয়া স্থানটি বাড়ছে। এবং আমি নিশ্চিত যে আমি 75GB স্থান অস্থায়ীভাবে ব্যবহার করছি না। আমি যদি এরকম কিছু করতে পারি, আমি বুঝতে পারি। এটি এমনভাবে মনে হয় যে আমি আমার টেবিলগুলি থেকে সারিগুলি সরিয়ে, বা টেবিলগুলি ফেলে রেখে বা এমনকি ডাটাবেসগুলি ফেলে দিয়ে, আমি যে স্টোরেজ স্থানটি মুক্ত করছি তা কখনই পুনরায় ব্যবহৃত হয় না।

আমি একাধিকবার এডাব্লুএস (প্রিমিয়াম) সমর্থনের সাথে যোগাযোগ করেছি এবং কেন তা কেন কখনও ভাল ব্যাখ্যা পেতে সক্ষম হইনি। যে টেবিলগুলিতে প্রচুর ( টেবিল প্রতি ) রয়েছে সেগুলি
চালানোর জন্য আমি প্রস্তাবনা পেয়েছি বা মুদ্রিত ডেটা এখনও রোলব্যাক বিভাগে রাখা হয়নি তা নিশ্চিত করার জন্য (রেফার: এমভিসিসি ) , এবং রোলব্যাক অংশটি খালি হয়েছে তা নিশ্চিত করার জন্য দৃষ্টান্তটি পুনরায় চালু করুন। যারা কেউ সাহায্য করেনি।OPTIMIZE TABLEfree_spaceINFORMATION_SCHEMA.TABLES

উত্তর:


19

এখানে খেলতে একাধিক জিনিস রয়েছে ...

  1. প্রতিটি টেবিল তার নিজস্ব টেবিল স্পেসে সংরক্ষণ করা হয়

    ডিফল্টরূপে, অররা ক্লাস্টার (নামযুক্ত default.aurora5.6) জন্য প্যারামিটার গ্রুপটি সংজ্ঞায়িত করে innodb_file_per_table = ON। তার অর্থ অররা স্টোরেজ ক্লাস্টারে প্রতিটি টেবিল একটি পৃথক ফাইলে সংরক্ষণ করা হয়। এই কোয়েরিটি ব্যবহার করে আপনি প্রতিটি টেবিলের জন্য কোন টেবিল স্পেস ব্যবহার করছেন তা দেখতে পারেন:

    SELECT name, space FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;

    নোট: আমি পরিবর্তনের চেষ্টা করিনি innodb_file_per_tableকরতে OFF। যে সাহায্য করবে ..?

  2. টেবিল স্পেসগুলি মুছে ফেলা স্টোরেজ স্পেসটি পুনরায় ব্যবহার করা হয় না

    এডাব্লুএস প্রিমিয়াম সমর্থন উদ্ধৃত:

    অরোর স্টোরেজ ইঞ্জিনটির অনন্য ডিজাইনের কারণে এর কার্যকারিতা এবং ফল্ট সহনশীলতা বাড়াতে অরোরার স্ট্যান্ডার্ড মাইএসকিউএল হিসাবে একইভাবে ফাইল-প্রতি-টেবিল টেবিল স্পেসগুলিকে ডিফ্র্যাগমেন্টের কার্যকারিতা নেই।

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

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

    তবে সেই অপচয়কাজের কিছু জায়গা পুনরায় ব্যবহার করার কিছু অস্পষ্ট উপায় রয়েছে ...
    আবার, এডাব্লুএস প্রিমিয়াম সমর্থনটি উদ্ধৃত করুন:

    আপনার মোট ডেটা সেটটি কোনও নির্দিষ্ট আকারের (প্রায় 160 গিগাবাইট) ছাড়িয়ে গেলে আপনি পুনরায় ব্যবহারের জন্য 160 গিগাবাইট ব্লকে স্থান পুনরুদ্ধার করতে শুরু করতে পারেন যেমন আপনার অরোরা ক্লাস্টারের ভলিউমে 400 জিবি থাকলে এবং ডিআরওপি 160 গিগাবাইট বা আরও বেশি টেবিল অরোরা করতে পারে স্বয়ংক্রিয়ভাবে 160 জিবি ডেটা পুনরায় ব্যবহার করুন। তবে এই স্থানটি পুনরায় দাবি করা ধীর হতে পারে।
    একসাথে প্রচুর পরিমাণে ডেটা মুক্ত করার কারণ হ'ল স্ট্যান্ডার্ড মাইএসকিউএল থেকে ভিন্ন একটি এন্টারপ্রাইজ স্কেল ডিবি ইঞ্জিন হিসাবে অরোরাসের অনন্য নকশা যা এই স্কেলটিতে ব্যবহার করা যায় না।

  3. টেবিল অপটিমাইজ করা খারাপ!

    কারণ অরোরা মাইএসকিউএল 5.6 এর উপর ভিত্তি করে OPTIMIZE TABLEম্যাপ করা হয়েছে ALTER TABLE ... FORCEযা সূচকের পরিসংখ্যান আপডেট করতে এবং ক্লাস্টারড ইনডেক্সে বিনামূল্যে অব্যবহৃত স্থানের জন্য টেবিলটি পুনরায় তৈরি করে। কার্যকরভাবে, পাশাপাশি innodb_file_per_table = ON, এর অর্থ হল একটি চালানো OPTIMIZE TABLEনতুন টেবিল স্পেস ফাইল তৈরি করে এবং পুরানোটিকে মুছে দেয়। যেহেতু একটি টেবিলস্পেস ফাইল মোছার ফলে এটি যে স্টোরেজটি ব্যবহার করছিল তা মুক্ত করে না, এর অর্থ OPTIMIZE TABLEসর্বদা আরও স্টোরেজ দেওয়ার ব্যবস্থা করা হবে। সেকি!

    রেফ: https://dev.mysql.com/doc/refman/5.6/en/optimize-table.html#optimize-table-innodb- বিবরণ

  4. অস্থায়ী সারণী ব্যবহার করে

    ডিফল্টরূপে, অরোরার দৃষ্টান্তগুলির জন্য পরামিতি গোষ্ঠী (নামযুক্ত default.aurora5.6) সংজ্ঞা দেয় default_tmp_storage_engine = InnoDB। এর অর্থ প্রতিবার আমি যখন কোনও TEMPORARYটেবিল তৈরি করব তখন এটি আমার সমস্ত নিয়মিত টেবিলের সাথে অরোরা স্টোরেজ ক্লাস্টারে সংরক্ষণ করা হয়। এর অর্থ এই টেবিলগুলি ধরে রাখার জন্য নতুন স্থানের ব্যবস্থা করা হয়েছে, এতে মোট ভলিউমবাইটস ব্যবহার বাড়বে।
    এর সমাধান যথেষ্ট সহজ: default_tmp_storage_engineপ্যারামিটারের মানটি এতে পরিবর্তন করুন MyISAM। এটি অরোরাকে TEMPORARYউদাহরণের স্থানীয় স্টোরেজে টেবিলগুলি তৈরি করতে বাধ্য করবে ।
    দ্রষ্টব্য: উদাহরণগুলির স্থানীয় সঞ্চয় সীমাবদ্ধ; দেখতে Free Local Storageদেখতে কত স্টোরেজ আপনার দৃষ্টান্ত আছে CloudWatch উপর মেট্রিক। বৃহত্তর (ব্যয়বহুল) দৃষ্টান্তগুলির আরও স্থানীয় স্টোরেজ রয়েছে।

    রেফ: এখনও কিছুই নয়; বর্তমান অ্যামাজন অরোরা ডকুমেন্টেশন এটি উল্লেখ করে না। আমি ডাব্লুএসএস সহায়তা দলকে ডকুমেন্টেশন আপডেট করতে বললাম, এবং যদি / একবার হয় তবে আমার উত্তরটি আপডেট করব।


1
এটি একটি দুর্দান্ত উত্তর, এবং হ্যাঁ , এগুলি হ'ল কিছু বড় সাবধানবাণী । খুশী আমি এই দেখেছি।
সেজেজোজ

পূর্বোক্ত। লক্ষ্য করা গেছে যে একটি ডিবি সার্ভারটি 300 গিগাবাইট পর্যন্ত ছিল, মাইএসকিউএল-রিপোর্ট করা মাপের একটি ডাটাবেসের জন্য 54 গিগাবাইট ... যদি স্থানটি কখনই পুনরুদ্ধার না করা হয়, তবে আপনার যখন প্রায়শই লিখিত-টেবিলের অনেকগুলি টেক্সট থাকে তখন কি হয় তার একটি উত্তম উদাহরণ ( যেমন লগ টেবিল, সূচি সারণী, ইত্যাদি)।
geerlingguy

0

যখন অরোরার ডেটা সরানো হয়, যেমন কোনও টেবিল বা পার্টিশনটি ফেলে রেখে, সামগ্রিক বরাদ্দ স্থান একই থাকে। ভবিষ্যতে ডেটা ভলিউম বৃদ্ধি পেলে মুক্ত স্থানটি স্বয়ংক্রিয়ভাবে পুনরায় ব্যবহৃত হয়। https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/Aurora.Managing.Performance.html

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