প্রথমে আপনাকে এই কোয়েরিটি চালানো দরকার:
SELECT user,host FROM mysql.user
WHERE super_priv='Y' AND
CONCAT(user,'@',host) <> 'root@localhost';
এটি এমন সমস্ত ব্যবহারকারীদের তালিকাভুক্ত করবে যার কাছে সুপারের অধিকার রয়েছে । অ্যাপ্লিকেশন-সম্পর্কিত ডিবি প্রসেসিং করে এমন বেশিরভাগ ব্যবহারকারীদের এই বিশেষাধিকারের প্রয়োজন হয় না। মাইএসকিউএল ডকুমেন্টেশন অনুসারে , সুপারের অধিকারী ব্যক্তিরা নিম্নলিখিতগুলি করতে পারেন:
- প্রতিলিপি স্থানাঙ্কগুলি নিয়ন্ত্রণের জন্য মাস্টার পরিবর্তন করুন
mysqladmin kill
কিল করুন বা অন্য অ্যাকাউন্টগুলির সাথে থাকা থ্রেডগুলি হত্যা করুন
- বাইনারি লগগুলি সিস্টেমিকভাবে মোছার জন্য বিনয়ের লগগুলি জুড়ুন
- গ্লোবাল সিস্টেম ভেরিয়েবলগুলি সংশোধন করতে SET GLOBAL ব্যবহার করে কনফিগারেশন পরিবর্তন করুন
- mysqladmin ডিবাগ কমান্ড
- লগিং সক্ষম বা অক্ষম করা
- * পঠিত_আপনি * সিস্টেমের ভেরিয়েবল সক্ষম থাকলেও আপডেটগুলি সম্পাদন করে
- দাস সার্ভারগুলিতে প্রতিলিপি শুরু এবং বন্ধ করা হচ্ছে
- সঞ্চিত প্রোগ্রাম এবং দর্শনগুলির ডিফলার বৈশিষ্ট্যে কোনও অ্যাকাউন্টের স্পেসিফিকেশন
- এখানে আপনার সমস্যা জন্য সবচেয়ে গুরুত্বপূর্ণ এগুলির মধ্যে একটি: : সংযোগ স্থাপন করতে (একবার) এমনকি যদি সংযোগ সীমা দ্বারা নিয়ন্ত্রিত আপনি সক্ষম max_connections সিস্টেম ভেরিয়েবল উপনিত।
আপনাকে রুট @ লোকালহোস্ট হিসাবে লগইন করতে হবে এবং নীচে সুপারের সুবিধাগুলি প্রত্যাহার করতে হবে:
UPDATE mysql.user SET super_priv='N'
WHERE super_priv='Y' AND
CONCAT(user,'@',host) <> 'root@localhost';
FLUSH PRIVILEGES;
একবার আপনি এটি করেন, যখনই সমস্ত ব্যবহারকারী মাইএসকিএল সংযোগগুলি বন্যা করে কেবল root@localhost
লগইন করতে পারেন। সর্বোপরি, যদি প্রত্যেকে এবং তার ঠাকুরমার কাছে যদি বিশেষ সুযোগ থাকে তবে এটি root@localhost
অন্য সবার সাথে সংযোগ স্থাপন থেকে বিরত থাকবে । যদি সর্বোচ্চ_সংযোগগুলি 200 এ হয় এবং আপনাকে মাইএসকিএলডিটি পুনরায় আরম্ভ না করে 300 এ বাড়ানো দরকার, আপনি এই কমান্ডের মাধ্যমে সক্রিয়ভাবে সর্বোচ্চ_ সংযোগগুলি বাড়িয়ে তুলতে পারেন :
mysql> SET GLOBAL max_connections = 300;
এটি তত্ক্ষণাত্ আরও সংযোগগুলি কার্যকর করার অনুমতি দেবে, তবে কেবল নির্বিচারে ঝাঁকুনির সংখ্যা বৃদ্ধি করবেন না। আপনার অবশ্যই নিশ্চিত করতে হবে যে বর্ধিততা সামঞ্জস্য করার জন্য মাইএসকিএলে পর্যাপ্ত র্যাম রয়েছে।
কায়েট: আপনি যদি সর্বাধিক সংযোগগুলি 300 এ পরিবর্তন করেন তবে দয়া করে এটি /etc/my.cnf এ রাখুন
[mysqld]
max_connections=300
আপনি আপনার মাইএসকিউএল ডিবি সার্ভারে mysqltuner.pl চালাতে পারেন। আপনার যদি এটি না থাকে তবে নিম্নলিখিতগুলি চালান:
cd
wget mysqltuner.pl
perl mysqltuner.pl
পারফরম্যান্স মেট্রিকসের অধীনে তৃতীয় লাইনে এটি রয়েছে
-------- Performance Metrics -------------------------------------------------
[--] Up for: 8d 20h 46m 22s (8M q [10.711 qps], 129K conn, TX: 90B, RX: 19B)
[--] Reads / Writes: 4% / 96%
[--] Total buffers: 2.1G global + 5.4M per thread (2000 max threads)
[OK] Maximum possible memory usage: 12.6G (80% of installed RAM)
থ্রেড প্রতি 5.4M দেখুন? এটি সর্বোচ্চ_সংযোগগুলি দ্বারা গুণিত হয়। এই উদাহরণে, এটি সর্বোচ্চ প্রায় 10.8G র্যাম হবে। অতএব, যতবার আপনি সর্বোচ্চ_সংযোগগুলি ঘাঁটছেন, আপনার মাইএসকিএলটিউনার.পিএল চালনা করা উচিত এবং আপনি খুব বেশি স্মৃতির জন্য ওএস টিপছেন কিনা তা পরীক্ষা করা উচিত।
যাই হোক না কেন, যার কাছে অতিরিক্ত সুবিধাগুলি রয়েছে তা সীমাবদ্ধ করে এমন ব্যবহারকারীদের ডিবি সংযোগের সাথে বন্যার মাইএসকিএলডি হ্রাস করার সুযোগ দেয়।