মাইএসকিউএলে সাধারণ ত্রুটিগুলি সমাধানের জন্য দরকারী টিপস


মাইএসকিউএল হ'ল ওরাকলের মালিকানাধীন একটি বহুল ব্যবহৃত ওপেন সোর্স রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (আরডিএমএস)। বছরের পর বছর ধরে এটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য ডিফল্ট পছন্দ এবং অন্যান্য ডাটাবেস ইঞ্জিনের তুলনায় এখনও জনপ্রিয় রয়েছে।

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

আপনার সাইট বা ওয়েব অ্যাপ্লিকেশন মাইএসকিউএল দ্বারা চালিত? এই বিশদ নিবন্ধে, আমরা মাইএসকিউএল ডাটাবেস সার্ভারে কীভাবে সমস্যা এবং সাধারণ ত্রুটিগুলি সমাধান করব তা ব্যাখ্যা করব। আমরা কীভাবে সমস্যার কারণগুলি নির্ধারণ করব এবং সেগুলি সমাধান করার জন্য কী করব তা বর্ণনা করব।

1. স্থানীয় মাইএসকিউএল সার্ভারে সংযুক্ত হতে পারে না

মাইএসকিউএল-এর সার্ভার সংযোগ ত্রুটির সাধারণ ক্লায়েন্টগুলির মধ্যে একটি হ'ল "ERROR 2002 (HY000): সকেট‘ /var/run/mysqld/mysqld.sock ’(2)” এর মাধ্যমে স্থানীয় মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না।

এই ত্রুটিটি নির্দেশ করে যে হোস্ট সিস্টেমে কোনও মাইএসকিউএল সার্ভার নেই (mysqld) বা আপনি সার্ভারের সাথে সংযোগ করার চেষ্টা করার সময় একটি ভুল ইউনিক্স সকেট ফাইলের নাম বা টিসিপি/আইপি পোর্ট নির্দিষ্ট করেছেন।

আপনার ডাটাবেস সার্ভার হোস্টে গ্রেড কমান্ড একসাথে প্রদর্শিত হিসাবে ব্যবহার করে mysqld নামের একটি প্রক্রিয়া পরীক্ষা করে সার্ভারটি চলছে কিনা তা নিশ্চিত করুন।

$ ps xa | grep mysqld | grep -v mysqld

যদি উপরের কমান্ডগুলি কোনও আউটপুট না দেখায়, তবে ডাটাবেস সার্ভারটি চলছে না। অতএব ক্লায়েন্ট এটির সাথে সংযোগ স্থাপন করতে পারে না। সার্ভারটি শুরু করতে, নিম্নলিখিত systemctl কমান্ডটি চালান।

$ sudo systemctl start mysql        #Debian/Ubuntu
$ sudo systemctl start mysqld       #RHEL/CentOS/Fedora

মাইএসকিউএল পরিষেবা স্থিতি যাচাই করতে নীচের কমান্ডটি ব্যবহার করুন।

$ sudo systemctl status mysql       #Debian/Ubuntu
$ sudo systemctl status mysqld      #RHEL/CentOS/Fedora

উপরের কমান্ডের আউটপুট থেকে, মাইএসকিউএল পরিষেবাটি ব্যর্থ হয়েছে। এই জাতীয় ক্ষেত্রে, আপনি এটিকে পুনরায় চালু করার চেষ্টা করতে পারেন এবং আরও একবার এর স্থিতি পরীক্ষা করতে পারেন।

$ sudo systemctl restart mysql
$ sudo systemctl status mysql

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

$ ps xa | grep mysqld | grep -v mysqld

নেটস্ট্যাট কমান্ডটি যেমন দেখানো হয়েছে তেমন

$ sudo netstat -tlpn | grep "mysql"

2. মাইএসকিউএল সার্ভারের সাথে সংযুক্ত হতে পারে না

অন্য একটি সাধারণ সংযোগ ত্রুটি হ'ল "(2003) মাইএসকিউএল সার্ভারের সাথে 'সার্ভারে (10061)" সংযুক্ত হতে পারে না, যার অর্থ নেটওয়ার্ক সংযোগ প্রত্যাখ্যান করা হয়েছে।

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

আপনি যখন মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করছেন তখন আপনি সম্ভবত অন্যান্য সাধারণ ত্রুটিগুলি হলেন:

ERROR 2003: Can't connect to MySQL server on 'host_name' (111)
ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)

