মাইএসকিউএল সার্ভার আপডেট করার পরে ফাইলগুলি খুলতে পারে না: ত্রুটি: 24


16

উবুন্টু: 12.04 এলটিএস (লিনাক্স mysql02 3.2.0-40-জেনেরিক # 64-উবুন্টু এসএমপি সোমবার 25 21:22:10 ইউটিসি 2013 x86_64 x86_64 x86_64 জিএনইউ / লিনাক্স)

মাইএসকিউএল: উবুন্টু ডিস্ট্রো 5.5.31

অ্যাপারমোর: অপসারণ !

সার্ভারটি এক বছর ধরে রক সলড চলছে। তারপরে এই সোমবার মাইএসকিউএল ব্যর্থ হতে শুরু করে। একটি আপডেট সমস্যার কারণ হয়ে দাঁড়িয়েছে এবং আমরা এটি কী তা বুঝতে পারি না। এমনকি আমরা মাইএসকিউএল 5.5.30 এ ফিরে যেতে চেষ্টা করেছি তবে কোনও ভাগ্য নেই। আমরা 5.5.31 এ ফিরে এসেছি।

মাইএসকিউএল ত্রুটি লগ এন্ট্রি:

130430  7:55:46 [ERROR] Error in accept: Too many open files
130430  7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fclvod.frm' (errno: 24)
130430  7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fcnote.frm' (errno: 24)
130430  7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcont.frm' (errno: 24)
130430  7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcontv.frm' (errno: 24)
130430  7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffnote.frm' (errno: 24)
130430  7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/frcfcl.frm' (errno: 24)

দেখা যাচ্ছে আমরা উলিমিট সমস্যায় পড়েছি। আমরা এপিএসএমএমআর পুরোপুরি সরিয়েছি। আমরা /etc/security/limits.conf বৃদ্ধি করেছি এবং এখনও ভাগ্য নেই:

# Out of desperation....
* soft  nofile  49152
* hard  nofile  65536

# No effect!?!!?
#mysql  soft  nofile  49152
#mysql  hard  nofile  65536

এবং সীমাবদ্ধতাগুলি দেখানোর জন্য। কনফ কাজ করছে:

root@mysql02:/etc/security# ulimit -Sa | grep "open files"
open files                      (-n) 49152

root@mysql02:/etc/security# ulimit -Ha | grep "open files"
open files                      (-n) 65536

এবং এখানে my.cnf- এ গুরুত্বপূর্ণ এন্ট্রি রয়েছে

[mysqld_safe]
open_files_limit = 16384

[mysqld]
open_files_limit = 16384

যাহোক:

root@mysql02:/etc/mysql# mysqladmin -u root -pThePassword variables| grep open_files_limit
open_files_limit                                  | 1024

আমরা সম্পূর্ণ স্টাম্পড এবং ডাউন। কোন সহায়তা ব্যাপকভাবে প্রশংসা হবে।


1
অনেকগুলি ওপেন ফাইল সম্পর্কে একের আগে লগগুলিতে কোন ত্রুটি বার্তা রয়েছে? ওপেন_ফাইলস_লিমিট পরিবর্তন করার পরে আপনি কি মাইএসকিএলডি পুনরায় চালু করেছেন?
বার্ট

হ্যাঁ, প্রতিবার পরিবর্তন করার পরে আমরা মাইএসকিউএল পুনরায় চালু করেছি। আমাদের কাছে একটি টেবিল রয়েছে যা অনুপস্থিত হিসাবে রিপোর্ট করা হচ্ছে (এবং এটি কোনও কারণে রয়েছে): 30430 8:36:39 InnoDB: ত্রুটি: একটি টেবিল খোলার চেষ্টা করা হয়েছিল, তবে InnoDB করতে পারেনি: টেবিল স্পেস ফাইলটি খুলুন './oti_lw_prod/apinvoice_charges .ibd!
ভ্যান

এফওয়াইআই, আমরা আমাদের ব্যবহারকারীদের আমাদের অন্যান্য মাস্টার (দ্বৈত মাস্টার সেটআপ) সেভের (01) এ স্থানান্তরিত করেছি এবং এটি এখন ঠিক একই লক্ষণগুলি প্রদর্শন করছে। এটি (01) এর এই ব্যর্থ সার্ভারের মত একই সঠিক কনফিগারেশন ছিল (02) এবং মাস্টারকে ছাড়িয়ে আমাদের এই ব্যর্থটি (02) মারা যেতে পারে। ঠিক আছে, যে পরিকল্পনা জন্য অনেক। আমরা নিশ্চিত যে এটি একটি ওএস সমস্যা।
ভ্যান

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

উত্তর:


19

ওএস: উবুন্টু (দেবিয়ান) মোতায়েন

মাইএসকিউএল সার্ভার অপশন: ওপেন-ফাইল-সীমা

দেখে মনে হচ্ছে যে ডেবিয়ান আপস্টার্ট /etc/security/limits.conf এ সংজ্ঞায়িত প্যারামিটারগুলি ব্যবহার করে না , সুতরাং যখন আপনি সার্ভিস কমান্ডের মাধ্যমে mysql চালু করেন (এবং তাই, আপস্টার্টের অধীনে), এটি সেই সংজ্ঞায়িত সীমাগুলিকে ওভাররাইড করে এবং ডিফল্ট 1024 ব্যবহার করে ।

সমাধান সংশোধন করতে হয় mysql.conf , যে ফাইলটি ভুঁইফোড় সেবা সংজ্ঞায়িত এটা অবস্থিত /etc/init/mysql.conf এবং নিম্নলিখিত পংক্তিগুলি যোগ সামনে প্রাক শুরু ব্লক:

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

তথ্যসূত্র:


হতাশ এটি কোথাও পরিষ্কারভাবে নথিভুক্ত করা হয় না। :( আমরা সবে সার্ভারফল্টে ডেভিডের পোস্টে ঘটলাম
ভ্যান

এবং এটি এটি অনুসারে কোনও বাগ নয়: bugs.launchpad.net/mysql-server/+bug/938669
ভ্যান

টেবিলগুলিতে পার্টিশন যুক্ত করার পরে এটি হঠাৎ এবং উদ্বেগজনকভাবে স্পষ্ট হয়ে উঠতে পারে যা খোলা ফাইলগুলিকে বাড়িয়ে তুলতে পারে।
সাদা

এটি আমার জন্য উবুন্টু 15.10 এ কাজ করেছে। (আমি মাথা ব্যাথা অনেক সময় সংরক্ষণের জন্য একটি মিলিয়ন ... ধন্যবাদ: পর আপগ্রেড প্যাকেজ ত্রুটি বার্তা, যা আমার সমস্ত সাইটকে কপর্দকশূন্য এর 'ফাইল খোলা যাচ্ছে না' টন পেয়েছিলাম।
এমানুয়েল

"প্রি-স্টার্ট" ব্লক কি কেউ ব্যাখ্যা করতে পারে? আমি উবুন্টু 16 চালাচ্ছি এবং এই সমস্যাটি আছে তবে কনফিগারেশন ফাইলটি আগের চেয়ে আলাদা দেখাচ্ছে
বিিলনোহ

4

উবুন্টু 15.10 এ একই সমস্যা ছিল।

https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758 - সমাধান এনেছে:

  1. /lib/systemd/system/mysql.service বা /lib/systemd/system/mysqld.service বিদ্যমান কিনা তা পরীক্ষা করে দেখুন
  2. (আমার ক্ষেত্রে) যদি না হয় তবে /lib/systemd/system/mysql.service তৈরি করুন এবং এই ফাইলটির লিখিত সামগ্রী অনুলিপি করুন https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/ মন্তব্য / 11 এবং ফাইলের কোথাও দুটি লাইন যুক্ত করুন

    LimitNOFILE=infinity
    LimitMEMLOCK=infinity
    
  3. যদি একটি বা উভয় ফাইল বিদ্যমান থাকে তবে এই দুটি লাইন অন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করে দেখুন:

    LimitNOFILE=infinity
    LimitMEMLOCK=infinity
    
  4. এক্সিকিউট systemctl daemon-reload

... এবং সবকিছু ঠিকঠাক করা উচিত।


1

উপরের কোনওটিই আমার জন্য সমস্যাটি স্থির করেনি (কেবলমাত্র স্মৃতি থেকে বেরিয়ে আসা সিস্টেমের দিকে পরিচালিত করে), আমি যে সমাধানটি পেয়েছি তা এখানে:

ইন /etc/mysql/my.confআপনি MySQLs অভ্যন্তরীণ open_files_limit বৃদ্ধি করা প্রয়োজন। সুতরাং অস্থায়ীভাবে এটি কনফিগারেশনে যুক্ত করুন এবং মাইএসকিউএল পুনরায় চালু করুন।

[mysqld]
open_files_limit = 100000

sudo /etc/init.d/mysql restart

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


এটি আমার জন্য উবুন্টু 16.04-তে কাজ করেছে, ধন্যবাদ :)
রিচার্ড ফ্র্যাঙ্ক

0

কর্মক্ষেত্রের জন্য আপনাকে ধন্যবাদ। তবে আমার কাছে বিষয়টি দুটি অন্যান্য বিষয়কে ছাপিয়ে গেছে।

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

ইনোডিবি ইস্যুটি ঠিক করার পরেও এটি থুতু দিচ্ছিল

mysql> SHOW DATABASES;
ERROR 1018 (HY000): Can't read dir of '.' (errno: 24)

আমাকে রুট কনসোলে mysqld শুরু করতে হয়েছিল এবং ম্যানুয়ালি পুনরায় চালু করতে হয়েছিল

/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf --force

তারপরে সার্ভারটি ডাটাবেসগুলি দেখাতে শুরু করেছে, তবে কিছু টেবিল অ্যাক্সেস করতে অক্ষম। আপনার বর্ধিত সীমাবদ্ধতার সাথে সম্পর্কিত সমস্যাগুলি বাকি সমস্যাগুলি স্থির করেছে, আপনাকে ধন্যবাদ!

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