"ভবিষ্যতে" মাইএসকিউএল ইনোডিবি লগের আরও ভাল উপায়?


16

আমি এই এসএনকিউএল 5.0 এ InnoDB ত্রুটি পেয়েছি। মাইস্কুল্ড পরিষ্কারভাবে বন্ধ হয়ে গেছে, তবে আমি পরে আইবি_লগফিল 0 এবং আইবি_লগফিল 1 হারাতে সক্ষম হয়েছি। এখন ক্লিন স্টার্টআপের পরে ইনোডিবি তার "ক্র্যাশ পুনরুদ্ধার" করেছে। আমি ইন্নাডব_ফোর্স_রেকোভারি = ৪ টি ব্যবসার মধ্য দিয়ে গিয়েছিলাম, একটি ঝুলন্ত মাইআইএসএএম টেবিলটি মেরামত করেছি এবং এখন এগুলি বাদ দিয়ে প্রতিলিপিটি প্রস্তুত। বড় সংখ্যক

111116 15:49:36  InnoDB: Error: page 393457 log sequence number 111 561,760,232
InnoDB: is in the future! Current system log sequence number 70 3,946,969,851.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: for more information.

এটি একটি স্লেভ সার্ভারে রয়েছে। উপরোক্ত ত্রুটিটি কয়েকশ করে লিখেছেন। আমি এই উত্তরটি পেয়েছি: "64 জিবি মূল্যবান ডেটা sertোকান এবং মুছুন, যাতে লগ সিকোয়েন্স নম্বরটি যথেষ্ট বড় হয়ে যায়"।

http://forums.mysql.com/read.php?22,50163,50163#msg-50163

64 গিগাবাইট * 16 এর যাদু নম্বরটি 4 জিবি * 16 থেকে আসে যেখানে সেই লোকটির ইনডোডব লগ "বড় সংখ্যা" 0 থেকে 15 বাড়ানো দরকার Mine আমার 70 থেকে 111 = 164 গিগাবাইট হয়ে যাচ্ছে। এটিতে 5 দিন সময় লাগবে। আমি আমার স্ক্রিপ্টটির গতি বাড়ানোর কাজ করব এবং এটির গতি বাড়ানোর জন্য সমান্তরালে এটি চালিয়ে যাব। ইতিমধ্যে, আমি আশা করছি যে অন্য কারওর থেকে ভাল উত্তর হবে। এটা বোকামি.


একটি প্রতিশ্রুতিবদ্ধ উত্তর: "যদি এটি কোনও ক্রীতদাস সার্ভার হয় তবে সর্বোত্তম সমাধান হ'ল ডেটাবেস সরিয়ে নিয়ে যাওয়া এবং মাস্টার থেকে একটি নতুন স্ন্যাপশট ইনস্টল করা" " দুর্ভাগ্যক্রমে 25 টি ডাটাবেস জুড়ে 20,000 টেবিল রয়েছে, 24x7 প্রোডাকশনে মাইআইএসএএম এবং ইনোডিবি'র মিশ্রণ। এগুলি বন্ধ করে দিতে এবং পুনরায় প্রতিলিপি শুরু করার আগে একটি নতুন পূর্ণ প্রতিলিপিটি করতে খুব বেশি সময় লাগবে।
IcarusNM

4
আমি এখন এই 8-কোর মেশিনটির 164 জিগ ডেটা তৈরি এবং মুছে ফেলার জন্য একটি নিরর্থক প্রতিযোগিতায় এর হাঁটুতে রয়েছি। আমি শুনছি একমাত্র বিকল্প হ'ল এই ক্রীতদাসের উপর সমস্ত কিছু কড়া করা এবং স্ক্র্যাচ থেকে শুরু করা। সমস্ত কার্যকরভাবে দুটি ফাইলের মধ্যে একটি নম্বর পরিবর্তন করতে। অবশ্যই সেখানে প্রো-টিপস সহ কিছু ইনোডিবি ইঞ্জিনিয়ার রয়েছে। কেউ কি কখনও ইমাসে আইবি_লগফিল 0 খুলেছে, হেক্সে ম্যাজিক নম্বরটি খুঁজে পেয়েছে এবং কেবল এটি পরিবর্তন করেছে?
IcarusNM