এই ত্রুটিগুলি নির্দেশ করে যে সার্ভারটি চলমান থাকতে পারে, তবে আপনি টিসিপি/আইপি পোর্ট, নামযুক্ত পাইপ বা ইউনিক্স সকেট ফাইলটি ব্যবহার করে সার্ভারটি শুনছেন তার থেকে আলাদা হয়ে সংযোগের চেষ্টা করছেন।

৩. মাইএসকিউএল-এ অস্বীকৃত ত্রুটিগুলি অ্যাক্সেস করুন

মাইএসকিউএল-তে একটি ব্যবহারকারীর অ্যাকাউন্টটি ব্যবহারকারীর নাম এবং ক্লায়েন্ট হোস্ট বা হোস্ট থেকে শর্ত অনুসারে সংজ্ঞায়িত করা হয় যা থেকে ব্যবহারকারী সার্ভারের সাথে সংযোগ করতে পারে। এছাড়াও, কোনও অ্যাকাউন্টে পাসওয়ার্ডের মতো প্রমাণীকরণের শংসাপত্রও থাকতে পারে।

যদিও "অ্যাক্সেস অস্বীকৃত" ত্রুটিগুলির বিভিন্ন কারণ রয়েছে, তবে সাধারণ কারণগুলির মধ্যে একটি হ'ল মাইএসকিউএল অ্যাকাউন্টগুলির সাথে সম্পর্কিত যা সংযোগের সময় সার্ভার ক্লায়েন্ট প্রোগ্রামগুলি ব্যবহার করার অনুমতি দেয়। এটি সূচিত করে যে সংযোগে উল্লিখিত ব্যবহারকারীর নামটির ডাটাবেস অ্যাক্সেস করার সুবিধা নেই।

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

প্রদর্শিত কোড হিসাবে <কোড> অনুদান দেখান কমান্ড চালিয়ে কোনও প্রদত্ত অ্যাকাউন্টের কী কী সুবিধা রয়েছে তা আপনি দেখতে পারেন।

> SHOW GRANTS FOR 'tecmint'@'localhost';

আপনি মাইএসকিউএল শেলটিতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করে সুনির্দিষ্ট ডাটাবেসের কোনও নির্দিষ্ট ব্যবহারকারীকে দূরবর্তী আইপি ঠিকানায় বিশেষাধিকার প্রদান করতে পারেন।

> grant all privileges on *.test_db to 'tecmint'@'192.168.0.100';
> flush privileges;

তদ্ব্যতীত, অ্যাক্সেস অস্বীকৃত ত্রুটিগুলি মাইএসকিউএলে সংযুক্ত হওয়ার ক্ষেত্রেও সমস্যা হতে পারে, পূর্বে বর্ণিত ত্রুটিগুলি উল্লেখ করুন।

৪. মাইএসকিউএল সার্ভারের সাথে সংযোগ হারিয়েছে

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

যদি এটি কোনও সংযোগের সময়সীমা সমস্যা হয়, বিশেষত যখন মাইএসকিউএল সার্ভারের সাথে একটি প্রাথমিক সংযোগ ব্যবহার করার চেষ্টা করছে, তখন কানেক্ট_টাইমআউটআউট প্যারামিটারের মান বাড়ান। তবে BLOB মানগুলির ক্ষেত্রে যা ম্যাক্স_গ্ল্যাড_প্যাককেটের চেয়ে বড়, আপনার নিজের /etc/my.cnf কনফিগারেশন ফাইলের [mysqld] বা [ক্লায়েন্ট] এর অধীনে সর্বোচ্চ_নিড_প্যাককেটের জন্য একটি উচ্চতর মান নির্ধারণ করতে হবে বিভাগটি দেখানো হয়েছে।

[mysqld]
connect_timeout=100
max_allowed_packet=500M

যদি মাইএসকিউএল কনফিগারেশন ফাইলটি আপনার জন্য অ্যাক্সেসযোগ্য না হয় তবে আপনি মাইএসকিউএল শেলটিতে নিম্নলিখিত কমান্ডটি ব্যবহার করে এই মানটি সেট করতে পারেন।

> SET GLOBAL connect_timeout=100;
> SET GLOBAL max_allowed_packet=524288000;

৫. অনেক বেশি মাইএসকিউএল সংযোগ রয়েছে

