প্রতিরূপ পরিবেশে বিন লগ মুছে ফেলা হচ্ছে


13

প্রতিরূপ পরিবেশে বাইনারি লগ মুছে ফেলার বিষয়ে আমার একটি প্রশ্ন রয়েছে:

আমাদের সাথে 1 জন মাস্টার এবং 2 ক্রীতদাস রয়েছে (মাইএসকিএল 5.5 চলছে) with কখনও কখনও ভারী প্রক্রিয়াকরণের সময় আমরা একটি স্পেস সমস্যা নিয়ে চলে যাই, যার মাধ্যমে বিন লগ ডিরেক্টরি পূর্ণ হয়। লগগুলি প্রতি 3 দিন অন্তর শেষ হয়। আমি ভাবছিলাম, লগগুলি সমস্ত বাক্সে 3 দিনের জন্য রাখা উচিত - মাস্টার এবং উভয় দাস? উদাহরণস্বরূপ, কোনও মাস্টারের জন্য 3 দিনের জন্য লগ রাখা, তবে দাসদের জন্য 1 দিনের জন্য এটি কী বোঝায়? এটি সম্পর্কে সবচেয়ে ভাল উপায় কি?

ধন্যবাদ!


ডিবিএ.এসই তে স্বাগতম এই প্রশ্নটি একটি +1 এর প্রাপ্য কারণ বাইনারি লগ এবং রিলে লগের বিকাশ প্রায়শই মঞ্জুর করা হয়, এবং যদি চেক না করা থাকে তবে উত্স অনেক সমস্যার কারণ হতে পারে।
রোল্যান্ডোমাইএসকিউএলডিবিএ

উত্তর:


12

দাস

যদি আপনার স্ল্যাভগুলি মাস্টার না হয় তবে স্লেভদের মোটেই বাইনারি লগিংয়ের দরকার নেই। আপনি স্লেভ দ্বারা জমে থাকা রিলে লগ স্পেসের পরিমাণে একটি ক্যাপ লাগাতে পারেন। 4 জি-তে রিলে লগগুলি থ্রোটল করার জন্য, relay_log_space_limitপ্রতিটি স্ল্যাভে /etc/my/.cnf যুক্ত করুন

[mysqld]
relay_log_space_limit=4G

এবং mysql পুনরায় আরম্ভ করুন

যদি আপনি এটি সেট করতে না পারেন তবে কমপক্ষে আপনার কাছে এমন এক ধরণের সতর্কতা থাকা উচিত যা SHOW SLAVE STATUS\Gকিনা Relay_Log_Space(রিলে লগ দ্বারা ব্যবহৃত মোট বাইট) মূল্য দেয় এবং পরীক্ষা করে ।

শ্রীরামকৃষ্ণ

মাস্টার হিসাবে, আপনি expire_logs_days1 এ সেট করতে পারেন তবে আপনার জন্য আমার কাছে একটি কঠোর সতর্কতা রয়েছে ...

যদি প্রতিলিপি বিরতি দেয়, আপনার এটি ঠিক করার জন্য আপনার 1 দিন রয়েছে। অন্যথায়, মাস্টারের একটি বাইনারি লগটি ঘোরানো হতে পারে এবং প্রতিলিপি পুনরুদ্ধার করতে আপনি কোনও পরিবর্তন মাস্টার চালাতে পারবেন না। আমি expire_logs_daysমাস্টার উপর 3 এ চলে যেতে হবে ।

পরামর্শ # 1

আপনার যদি রাতারাতি বাল্ক প্রসেসিং করতে থাকে SET SQL_LOG_BIN=0;তবে সেশন শুরু করার সাথে সাথে মাস্টারটিতে বাল্ক প্রক্রিয়া চালানো উচিত । এটি অবশ্যই স্লেভের প্রতিলিপি তৈরি করবে না। আপনি উভয় স্লেভের সমান্তরালে একই বাল্ক লোড সম্পাদন করতে পারেন।

পরামর্শ # 2

মাস্টার বাইনারি লগগুলি সংগ্রহের জন্য আপনি যা করতে পারেন তা হ'ল এটি।

SHOW SLAVE STATUS\Gউভয় দাস চালান । তাকান Relay_Master_Log_File। এটি মাস্টারের বাইনারি লগ উপস্থাপন করে যার শেষ কমান্ড স্লেভের উপর কার্যকর হয়েছিল।

*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 10.4.92.250
                Master_User: replicant
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysql-bin.009677
        Read_Master_Log_Pos: 855227755
             Relay_Log_File: relay-bin.000674
              Relay_Log_Pos: 757296783
      Relay_Master_Log_File: mysql-bin.009590
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
            Replicate_Do_DB:
        Replicate_Ignore_DB:
         Replicate_Do_Table:
     Replicate_Ignore_Table:
    Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
                 Last_Errno: 0
                 Last_Error:
               Skip_Counter: 0
        Exec_Master_Log_Pos: 757296646
            Relay_Log_Space: 94274010765
            Until_Condition: None
             Until_Log_File:
              Until_Log_Pos: 0
         Master_SSL_Allowed: No
         Master_SSL_CA_File:
         Master_SSL_CA_Path:
            Master_SSL_Cert:
          Master_SSL_Cipher:
             Master_SSL_Key:
      Seconds_Behind_Master: 80561
