মাইএসকিউএল বিন লগ ফাইলগুলি কেন খালি বা ফ্লাশের পরে বিদ্যমান?


12

আমি পূর্বে বিনারি লগগুলি পাশাপাশি ফ্লাশ লগগুলি ব্যবহার করেছি, তবে মাইএসকিএল ডিরেক্টরিটিতে এখনও এই ফাইলগুলি রয়েছে:

mysql-bin.000025
mysql-bin.000024
mysql-bin.000023
mysql-bin.000022
mysql-bin.000021
mysql-bin.000020
mysql-bin.000019
mysql-bin.index

কমান্ডগুলি ব্যবহার না করে কেন কাজ করার কোনও কারণ আছে? এই ফাইলগুলি অনেক জায়গা নিচ্ছে। আমি নিরাপদে এগুলি থেকে মুক্তি পেতে চাই।

উত্তর:


10

PURGE BINARY LOGSবিবৃতি নির্দিষ্ট লগ ফাইলের নাম বা টাইমস্ট্যাম্প পূর্বে লগ সূচক ফাইলে উল্লিখিত সব বাইনারি লগ ফাইল মুছে ফেলা হবে। মুছে ফেলা লগ ফাইলগুলিও সূচী ফাইলটিতে রেকর্ড করা তালিকা থেকে সরানো হয়, যাতে প্রদত্ত লগ ফাইল তালিকার প্রথম স্থান হয়।

আমি আশা করি আপনি mysql-bin.000019কমান্ডটি ব্যবহার করে বাইনারি লগগুলি পরিষ্কার করেছেন

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

আপনার যদি প্রয়োজন সমস্ত লগ মুছে ফেলুন

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

এটি বাইনারি লগগুলি অবধি সরিয়ে ফেলবে mysql-bin.000025

হালনাগাদ

আপনি চেষ্টা করতে পারেন

RESET MASTER;

RESET MASTER ইনডেক্স ফাইলে তালিকাভুক্ত সমস্ত বাইনারি লগ ফাইলগুলি মুছে ফেলে, বাইনারি লগ ইনডেক্স ফাইলটি ফাঁকা হয়ে পুনরায় সেট করে এবং একটি নতুন বাইনারি লগ ফাইল তৈরি করে

প্রভাবগুলি RESET MASTERদুটি মূল উপায়ে PURGE BINARY LOGS এর থেকে পৃথক:

  1. RESET MASTER সূচী ফাইলে তালিকাভুক্ত সমস্ত বাইনারি লগ ফাইলগুলি সরিয়ে দেয়, কেবলমাত্র একটি একক, খালি বাইনারি লগ ফাইলটিকে .000001 এর সংখ্যাসূচক প্রত্যয় সহ রেখে যায়, যেখানে নম্বরটি বিন্যারি লগ দ্বারা নম্বরটি পুনরায় সেট করা হয় না।

  2. RESET MASTERকোনও প্রতিলিপি দাস চলমান অবস্থায় ব্যবহার করার উদ্দেশ্যে নয়। আচরণকে RESET MASTERযখন ব্যবহৃত যখন ক্রীতদাসদের দৌড়াচ্ছে অনির্ধারিত (এবং এইভাবে অসমর্থিত) হল, যেহেতু PURGE BINARY LOGSনিরাপদে ব্যবহার করা যেতে পারে যখন রেপ্লিকেশন ক্রীতদাসদের দৌড়াচ্ছে।

রোল্যান্ডোমাইএসকিউএলডিবিএ দ্বারা কভেট

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

  • SHOW SLAVE STATUS\Gপ্রতিটি স্লেভ চালান ।
  • নোট নিন Relay_Master_Log_File। এটি বাইনারি লগ যার সর্বশেষ বিবৃতিটি স্লেভে সফলভাবে কার্যকর করা হয়েছিল)।
  • সমস্ত প্রদর্শন থেকে SHOW SLAVE STATUS\G, Relay_Master_Log_Fileকোনটি সবচেয়ে পুরনো তা নির্ধারণ করুন (উদাহরণস্বরূপ, 'mysql-bin.00123')।
  • আপনি চালাতে পারেন PURGE BINARY LOGS TO 'mysql-bin.00123';কোনও দাসের জায়গা হারাবে না।

সামগ্রিক প্রভাব? এটি মাস্টারের বাইনারি লগগুলি ফেলে রাখবে যার বিবৃতি যা এখনও পর্যন্ত সমস্ত স্লেভের উপর কার্যকর করা হয়নি।


হ্যাঁ. আমি এই চেষ্টা করেছি। কাজ করছে না.
lamp_scaler

'মাইএসকিএল-বিন.000025' এ বিয়ারি লগ করুন; আপনি যখন এটি চালান ত্রুটি কি।
আব্দুল মানাফ

হ্যাঁ. আমি এই চেষ্টা করেছি। কাজ করছে না.
lamp_scaler

আমি আমার উত্তর আপডেট করেছি You আপনি পুনরায় মাস্টার চেষ্টা করতে পারেন।
আব্দুল মানাফ

1
@ ydaetskcoR না, আমি সত্যিই সবচেয়ে প্রাচীন বলতে চাইছি। আমাকে স্পষ্ট করতে দাও: যদি কোনও সময়ে আপনি চালনা করেন তবে CHANGE MASTER TOএটি সমস্ত রিলে লগগুলি মুছে দেয়। যদি Relay_Master_Log_fileতা হয় mysql-bin.00123তবে স্ল্যাভ সম্পর্কে জানা সেই মাস্টারটির মধ্যে এটি প্রাচীনতম বাইনারি লগ। যদি mysql-bin.00123মাস্টারটিতে আর উপস্থিত না থাকে CHANGE MASTER TOতবে স্ল্যাভটিতে এমন কোনও চালান যা নতুন লগগুলিকে রেফারেন্স দেয় না আপনি তার থেকে প্রতিলিপি তৈরির উপযুক্ত জায়গাটি হারাতে পারেন । এটি সহজেই উপেক্ষা করা যেতে পারে এবং আপনি নিজেই প্রতিলিপি ভঙ্গ করতে পারেন।
রোল্যান্ডোমাইএসকিউএলডিবিএ