এটি করার কয়েকটি উপায় সম্পর্কে এখানে একটি দুর্দান্ত নিবন্ধ। পারকোনা স্পষ্টতই মাইএসকিউএল-এর কর্তৃপক্ষ। percona.com/blog/2013/09/11/…
jbrahy

উত্তর:


10

এটি ছিল বেশ বিরল পরিস্থিতি। আমি আশা করি যে আর কখনও শেষ হবে না, একটি ইনোডিবি দিয়ে "লগ সিকোয়েন্স নম্বরটি ভবিষ্যতে রয়েছে!" ত্রুটি. আমার নির্দিষ্ট বিবরণের কারণে, আমার সার্ভারের ডেটা পুনর্নির্মাণ / পুনরুদ্ধার করা সর্বশেষ অবলম্বন ছিল। কিছু প্রতারণা যেগুলি ভাল ধারণা ছিল, কিন্তু শেষ পর্যন্ত, আমি সিদ্ধান্ত নিয়েছি যে এই পার্শ্ববর্তী গেমটি খেলতে আমার পার্ল স্ক্রিপ্টটি কেবল উন্নত করে রাখা এবং যতটা সম্ভব ঘণ্টা / ঘন্টা ধরে মন্থন করা উচিত। হেক কী, এটি একটি ভাল সিস্টেম স্ট্রেস টেস্ট।

মনে রাখবেন: লক্ষ্যটি হল একটি একক পাল্টা ("লগ সিকোয়েন্স নম্বর") বৃদ্ধি করা যা আইব_লগফিল 0 এবং আইব_লগফাইল 1 এর শিরোনামে কোথাও সঞ্চিত রয়েছে । এটি InnoDB জালিয়াতি করা যাতে এটি একটি আপাত সময়ের রেপ উপেক্ষা করে জীবন নিয়ে চলতে পারে। তবে এই সংখ্যাটি কীভাবে সম্পাদনা করতে হবে তা কেউ জানে না। অথবা যদি তারা জানে তবে কারও কথা হয় না।

এখানে আমার চূড়ান্ত পণ্য। ওয়াইএমএমভি, তবে অভ্যন্তরীণভাবে ডেটা তৈরি করতে মাইএসকিএল-এর রিপ্যাট ফাংশন ব্যবহার করা অত্যন্ত দক্ষ।

 #!/usr/bin/perl
 use DBI;
 $table = shift || die;
 $dbh = DBI->connect("DBI:mysql:junk:host=localhost", "user", "pass"); #Edit "junk" (DB name), user, and pass to suit.
 $dbh->do("DROP TABLE IF EXISTS $table");
 $dbh->do("CREATE TABLE $table (str TEXT) ENGINE=INNODB");
 $sth = $dbh->prepare("INSERT INTO $table (str) VALUES (REPEAT(?,1000000))");
 foreach (1..50) {
    $sth->execute('0123456789');   # 10 MB
 }
 $dbh->do("DELETE FROM $table");

আমার প্রস্তাবিত রেসিপি:

  1. একটি 'জাঙ্ক' ডাটাবেস তৈরি করুন
  2. উপরের পার্ল স্ক্রিপ্টটি জাঙ্ক.পিএল হিসাবে সংরক্ষণ করুন ।
  3. রান junk.pl DATA1 এবং junk.pl DATA2 এবং junk.pl data3 , ইত্যাদি একবারে সব, যেমন আপনার ডাটাবেস সার্ভার হিসাবে অনেক CPU- র কোর আছে, শুরু করার জন্য। ওপেন একাধিক শেল এবং ব্যাশ লুপ প্রতিটি রান মোড়ানো: while true; do date; junk.pl dataX; done