যদি কোনও মাইএসকিউএল ক্লায়েন্ট "খুব বেশি সংযোগগুলি" ত্রুটির মুখোমুখি হয় তবে এর অর্থ হ'ল সমস্ত উপলব্ধ সংযোগগুলি অন্য ক্লায়েন্টদের দ্বারা ব্যবহৃত হয়। সংযোগের সংখ্যা (ডিফল্ট 151) <কোড> সর্বাধিক সংযোগ সিস্টেম ভেরিয়েবল দ্বারা নিয়ন্ত্রিত হয়; আপনার /etc/my.cnf কনফিগারেশন ফাইলটিতে আরও সংযোগের অনুমতি দেওয়ার জন্য সমস্যার মান বাড়িয়ে আপনি সমস্যার প্রতিকার করতে পারেন।

[mysqld]
max_connections=1000

6. মেমরি মাইএসকিউএল আউট

আপনি যদি মাইএসকিউএল ক্লায়েন্ট প্রোগ্রামটি ব্যবহার করে কোনও ক্যোয়ারী চালিয়ে যান এবং প্রশ্নে ত্রুটির মুখোমুখি হন, তার অর্থ মাইএসকিউএলের পুরো ক্যোয়ারির ফলাফল সংরক্ষণ করার মতো পর্যাপ্ত মেমরি নেই।

প্রথম পদক্ষেপটি নিশ্চিত করা হয় যে ক্যোয়ারীটি সঠিক কিনা, যদি তা হয় তবে নিম্নলিখিতটি করুন:

  • আপনি যদি সরাসরি মাইএসকিউএল ক্লায়েন্ট ব্যবহার করছেন তবে ক্যাশেড ফলাফলগুলি অক্ষম করতে --উইচ স্যুইচ দিয়ে এটি শুরু করুন বা
  • আপনি যদি মায়োডবিসি ড্রাইভার ব্যবহার করে থাকেন তবে কনফিগারেশন ইউজার ইন্টারফেসের (ইউআই) পতাকাগুলির জন্য একটি উন্নত ট্যাব রয়েছে। "ফলাফল ক্যাশে করবেন না" পরীক্ষা করুন।

আর একটি দুর্দান্ত সরঞ্জাম হ'ল মাইএসকিউএল টিউনার - একটি দরকারী স্ক্রিপ্ট যা একটি চলমান মাইএসকিউএল সার্ভারের সাথে সংযোগ স্থাপন করবে এবং কীভাবে এটি উচ্চতর পারফরম্যান্সের জন্য কনফিগার করা যায় তার জন্য পরামর্শ দেয়।

$ sudo apt-get install mysqltuner     #Debian/Ubuntu
$ sudo yum install mysqltuner         #RHEL/CentOS/Fedora
$ mysqltuner

মাইএসকিউএল অপ্টিমাইজেশন এবং পারফরম্যান্স টিউনিং টিপসের জন্য, আমাদের নিবন্ধটি পড়ুন: 15 দরকারী মাইএসকিউএল/মারিয়াডিবি পারফরম্যান্স টিউনিং এবং অপ্টিমাইজেশন টিপস।

7. মাইএসকিউএল ক্র্যাশ করে রাখে

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

এটি কতক্ষণ চলমান এবং চলছে তা প্রতিষ্ঠিত করতে আপনি সার্ভারের স্থিতিটি পরীক্ষা করতে পারেন।

$ sudo systemctl status mysql       #Debian/Ubuntu
$ sudo systemctl status mysqld      #RHEL/CentOS/Fedora

বিকল্পভাবে, মাইএসকিউএল সার্ভারের আপটাইম সন্ধানের জন্য নিম্নলিখিত মাইসক্ল্যাডমিন কমান্ডটি চালান।

$ sudo mysqladmin version -p 

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

$ sudo mysqladmin -i 5 status
OR
$ sudo mysqladmin -i 5 -r status 

যদিও আমরা কিছু সাধারণ মাইএসকিউএল সমস্যা এবং ত্রুটিগুলি দেখেছি এবং সেগুলি সমাধানের এবং সমাধান করার উপায়ও সরবরাহ করেছি, ত্রুটি নির্ণয়ের সবচেয়ে গুরুত্বপূর্ণ বিষয়টি এর অর্থ কী তা বোঝা (এটি কী কারণ ঘটছে তার পরিপ্রেক্ষিতে)।