5

আপনার সাথে এটি ঘটেছে কিনা তা আমি নিশ্চিত নই তবে আমার ক্ষেত্রে মাইএসকিউএল "সাইক্লিং" লগগুলি বন্ধ করে দিয়েছিল এবং মাইএসকিএল-বিন.ইন্ডেক্স ফাইলটি অবৈধ বিনলগ ফাইল এন্ট্রি দিয়ে "দূষিত" হয়ে গেছে।

বিশেষত, ইনডেক্স ফাইলটি mysql-bin.000001 এ শুরু হয়েছিল এবং mysql-bin.000220 এ গিয়েছিল তবে তারপরে আবার 001 থেকে আবার শুরু হয়েছিল I যখন আমি এটি আমার সার্ভারের ফাইলগুলির সাথে তুলনা করেছি তখন আমি দেখতে পাচ্ছি যে আমার কাছে ফাইলগুলি ২০০1 থেকে শুরু হয়েছে had 022।

প্রথমে চেষ্টা PURGE LOGS TO 'mysql-bin.000022';করেছি কিন্তু কাজ হয়নি।

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


1
... এবং এভাবেই আপনি মাইএসকিউএল এর লগ রোটেশন আপনার হাতকে নোংরা করে ফেলছেন। যদিও এটি খুব বিরল ঘটনা। আমি এটা করতে হয়েছে। মজার বিষয় হ'ল, PURGE LOGSকেবলমাত্র আদর্শ সেটআপের আওতায় কাজ করে: 1) যখন সমস্ত বাইনারি লগগুলি ধারাবাহিকভাবে থাকে, 2) সমস্ত বাইনারি লগগুলি mysql-bin.indexফাইলটিতে নামকরণ করা হয় , 3) অতিরিক্ত লগগুলি উল্লেখ করা হয়নি mysql-bin.index। +1 !!!
RolandoMySQLDBA

3

আমার ক্ষেত্রে PURGE BINARYকেবল কিছুই মুছে ফেলা হয়নি।

আমার পার্টিশনটি 100% ব্যবহারে ছিল (আমাকে আমার স্লোকোয়ারিজিগুলি কিছুটা সাফ করতে হয়েছিল যাতে মাইএসকিএল পুনরায় চালু করার জন্য পর্যাপ্ত জায়গা ছিল), তাই আমি প্রথম কাজটি করেছিলাম /etc/my.cnfলাইনটি মন্তব্য করা log-bin=mysql-bin(এটির প্রয়োজন ছিল না) এই সার্ভারে আর আমি এটি অপসারণ করতে ভুলে গিয়েছিলাম), এবং তারপরে আমি মাইএসকিএল পুনরায় চালু করেছি (এটি দরকার ছিল কারণ এখানে এমন প্রশ্নের সন্ধান করা হয়েছিল যেগুলি PURGE BINARYকার্যকর করা থেকে বিরত ছিল )।

তার পরে, আমি দৌড়েছি PURGE BINARYকিন্তু কিছুই ঘটেনি। সুতরাং আমি ম্যানুয়ালটি পড়েছি এবং এটি জানতে পেরেছি:

বাইনারি লগিং সক্ষম করার জন্য সার্ভারটি --log-বিন বিকল্পের সাথে শুরু না করা হলে এই বিবৃতিটির কোনও প্রভাব নেই।

সুতরাং আমি log-bin=mysql-binআমার /etc/my.cnfপুনরায় চালু করেছি , পুনরায় চালু করেছি , ফাইলগুলিকে পুনরায় চালু করেছি (এখন সাফল্যের সাথে), আবার লাইনটি মন্তব্য করেছে এবং তারপরে পুনরায় শুরু করেছি। এর পরে ফাইলগুলি সরানো হয়েছিল এবং আর তৈরি করা হয়নি।


2

এটি আমার পক্ষে কাজ করে: (মাইএসকিউএল সার্ভার সংস্করণ: 5.6.14)

PURGE BINARY LOGS BEFORE NOW();

আমার সিস্টেমে সমস্ত বাইনারি লগ সরিয়ে দেয়।


আপনার উত্তর যতক্ষণ বাইনারি লগ এবং বাইনারি লগ সূচক ফাইলগুলি নিখুঁতভাবে সংযুক্ত থাকে ততক্ষণ কাজ করে। এটি কখন কাজ করে না তা দেখতে dba.stackexchange.com/a/74498/877 উত্তরটি দেখুন । আপনার উত্তরটি এখনও একটি +1 পায় !!!
রোল্যান্ডোমাইএসকিউএলডিবিএ

0

আপনি সহজেই এর সাথে সমস্ত লগ মুছতে পারেন :

PURGE BINARY LOGS BEFORE NOW();

বা কোটনে যে কোনও তারিখের মাধ্যমে এখনই ফানক প্রতিস্থাপন করুন:

PURGE BINARY LOGS BEFORE '2018-02-15 00:00:00';

অথবা আপনি expire_logs_days = 10my.cnf এ এই ক্রিয়াটি স্বয়ংক্রিয় করতে পারেন । ডিফল্টরূপে expire_logs_days হয় 0 = না ডিলিট লগ।

( উত্স )

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