আপনার এলএসএন বৃদ্ধি পেতে দেখুন, সম্ভবত অন্য লুপে:

 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 124 3871092821
 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 124 4209892586
 silly# echo "SHOW INNODB STATUS \G" | mysql -p'xxxxxx' | grep '^Log seq'
 Log sequence number 125 85212387

বড় সংখ্যাটি একটি স্বাক্ষরযুক্ত 32-বিট আইএনটি যা 4 জিবিতে মোড়ানো হবে, প্রতিবারের মতো ছোট সংখ্যা বাড়িয়ে তুলবে। এই ক্ষেত্রে এটি কেবল 124 থেকে 125 এ ঘূর্ণিত হয়েছে Your আপনার লক্ষ্যটি mysqld.log এ লুকিয়ে আছে যা আপনাকে এই হাস্যকর সমাধানের জন্য প্রথমে গুগলিং প্রেরণ করেছিল। একবার আপনি এই ফিনিস লাইনটি পার হয়ে গেলে, এটিই! শিং উড়িয়ে দাও! মুক্তি দাও কনফেটি!

সাইডবার: এটি মাইএসকিএলড 5.0 ডাব্লু / রিপেইটে একটি আকর্ষণীয় বাগটি উদ্ঘাটিত করেছে: আপনি যদি 20 এমবি তে যান তবে এটি কিছু অভ্যন্তরীণ কাউন্টারকে সরিয়ে দেয় এবং ~ 96 কেবি রোল করে। কোথাও কোনও সতর্কতা বা ত্রুটি নেই। আমি এই ট্র্যাকিং সময় নষ্ট করতে না। 10 এমবি দুর্দান্ত কাজ করে। আপনি যদি কিছু অন্য সীমাটি আঘাত করেন তবে এটি অভিযোগ করতে পারে। আমার ডিফল্ট থেকে বিভিন্ন ইনোডাব বাফার বেড়েছে। স্বাদ মরসুম। সর্বদা হিসাবে, এক উইন্ডোতে mysqld.log দেখুন।


এটি দেখুন পেরকোনা
২০১৩ /

ধন্যবাদ জোনাস; ইহা আকর্ষণীয়. আমি মনে করি আমি উপরে আমার পদ্ধতিটি ধরে রাখতে পারি। তিনি চলমান মাইএসকিএলডের বিরুদ্ধে জিডিবি ব্যবহার করে দেখায় যা আমি সম্ভবত ঝুঁকিপূর্ণ কখনও করব না। তবে সেখানেও ভাল তথ্য।
IcarusNM

কিছু অদ্ভুত কারণে, মারিয়াডিবি ব্যবহার করে, আমি 'ছোট সংখ্যা [স্থান] বড় সংখ্যা' লগ সিকোয়েন্স নম্বরগুলি পাই না - তবে কেবল একটি 'বড় সংখ্যা', তাই দুঃখের বিষয় এই পদ্ধতিটি আমার পক্ষে কার্যকর হয়নি। ওয়েল, অবশ্যই লগ আপডেট হয়ে যায়, কখন থামব জানি না!
গ্যুইনথ ল্লেওলিন

5

আপনার কাছে তিনটি (3) বিকল্প রয়েছে:

বিকল্প 01: স্লেভ থেকে মাস্টারের আরএসএনসি সম্পাদন করুন (মাস্টারটিতে ডাউনটাইম)

  • পদক্ষেপ 01: reset master;মাস্টার চালান (জ্যাপস বাইনারি লগস)
  • পদক্ষেপ 02: service mysql stopমাস্টারের উপর
  • পদক্ষেপ 03: service mysql stopদাসের উপরে
  • পদক্ষেপ 04: মাস্টার থেকে ক্রীতদাসে আরএসসিএনসি / ভার / লিবিব / মাইএসকিএল
  • পদক্ষেপ 05: service mysql startমাস্টার উপর
  • পদক্ষেপ 06: থেকে অনুলিপি শুরু করতে লগ হিসাবে মাস্টারটিতে প্রথম বাইনারি লগ ব্যবহার করুন। সেই লগের ফাইলসাইজটি থেকে পুনরায় প্রতিস্থাপনের অবস্থান হিসাবে ব্যবহার করুন
  • পদক্ষেপ 07: service mysql stop --skip-slave-startদাসের উপরে
  • পদক্ষেপ ৮৮: পদক্ষেপ 06 থেকে নির্ধারিত লগ এবং অবস্থান থেকে অনুলিপি সেটআপ করতে কমান্ডের জন্য মাস্টার চালান
  • পদক্ষেপ 09: দাসটির start slave;উপর দৌড় দিন এবং প্রতিলিপিটি ধরুন

