সেকেন্ডস_বিহিন্ড_মাস্টার সত্যই সময় ভ্রমণের মাধ্যমে অতীত দেখার মতো।
এই ভাবে চিন্তা করুন:
- সূর্য পৃথিবী থেকে 93,000,000 মাইল দূরে
- আলোর গতি 186,000 মাইল / সেকেন্ড
- সাধারণ বিভাগ দেখায় যে সূর্যের আলো পৃথিবীতে পৌঁছতে প্রায় 500 সেকেন্ড (8 মিনিট 20 সেকেন্ড) লাগে
- আপনি যখন সূর্যের দিকে তাকান, আপনি আসলে সূর্যকে দেখেন না আপনি দেখতে পাবেন যেখানে এটি সেকেন্ডে 8 মিনিট আগে ছিল।
একইভাবে, মনে হয় যে মাস্টার একই সাথে প্রচুর প্রশ্নগুলি প্রক্রিয়া করছেন।
আপনি স্লেভের দিকে ফিরে তাকান, চালান SHOW SLAVE STATUS\G
এবং এটি 200 এর জন্য বলে Seconds_Behind_Master
। কিভাবে এই সংখ্যা গণনা করা হয়? স্লেভের ক্লক টাইম (ইউনিক্সটাইমস্ট্যাম্প (এখন)) - কোয়েরির টাইমস্ট্যাম্পটি শেষ হয়ে গেলে এবং মাস্টার্স বাইনারি লগে রেকর্ড করা হয়।
পাশাপাশি দেখার জন্য আরও একটি মেট্রিক রয়েছে Seconds_Behind_Master
। সেই মেট্রিককে বলা হয় Relay_Log_Space
। এটি স্লেভের সমস্ত রিলে ফাইলগুলির জন্য সমস্ত বাইটের যোগফল উপস্থাপন করে। ডিফল্টরূপে, বৃহত্তম একক রিলে লগটি 1GB এর মধ্যে সীমাবদ্ধ। যদি Relay_Log_Space
1 জিবি এর চেয়ে কম হয়, তবে এটি সূচিত করে যে বহু দীর্ঘস্থায়ী ক্যোয়ারী সমান্তরালভাবে মাস্টারের উপর সম্পাদিত হয়েছিল। দুর্ভাগ্যক্রমে, একক থ্রেডযুক্ত প্রকৃতির প্রতিরূপের এসকিউএল থ্রেডের কারণে কোয়েরিগুলি অন্যের পিছনে কার্যকর করা হয়।
উদাহরণস্বরূপ, ধরুন আপনি মাস্টার সম্পর্কে নিম্নলিখিত পরিস্থিতি আছে:
- ধীর ক্যোয়ারী লগ সক্ষম হয়েছে
- মাস্টারকে সমান্তরালভাবে সম্পাদিত 20 টি কোয়েরি
- প্রতিটি ক্যোয়ারিতে 3 সেকেন্ড সময় নিয়েছিল
- প্রতিটি ক্যোয়ারী একই টাইমস্ট্যাম্পের সাথে মাস্টার বাইনারি লগ-এ রেকর্ড করা হয়
স্লেভ যখন তার রিলে লগ থেকে এই প্রশ্নগুলি পড়ে এবং একে একে একে প্রক্রিয়া করে
- স্লেভের ঘড়িটি চলবে
- 20 টি প্রশ্নের প্রত্যেকের জন্য টাইমস্ট্যাম্প অভিন্ন হবে
- পার্থক্যটি 3 সেকেন্ডে বাড়বে কোয়েরি সম্পূর্ণ হবে
- 60 সেকেন্ডের জন্য এই ফলাফল
Seconds_Behind_Master
স্লো লগ সম্পর্কিত, লং_কোয়ারি_টাইমের জন্য ডিফল্টটি 10 সেকেন্ড। রিলে লগগুলিতে যদি আপনার সমস্ত প্রশ্নগুলি 10 সেকেন্ডের চেয়ে কম হয় তবে আপনি স্লো কোয়েরি লগটিতে কখনই কিছু পাবেন না।
আমার কাছে মাস্টার এবং স্লেভ সার্ভার উভয়ের জন্য নিম্নলিখিত প্রস্তাবনা রয়েছে
- প্রস্তাবনা # 1 : মাইএসকিউএল 5.5 এ আপগ্রেড করুন । মাইএসকিউএল 5.5 এবং পারকোনা সার্ভার 5.1.38+ এর অধীনে, আপনি একাধিক সিপিইউ অ্যাক্সেস করতে ইনোডিবি টিউন করতে পারেন। আমি এই সম্পর্কে অতীত পোস্ট লিখেছি
- প্রস্তাবনা # 2 : সমস্ত টেবিলের জন্য InnoDB ব্যবহার করুন । ইনোডিবি র্যামে ডেটা এবং সূচিগুলি ক্যাশে করে, মাইআইএসএএম কেবল সূচিগুলিকে ক্যাশে করে।
- প্রস্তাবনা # 3 : র্যাম বাড়ান । আপনার অবশ্যই স্লেভ এবং মাস্টারগুলিতে আরও ডেটা এবং সূচিগুলি ক্যাশে করতে হবে
- প্রস্তাবনা # 4 : সমস্ত প্রশ্নের টিউন করুন। কয়েকশো বার চালিত ক্যোয়ারি থেকে মিলিসেকেন্ড হ্রাস করা হ্রাস করতে অনেক বেশি এগিয়ে যায়
Seconds_Behind_Master
।
আরও ট্রূবলশূটিং
আপনি যদি পুনর্বিবেচনার পিছনে কোয়েরি দেখতে চান তবে নিম্নলিখিতটি করুন:
SHOW SLAVE STATUS\G
- রিলে লগের নাম পান
Relay_Log_File
STOP SLAVE;
START SLAVE;
- ওএসে
cd /var/lib/mysql
বা যেখানেই রিলে লগ লেখা থাকে
- পাঠ্য ফাইলে রিলে লগটি ডাম্প করুন
উদাহরণস্বরূপ, আসুন SHOW SLAVE STATUS\G
Slave_IO_State: Waiting for master to send event
Master_Host: 10.64.51.149
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000009
Read_Master_Log_Pos: 1024035856
Relay_Log_File: relay-bin.000030
Relay_Log_Pos: 794732078
Relay_Master_Log_File: mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB: search_cache
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: 1024035856
Relay_Log_Space: 794732271
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 106451149
যদি আমি চালনা করি STOP SLAVE; START SLAVE;
তবে রিলে লগ বন্ধ হয়ে যায় এবং একটি নতুন খোলা থাকে। তবুও, আপনি চান relay-bin.000030
।
নিম্নলিখিত বিষয়বস্তু ডাম্প:
cd /var/lib/mysql
mysqlbinlog relay-bin.000030 > /root/RelayLogQueries.txt
less /root/RelayLogQueries.txt
স্লেভ বর্তমানে প্রক্রিয়া করার চেষ্টা করছে সেগুলি আপনি এখন দেখতে পাচ্ছেন। আপনি এই প্রশ্নগুলি টিউনিংয়ের সূচনা পয়েন্ট হিসাবে ব্যবহার করতে পারেন।