সুতরাং আপনি কিভাবে এটি নির্ধারণ করতে পারেন? নিম্নলিখিত বিষয়গুলি আপনাকে সঠিকভাবে কী কারণে সমস্যা সৃষ্টি করছে তা নির্ধারণের জন্য গাইড করবে:

  1. প্রথম এবং সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপটি মাইএসকিউএল লগগুলি সন্ধান করা যা /var/লগ/mysql/ ডিরেক্টরিতে সঞ্চিত আছে। লগ ফাইলগুলি পড়ার জন্য আপনি কমান্ড লাইন ইউটিলিটিগুলি যেমন লেজ ব্যবহার করতে পারেন
  2. যদি মাইএসকিউএল পরিষেবাটি আরম্ভ করতে ব্যর্থ হয় তবে সিস্টেমটিটিএল ব্যবহার করে এর স্থিতি পরীক্ষা করুন বা সিস্টেমটিডের অধীনে জার্নেটেক্টল ( -xe পতাকা সহ) কমান্ডটি ব্যবহার করে পরীক্ষা করুন li
  3. আপনি সিস্টেম লগ ফাইল যেমন /var/লগ/বার্তাগুলি বা আপনার সমস্যার কারণ হিসাবে অনুরূপ পরীক্ষা করতে পারেন
  4. কোন প্রোগ্রামটি সমস্ত সিপিইউ গ্রহণ করছে বা মেশিনটি লক করছে বা আপনার মেমরি, ডিস্কের স্থান, ফাইল বর্ণনাকারী বা অন্য কোনও গুরুত্বপূর্ণ উত্সের বাইরে চলেছে কিনা তা খতিয়ে দেখার জন্য হ্যাপের মতো সরঞ্জামগুলি ব্যবহার করে দেখুন
  5. এই সমস্যাটি কিছু পলাতক প্রক্রিয়া হিসাবে ধরে নেওয়া, আপনি সর্বদা এটি হত্যা করার চেষ্টা করতে পারেন (পিকিল ব্যবহার করে বা ইউটিলিটিটি বদ্ধ করতে) যাতে মাইএসকিউএল স্বাভাবিকভাবে কাজ করে।
  6. মনে করুন যে মাইএসকিএলডি সার্ভারের কারণে সমস্যা দেখা দিচ্ছে, আপনি এর থেকে কোনও প্রতিক্রিয়া পাওয়ার জন্য: mysqladmin -u root ping বা mysqladmin -u রুট প্রক্রিয়া তালিকা চালাতে পারেন।
  7. মাইএসকিউএল সার্ভারের সাথে সংযোগ দেওয়ার চেষ্টা করার সময় যদি সমস্যাটি আপনার ক্লায়েন্ট প্রোগ্রামের সাথে থাকে তবে এটি কেন ঠিকঠাক কাজ করছে না তা পরীক্ষা করে দেখুন, সমস্যা সমাধানের উদ্দেশ্যে এটি থেকে কোনও আউটপুট পাওয়ার চেষ্টা করুন

আপনি নিম্নলিখিত মাইএসকিউএল সম্পর্কিত নিবন্ধগুলি পড়তে পছন্দ করতে পারেন:

  1. নতুনদের জন্য মাইএসকিউএল/মারিয়াডিবি শিখুন - অংশ 1
  2. CentOS 7 এ নেটডাটা ব্যবহার করে মাইএসকিউএল/মারিয়াডিবি ডেটাবেসগুলি কীভাবে পর্যবেক্ষণ করবেন
  3. সমস্ত মাইএসকিউএল ডেটাবেসগুলিকে কীভাবে পুরানো থেকে নতুন সার্ভারে স্থানান্তর করা যায়
  4. মাইটোপ - লিনাক্সে মাইএসকিউএল/মারিয়াডিবি পারফরম্যান্স নিরীক্ষণের জন্য একটি দরকারী সরঞ্জাম
  5. লিনাক্সের জন্য 12 মাইএসকিউএল/মারিয়াডিবি সুরক্ষা সেরা অনুশীলন
  6. li

আরও তথ্যের জন্য, সমস্যা এবং সাধারণ ত্রুটি সম্পর্কিত মাইএসকিউএল রেফারেন্স ম্যানুয়ালটি দেখুন, এটি মাইএসকিউএল ব্যবহার করার সময় আপনি যে সাধারণ সমস্যাগুলি এবং ত্রুটি বার্তাগুলির মুখোমুখি হতে পারেন তার তালিকাভুক্ত করে, যার মধ্যে আমরা উপরে এবং আরও কিছু আলোচনা করেছি discussed