বিকল্প 02: স্লেভ থেকে মাস্টারের আরএসএনসি সম্পাদন করুন (মাস্টারটিতে ন্যূনতম ডাউনটাইম)

  • পদক্ষেপ 01: reset master;মাস্টার চালান (জ্যাপস বাইনারি লগস)
  • পদক্ষেপ 02: service mysql stopদাসের উপরে
  • পদক্ষেপ 03: মাস্টার থেকে ক্রীতদাসে আরএসইএনসি / ভার / লিব / মাইএসকিএল
  • পদক্ষেপ 04: দুটি ধাপে আরএসসিএন একই পরিমাণ সময় না নিয়ে না হওয়া পর্যন্ত পদক্ষেপ 03 পুনরাবৃত্তি করুন
  • পদক্ষেপ 05: service mysql stopমাস্টার উপর
  • পদক্ষেপ 06: মাস্টার থেকে ক্রীতদাসে আরএসইএনসি / ভার / লিব / মাইএসকিএল
  • পদক্ষেপ 07: service mysql startমাস্টারে
  • পদক্ষেপ 08: থেকে অনুলিপি শুরু করতে লগ হিসাবে মাস্টারটিতে প্রথম বাইনারি লগ ব্যবহার করুন। সেই লগের ফাইলসাইজটি থেকে পুনরায় প্রতিস্থাপনের অবস্থান হিসাবে ব্যবহার করুন
  • পদক্ষেপ 09: service mysql stop --skip-slave-startদাসের উপরে
  • পদক্ষেপ 10: লগ এবং অবস্থানটি থেকে স্টেপ 08 থেকে নির্ধারিত প্রতিলিপিটি সেটআপ করতে কমান্ড দিতে মাস্টার চালান
  • পদক্ষেপ 11: দাসটির start slave;উপর দৌড় দিন এবং প্রতিলিপিটি ধরুন

বিকল্প 03: এক্সট্রাব্যাকআপ ব্যবহার করুন

এই সফ্টওয়্যার সরঞ্জামটি কেবল চলমান মাস্টারের একটি অন-বাধা অনুলিপি তৈরি করবে না, তবে এটি আপনার জন্য সংশ্লিষ্ট আইব্লগলগগুলি তৈরি করবে। আপনাকে প্রতিলিপি সেটআপ করতে হবে

আমি এই বিষয়ে আগে স্ট্যাকএক্সচেঞ্জে পোস্ট করেছি

আমি আমার নিয়োগকর্তার ওয়েব হোস্টিং সংস্থার জন্য এই জিনিসগুলি বহুবার করেছি। এক ক্লায়েন্টের স্থানান্তর করতে 3.7TB ছিল এবং এতে প্রায় 16 ঘন্টা লেগেছিল। তুলনায় তুলনায় 64 জিবি খুব ছোট।


অপশন 02 পদক্ষেপ 05 এ আপনি মাস্টার শুরু করতে বলেছেন। কখন থামানো হয়েছিল? একটি লাইভ মাস্টার উপর Rsync সাহসী হয়। আমি অভিভূত. এবং ভাগ্যক্রমে আমি ইনডোডবি_ফাইলে_ টেবিলটি ব্যবহার করছি। তবে শেষ পর্যন্ত আপনাকে বুলেটটি কামড়তে হবে এবং প্রতিলিপি শুরু করার আগে মাস্টারটিকে একটি চূড়ান্ত আরএসসিএনসি চালানোর জন্য যথেষ্ট দীর্ঘ করতে হবে। এটাই সম্ভবত আমি অবলম্বন করতে পারি তবে এটি একটি খুব সক্রিয় ডিবিএমএস। এবং আমি আমার তথ্যের জন্য এক্সট্রাব্যাকআপটি দেখব।
IcarusNM