1 row in set (0.00 sec)

এই উদাহরণে, রিলে_মাস্টার_লগ_ফाइलটি মাইএসকিএল-বিন.009590। এর আগে সমস্ত বাইনারি লগগুলি মাস্টার থেকে সরানো যায়। আপনি মাস্টার এ চালাতে পারেন:

PURGE BINARY LOGS TO 'mysql-bin.009590';

এটি পুরানো লগগুলি মুছে ফেলবে এবং কৌশলগুলিতে এখনও প্রতিলিপি রেখে দেবে।

বিচারকার্য স্থগিত রাখার আদেশ

বাইনারি লগগুলি এমন ফাইলগুলি হয় যেগুলি সিরিয়ালি সংকলিত হয় (কোনও ফিফোর কাতারের মতো) সমস্ত সম্পূর্ণ এসকিউএল লেনদেনকে এসকিউএল বিবৃতি বা একটি সারি পরিবর্তন হিসাবে হয়। রিলে লগ এমন একটি ফাইল যা দূরবর্তী সার্ভার (ওরফে মাস্টার) থেকে বাইনারি লগ এন্ট্রি সংগ্রহ করে।

মাইএসকিউএল প্রতিরূপে

  1. মাস্টার অবশ্যই এর বাইনারি লগ সক্ষম থাকতে হবে
  2. স্লেভ রিলে লগগুলি সংকলন করে
  3. রিলে লগে সমস্ত এসকিউএল প্রক্রিয়া করা হয়, এটি মুছে ফেলা হয়
  4. একটি স্লেভে, যখন কোনও ডিবি সার্ভারে আরও বেশি রিলে লগ থাকে, এটি ইঙ্গিত করতে পারে যে প্রতিলিপি পিছনে পড়েছে কারণ আইও থ্রেড একটি মাস্টার থেকে এসকিউএল সংগ্রহ করছে যে এসকিউএল থ্রেড রিলে লগগুলি প্রসেস করতে পারে।
  5. রিলে_লগ_স্পেস_লিমিট ব্যবহার করে অনুলিপিটিকে পাইলিং করা এবং সম্ভাব্যত ডিস্কটি পূরণ করা থেকে বিরত করে। নিয়ম # 3 এর উপর ভিত্তি করে রিলে লগগুলি আবর্তিত হয়
  6. কোনও ডিবি সার্ভারের পক্ষে উভয়ই মাস্টার এবং স্লেভ হওয়া সম্ভব। এটিই একমাত্র পরিস্থিতিতে যার অধীনে স্লেভের অবশ্যই বাইনারি লগ সক্ষম থাকতে হবে। সেই দৃশ্যে, একটি ডিবি সার্ভারে বাইনারি লগ এবং রিলে লগ উভয়ই থাকবে।

যদি আপনি কোনও দাসের কাছে ব্যর্থ হন এবং আপনি এটিকে মাস্টার বানাতে চান

  • পরিষেবা mysql স্টপ
  • যোগ log-bin=mysql-binস্লেভ উপর /etc/my.cnf করতে
  • পরিষেবা mysql শুরু

আপনাকে স্লোভের ডেটা সদ্য প্রচারিত মাস্টারের কাছে সেটআপ করতে হবে এবং স্ল্যাভের ডেটা সদ্য প্রচারিত মাস্টারের সাথে মিলেছে কিনা তা নিশ্চিত করতে হবে

আপডেট 2012-08-13 17:47 ইডিটি

মাইএসকিউএল ডকুমেন্টেশন অন relay-logঅপশন অনুযায়ী আপনার এটি সংজ্ঞায়িত করা উচিত। এখানে কেন:

মাইএসকিউএল সার্ভার অপশনকে যে পদ্ধতিতে পার্স করে সেই কারণে, আপনি যদি এই বিকল্পটি নির্দিষ্ট করে থাকেন তবে আপনাকে অবশ্যই একটি মান সরবরাহ করতে হবে; ডিফল্ট বেসনামটি কেবল তখনই ব্যবহৃত হয় যখন বিকল্পটি সুনির্দিষ্টভাবে নির্দিষ্ট না করা হয়। যদি আপনি কোনও মান উল্লেখ না করে --relay-log অপশনটি ব্যবহার করেন তবে অপ্রত্যাশিত আচরণের ফলস্বরূপ; এই আচরণটি অন্যান্য ব্যবহৃত বিকল্পগুলির উপর নির্ভর করে, তারা নির্দিষ্ট করা ক্রমে এবং কমান্ড লাইনে বা কোনও বিকল্প ফাইলে সেগুলি নির্দিষ্ট করা আছে file মাইএসকিউএল কীভাবে সার্ভার বিকল্পগুলি পরিচালনা করে সে সম্পর্কে আরও তথ্যের জন্য বিভাগ 4.2.3, "প্রোগ্রাম বিকল্পগুলি নির্দিষ্ট করে" দেখুন।


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