@ আইকারাসএনএম: আহ, টাইপো আমি এটা সংশোধন করেছি। ধন্যবাদ !!!
রোল্যান্ডোমাইএসকিউএলডিবিএ

বিকল্প 02 সম্ভবত এখনও কিছু কাজ ব্যবহার করতে পারে। উদাহরণস্বরূপ আপনার প্রথম ধাপ 1 এর আগে পদক্ষেপ 2 করা উচিত You আপনি সম্ভবত সেখানে কোথাও একটি রিসেট স্লেভ চান। পদক্ষেপ 4 এ টাইপ করুন এবং আপনি 5 ধাপে "প্রথম বাইনারি লগ" বলছেন তবে আপনি সত্যই "কেবল" বা "শেষ" বাইনারি লগ বোঝাচ্ছেন। এবং আপনার ফাইলের আকার নয় লগ অবস্থানগুলি নির্ধারণ করতে mysqlbinlog ব্যবহার করা উচিত। এবং যদি আপনি কোনও পর্যায়ে মাস্টারকে থামান না তবে এগুলি এখনও কাজ করবে না। যখন একটি RSSync সমাপ্ত হয় তখন লগ পজিশন / সময়কে বেআইনী করা সর্বোত্তম ঝুঁকিপূর্ণ।
IcarusNM

আমি গত 4 বছর ধরে ডিবি হোস্টিং ক্লায়েন্টদের সাথে টেরাবাইট রেঞ্জের ডেটা রয়েছে বলে বিকল্প 2 করছি। এটি চলমান সার্ভারের বিরুদ্ধে প্রতিবার কাজ করে। একমাত্র আসল ভুল আপনি করতে পারেন দাস। অনুলিপিটি সঠিকভাবে সেটআপ করা হয়েছিল কিনা সে ক্ষেত্রে সেই ভুল হবে। অতিরিক্তভাবে, RESET SLAVEদরকারী, বিশেষত যদি আপনি অনেক জিবি রিলে লগগুলি পাইল করেন। আরএসসিএনসি প্রক্রিয়া এবং পুনরায় প্রতিস্থাপনের পরে, দয়া করে মনে রাখবেন পরিবর্তন মাস্টার টু কমান্ডটি আপনার জন্য রিলে লগগুলিও মুছে ফেলবে।
RolandoMySQLDBA

মিমি ... অদ্ভুত। আমি xtrabackup (সর্বদা হিসাবে) ব্যবহার করে আমার দাসটি সেট আপ করেছি এবং এখনও এই লগ ত্রুটিগুলি পেয়েছি (পারকোনা মাইএসকিএল 5.5.x) ... মনে হয় এই দাসটিতে কিছু ভুল হয়েছে এবং আমাকে আবার এটি করতে হবে।
14:56

2

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

সুতরাং পুরানো ড্রপিংয়ের সময় এবং MAXVALUE পার্টিশনের পুনর্গঠন (শেষটি) ব্যবহার করার সময়, এটি নতুন ফাইলগুলি তৈরি করবে যারা ঠিক আছে, তাই আমি কম এবং কম সতর্কতা পেয়েছি। গড় সময়ে, এটি লগ সিকোয়েন্স কাউন্টারকে বাড়িয়ে তুলতে সহায়তা করে, সুতরাং আমার বোগাস ডেটা toোকানোর দরকার নেই। আমি একটি মাস্টার সার্ভার বিটিডব্লিউতে এটি ঘটছি ...

তাই এটা:

ALTER TABLE Events DROP PARTITION p1530 , p1535 , p1540 , p1545 , 
p1550, p1555 , p1560 , p1565 , p1570 , p1575 , p1580 , p1585 , p1590 , 
p1595 , p1600 , p1605 , p1610 , p1615 , p1620 , p1625 , p1630 , p1635 , 
p1640 , p1645 , p1650 , p1655 , p1660 , p1665 , p1670 , p1675 , p1680 , 
p1685 , p1690 , p1695 , p1700 , p1705 , p1710 , p1715 , p1720 , p1725 , 
p1730 , p1735 , p1740 , p1745 , p1750 , p1755 , p1760 , p1765 , p1770 , 
p1775 , p1780 , p1785 , p1790 , p1795 , p1800 , p1805 , p1810 , p1815 , 
p1820 , p1825 , p1830 , p1835 , p1840;

এবং এই:

ALTER table Events REORGANIZE PARTITION p3000 INTO (
PARTITION p3500 VALUES LESS THAN (TO_DAYS('2013-01-01')),
PARTITION p3510 VALUES LESS THAN (TO_DAYS('2013-01-04')),
PARTITION p3520 VALUES LESS THAN (TO_DAYS('2013-01-07')),
PARTITION p3530 VALUES LESS THAN (TO_DAYS('2013-01-10'))
...
PARTITION p4740 VALUES LESS THAN (TO_DAYS('2014-01-08')),
PARTITION p9000 VALUES LESS THAN MAXVALUE)

এটি কার্যকরভাবে পরিবর্তনের ক্ষেত্রে প্রতিটি বিভাজন ফেলে দেবে এবং সেখানে যা ছিল তার সামগ্রীর টেম্পুলিপি সহ এটি পুনরায় তৈরি করবে। আপনি যদি চান তবে আপনি প্রতি টেবিলটি এটি করতে পারেন, আমার অ্যাপ্লিকেশনটি এটি হতে দেয়, তাই সিঙ্ক হওয়া ব্যাকআপগুলি নিয়ে চিন্তা করার দরকার নেই etc.

টেবিলের বাকী অংশগুলির জন্য, যেহেতু আমি প্রক্রিয়াটিতে সমস্ত পার্টিশন স্পর্শ করি নি কিছু লগ সিকোয়েন্স সতর্কতা দিয়ে রেখে দেওয়া হবে, যারা ভাঙা হয়েছে এবং এই পুনর্গঠিত ক্রিয়াকলাপ দ্বারা আচ্ছাদিত আমি সম্ভবত এটি চালাব:

ALTER TABLE Events REBUILD PARTITION p0, p1;

বা যে

ALTER TABLE Events OPTIMIZE PARTITION p0, p1;

সুতরাং, এটি আমাকে ভাবতে পেরেছিল, আপনি এটি সরল ভ্যানিলা টেবিলগুলি দিয়ে করতে পারেন, হ্যাশ দ্বারা অস্থায়ী পার্টিশন যুক্ত করতে পারেন এবং পরে এটি মুছে ফেলুন (বা এগুলি রাখুন, আমি দৃ strongly়ভাবে পার্টিশনের প্রস্তাব দিতে পারি)।

আমি মারিয়াডবি ব্যবহার করছি তবে মাইএসকিএল নয় (তাই এক্সট্রাডিবি)

সম্ভবত এটি কাউকে সাহায্য করে। আমি এখনও এটি চালিয়ে যাচ্ছি, এতদূর ভাল। ইঞ্জিন পরিবর্তন করা কাজটিও মনে হচ্ছে, তাই আমি মাইআইসাম এবং তাদের মাঝে ইনোডিবিতে ফিরিয়ে আনা / আনতে পারি।

এটি মোটামুটি যৌক্তিক, আপনি ইঞ্জিন পরিবর্তন করলে, টেবিলটি ইনডোডাব থেকে অদৃশ্য হয়ে যায়, সুতরাং এটি আর সমস্যা হবে না।

ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;

এটা এখানে কাজ বলে মনে হচ্ছে। আমি পার্টিশনযুক্ত টেবিলগুলিতে কয়েকটি জিনিস নিশ্চিত করতে পারি:

  • ALTER TABLE xyz ENGINE = InnoDB খুব আস্তে আরিয়া (মারিয়্যাডবি) থেকে দ্বিগুণ দ্রুত, তবে সাধারণভাবে লগ সিকোয়েন্স কাউন্টারকে বাড়ানোর ধীর গতিতে
  • টেবিলগুলি 'ফিক্স' করতে এবং কাউন্টারকে বাড়ানোর ক্ষেত্রে দ্রুততম টেস্টে জাইজেড পুনরায় বিল্ডিং অংশগুলি হ'ল
  • টেবিল xyz অ্যানালাইজ পার্টিশন সমস্ত পূর্বের সাথে ধীরে ধীরে তুলনা করা হয় এবং ঠিক আছে কিনা তা পরীক্ষা করে এমন পার্টিশনগুলি পুনরায় লিখন করে না। পুনরায় বিল্ডিং একটি টেম্প টেবিল স্কিমাতে পুনর্লিখনের আশ্বাস দেয়।

আমি বেশ কয়েকটি টেবিলে শেষগুলি ব্যবহার করেছি। সতর্কতাগুলি ঘটে যখন এটি ফাইলগুলি খোলার চেষ্টা করা হচ্ছে এবং প্রতি বিভাজন সংজ্ঞায় এটির জন্য একটি পাল্টা সমস্যা রয়েছে। প্রায় শেষ টেবিলের জন্য আজ কাউন্টারে প্রায় ঘূর্ণিত। আমি মনে করি এটি একবারে সমস্ত প্রক্রিয়াজাত করা উচিত বাইনারি লগগুলি ফ্লাশ করা প্রয়োজন।

আপডেট : আমি এখন এই সমস্যাটি সমাধান করতে সক্ষম হয়ে কয়েকটি জিনিস উপস্থাপন করতে পারি।

  • আমার ক্র্যাশটি আরিয়া ফর্ম্যাটে (মারিয়াডিবি) একটি টেবিলে পার্টিশনগুলি পুনর্গঠিত করার কারণে ঘটেছিল।
  • (আমার জন্য) পার্টিশনগুলির পুনর্নির্মাণ করা সিকোয়েন্স কাউন্টারটি পেতে সেরা এবং দ্রুততম কাজ করেছে। ইঞ্জিনটি পরিবর্তন করা ধীর গতির এবং আপনাকে ইনডোডাবকে প্রভাবিত করতে দুবার এটি করতে হবে। মাইআইসাম বা আরিয়ার তুলনায় নির্দোষ ডিবিতে পরিবর্তন করা বেশ ধীর।
  • আমি মারিয়াডিবি 5.3 তে আপগ্রেড করেছি এবং 5.5 এ ছিল না (যা ছিল: 5.2) এবং এটি দুর্দান্ত কাজ করে। আমি মনে করি যে এরিয়া নিয়ে অনেকগুলি সমস্যা রয়েছে, এই সংমিশ্রণটি ব্যবহার করার জন্য 5.5 (এবং কনফিগার হওয়া বাগ) এর পার্টিশন রয়েছে।
  • লগ সিকোয়েন্স কাউন্টারটি রিসেট করার সত্যিই আরও ভাল উপায় হওয়া উচিত।

মারিয়াডিবি-র অধীনে, আপনি দ্রুত USE INFORMATION_SCHEMA; SELECT CONCAT("ALTER TABLE `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` REBUILD PARTITION ALL;") AS MySQLCMD AS MySQLCMD FROM TABLES;(উত্স: dba.stackexchange.com/questions/35073/… ) ব্যবহার করে সমস্ত সারণী পরিবর্তন করতে পারেন এবং একটি ফাইলকে এটি কমান্ডের একটি সিরিজ হিসাবে সম্পাদন করতে টি করতে পারেন।
গ্যুইনথ ল্লেওলিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.