মাইএসকিএল ক্র্যাশ হয়েছে এবং এটি আরম্ভ হবে না


19

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

140502 14:13:05 [দ্রষ্টব্য] প্লাগিন 'FEDERATED' অক্ষম।
ইনোডিবি: লগ স্ক্যানটি চেকপয়েন্টের lsn 108 1057948207 পেরিয়ে অগ্রসর হয়েছিল
140502 14:13:06 InnoDB: ডাটাবেসগুলি সাধারণত বন্ধ ছিল না!
InnoDB: ক্র্যাশ পুনরুদ্ধার শুরু হচ্ছে।
InnoDB: .bd ফাইলগুলি থেকে টেবিলস্পেসের তথ্য পড়া ...
ইনোডিবি: দ্বৈতলিপি থেকে সম্ভব অর্ধ-লিখিত ডেটা পৃষ্ঠা পুনরুদ্ধার করা
InnoDB: বাফার ...
ইনোডিবি: পুনরুদ্ধার করছেন: সিকোয়েন্স নম্বর 108 1058059648 এ লগ করতে স্ক্যান করা হয়েছে
InnoDB: 1 টি লেনদেন (গুলি) যা অবশ্যই পাকানো বা পরিষ্কার করতে হবে
InnoDB: পূর্বাবস্থায় ফিরে আসার জন্য মোট 15 সারি অপারেশন
InnoDB: Trx আইডি কাউন্টার 0 562485504
140502 14:13:06 InnoDB: ডাটাবেসে লগ রেকর্ডগুলির একটি ব্যাচ প্রয়োগ করা শুরু হচ্ছে ...
ইনোডিবি: পার্সেন্টে অগ্রগতি: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 21 22 23 25 25 27 27 29 29 31 31 32 33 34 35 36 37 38 39 40 41 43 43 45 46 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
ইনোডিবি: ব্যাচটি শেষ হয়েছে
ইনোডিবি: অনির্দিষ্ট লেনদেনের রোলব্যাক পটভূমিতে শুরু হচ্ছে
140502 14:13:06 InnoDB: পিছনে trx রোলিং 0 562485192, 15 সারি পূর্বাবস্থায় ফেরাতে
140502 14:13:06 InnoDB: শুরু হয়েছে; লগ অনুক্রম নম্বর 108 1058059648
140502 14:13:06 InnoDB: ফাইলের 1873206128 থ্রেডে দৃ failure়তা ব্যর্থতা ../../../stores/innobase/fsp/fsp0fsp.c লাইন 1593
InnoDB: ব্যর্থতা প্রতিশ্রুতি: ভঙ্গ_আর_যুক্ত> 0
ইনোডিবি: আমরা ইচ্ছাকৃতভাবে একটি মেমরি ট্র্যাপ তৈরি করি।
ইনোডিবি: http://bugs.mysql.com এ একটি বিশদ বাগ রিপোর্ট জমা দিন।
ইনোডিবি: আপনি যদি বারবার দৃ fail় ব্যর্থতা বা ক্র্যাশ পান তবেও
ইনোডিবি: মাইএসকিএলড স্টার্টআপের পরপরই সেখানে উপস্থিত হতে পারে
InnoDB: InnoDB টেবিল স্পেসে দুর্নীতি। দয়া করে দেখুন
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: পুনরুদ্ধার করতে বাধ্য করা সম্পর্কে।
140502 14:13:06 - মাইএসকিএলড সংকেত 6 পেয়েছে;
এটি আপনি একটি বাগ আঘাত করার কারণে এটি হতে পারে। এই বাইনারিটিও সম্ভব
বা এর সাথে যুক্ত হওয়া লাইব্রেরির একটি দুর্নীতিগ্রস্থ, ভুলভাবে নির্মিত,
বা ভুল কনফিগার করা হয়েছে। এই ত্রুটিটি হার্ডওয়্যারকে ত্রুটিযুক্ত করার কারণেও হতে পারে।
আমরা এমন কিছু তথ্য স্ক্র্যাপ করার জন্য যথাসাধ্য চেষ্টা করব যা আশা করি নির্ণয়ে সহায়তা করবে
সমস্যা, তবে যেহেতু আমরা ইতিমধ্যে ক্রাশ করেছি, অবশ্যই কিছু ভুল
এবং এটি ব্যর্থ হতে পারে।

key_buffer_size = 16777216
read_buffer_size = 131072
max_used_connections = 0
max_threads = 151
threads_connected = 0
এটা সম্ভব যে মাইএসকিএলডি পর্যন্ত ব্যবহার করতে পারে 
কী_বফার_সাইজ + (পঠন-বাফার_সাইজ + সাজানো_বাফলার_সাইজ) * সর্বোচ্চ_প্রেম = 345919 কে
স্মৃতি বাইট
আশা করি ঠিক আছে; যদি না হয় তবে সমীকরণের কিছু ভেরিয়েবল হ্রাস করুন।

thd: 0x0
ব্যাকট্রিসের চেষ্টা করা হচ্ছে। আপনি নিম্নলিখিত তথ্য ব্যবহার করতে পারেন তা জানতে
যেখানে mysqld মারা গেছে। এর পরে যদি আপনি কোনও বার্তা না দেখেন তবে কিছু গেল
ভয়ানক ভুল ...
স্ট্যাক_বটম = (শূন্য) থ্রেড_স্ট্যাক 0x30000
140502 14:13:06 [দ্রষ্টব্য] ইভেন্টের সময়সূচি: 0 ইভেন্ট লোড হয়েছে
140502 14:13:06 [দ্রষ্টব্য] / usr / sbin / mysqld: সংযোগের জন্য প্রস্তুত।
সংস্করণ: '5.1.41-3ubuntu12.10' সকেট: '/var/run/mysqld/mysqld.sock' বন্দর: 3306 (উবুন্টু)
/ usr / sbin / mysqld (আমার_প্রিন্ট_স্ট্যাকট্রেস + 0x2 ডি) [0xb7579cbd]
/ usr / sbin / mysqld (হ্যান্ডেল_সেগফল্ট + 0x494) [0xb7245854]
[0xb6fc0400]
/lib/tls/i686/cmov/libc.so.6(abort+0x182) [0xb6cc5a82]
/ usr / sbin / mysqld (+ 0x4867e9) [0xb74647e9]
/ usr / sbin / mysqld (বিটিআর_পেজ_ফ্রি_লো +0x122) [0xb74f1622]
/ usr / sbin / mysqld (বিটিআর_কম্প্রেস + 0x684) [0xb74f4ca4]
/ usr / sbin / mysqld (বিটিআর_কুর_কম্প্রেস_আইফ_উসফুল + 0xe7) [0xb74284e7]
/ usr / sbin / mysqld (বিটিআর_সিআর_পাসেমিস্টিক_ডিলেট + 0x332) [0xb7429e72]
/ usr / sbin / mysqld (বিটিআর_নোড_পিটার_ডিলেট + 0x82) [0xb74f4012]
/ usr / sbin / mysqld (বিটিআর_ডিস্কার্ড_ পৃষ্ঠা + 0x175) [0xb74f41e5]
/ usr / sbin / mysqld (বিটিআর_সিআর_পাসেমিস্টিক_ডিলেট + 0x3e8) [0xb7429f28]
/ usr / sbin / mysqld (+ 0x526197) [0xb7504197]
/ usr / sbin / mysqld (সারি_উন্ডো_ইনস + 0x1b1) [0xb7504771]
/ usr / sbin / mysqld (সারি_উন্ডো_স্টেপ + 0x25f) [0xb74c210f]
/ usr / sbin / mysqld (কুই_আরুন_থ্রেডস + 0x58a) [0xb74a31da]
/ usr / sbin / mysqld (trx_rolback_or_clean_all_without_sess + 0x3e3) [0xb74ded43]
/lib/tls/i686/cmov/libpthread.so.0(+0x596e) [0xb6f9f96e]
/lib/tls/i686/cmov/libc.so.6(clone+0x5e) [0xb6d65a4e]
Http://dev.mysql.com/doc/mysql/en/crashing.html এ ম্যানুয়াল পৃষ্ঠাতে রয়েছে
ক্র্যাশ কী ঘটছে তা অনুসন্ধানে আপনাকে সহায়তা করতে পারে এমন তথ্য।

কোন সুপারিশ?


আগেরটা আগে; কেউ কি কোনওভাবে মাইএসকিউএল কনফিগারেশন পরিবর্তন করেছেন? /etc/mysql/my.cnfবা এর জন্য সর্বশেষ পরিবর্তনের তারিখটি দেখুন ।
জান্নে পিক্কারাইনেন

না। একটি মাইএসকিলেডম্প করার জন্য ইনোডাব_ফোর্স_রেকোভারি = 3 সেট করে শেষ হয়েছে, তারপরে নামিয়ে ডিবিটি সংযোজন করুন। এটি এটি স্থির করে।
tilleryj

উত্তর:


26

সেকি।

InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html
InnoDB: about forcing recovery.

প্রস্তাবিত ওয়েবপৃষ্ঠাটি দেখুন: http://dev.mysql.com/doc/refman/5.1/en/forcing-recovery.html

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

আপনার সম্পাদনা করুন /etc/my.cnfএবং যুক্ত করুন:

 innodb_force_recovery = 1

... আপনি নিজের ডাটাবেসে প্রবেশ করতে এবং আপনার ডেটা পেতে / নষ্ট টেবিলটি খুঁজে পেতে পারেন কিনা তা দেখার জন্য।

সাধারণত, যখন এটি ঘটে তখন এটি পুনর্নির্মাণ হয় (কমপক্ষে একটি দুর্গন্ধযুক্ত টেবিলের মধ্যে)।

Http://chepri.com/mysql-innodb- দুর্নীতি- এবং- পুনরুদ্ধার / থেকে :

  1. বন্ধ mysqld( service mysql stop)।
  2. ব্যাকআপ /var/lib/mysql/ib*
  3. নিম্নলিখিত লাইনটি এতে যুক্ত করুন /etc/my.cnf:

    innodb_force_recovery = 1
    

    (তারা 4 টি পরামর্শ দেয় তবে 1 এবং বর্ধন দিয়ে শুরু করা সবচেয়ে ভাল যদি এটি শুরু না হয়)

  4. পুনরায় চালু করুন mysqld( service mysql start)।

  5. সমস্ত সারণী ডাম্প করুন: mysqldump -A > dump.sql
  6. পুনরুদ্ধারের প্রয়োজন এমন সমস্ত ডাটাবেস ফেলে দিন।
  7. বন্ধ mysqld( service mysql stop)।
  8. অপসারণ /var/lib/mysql/ib*
  9. আউট মন্তব্য innodb_force_recoveryমধ্যে/etc/my.cnf
  10. পুনরায় চালু করুন mysqld। Mysql ত্রুটি লগ দেখুন। ডিফল্টরূপে এটি /var/lib/mysql/server/hostname.com.errনতুন ib*ফাইল তৈরি করে তা দেখতে হবে ।
  11. ডাম্প থেকে ডাটাবেসগুলি পুনরুদ্ধার করুন: mysql < dump.sql

আমি প্রথমে বিবেচনা করব যে আপনার কাছে ফাইল সিস্টেমের দুর্নীতি বা খারাপ ডিস্ক থাকতে পারে।
বোমকার

1
সমস্ত ইনোডোবি_ফোর্স_সিকোভারি মানগুলি 6. অবধি চেষ্টা করে দেখুন এবং ইনোডাব_পুরজ_থ্রেড = 0 যোগ করুন - কখনও কখনও মূল থ্রেডটি কোনও শুরু করতে পারে না, আপনি এটি ত্রুটি
লগতে

2
আমি জানি এটি একটি পুরানো থ্রেড, তবে কোন ডাটাবেসের পুনরুদ্ধারের প্রয়োজন তা নির্ধারণের জন্য কোনও বিবরণ?
nkanderson

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

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

2

Mysql: 5.7 ডকার চিত্র ব্যবহার করার সময় আমি এই একই ত্রুটির মুখোমুখি হয়েছি। মূল ভুলটি মূল ব্যবহারকারী তৈরি করার চেষ্টা করছিল যা ডিফল্টরূপে বিদ্যমান। আরও তথ্য: https://github.com/docker-library/mysql/issues/129

উপরের লিঙ্কে দেওয়া হিসাবে সমাধানটি ডক ইমেজ শুরু করার সময় পরিবেশের ভেরিয়েবলগুলিতে MYSQL_USER এবং MYSQL_PASSWORD সেট না করা ছিল।


1

লারাভেল হোমস্টেডে আমার সাথে এটি ঘটেছিল (ম্যাক ওএস সিয়েরা 10.12.4 (16E195) চলমান কার্নেল আতঙ্কের পরে ভ্যাগ্র্যান্ট):

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:    14.04
Codename:   trusty

$ mysql -V
mysql  Ver 14.14 Distrib 5.7.9, for Linux (x86_64) using  EditLine 
wrapper

এখানে কিছু সংস্থান যা আপনি চেষ্টা করতে পারেন তা সত্ত্বেও কোনও মেরামত বিকল্প আমার পক্ষে কাজ করে নি :

https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html

https://forums.mysql.com/read.php?22,603093,604631#msg-604631

https://support.plesk.com/hc/en-us/articles/213939865-How-to-fix-InnoDB-corruption-cases-for-the-MySQL-database

আমি মাইএসকিএল কনফিগারেশনে বল পুনরুদ্ধার যোগ করার চেষ্টা করেছি (প্রথম থেকে শুরু করুন এবং ক্রমান্বয়ে আরও বেশি হবেন কারণ সম্ভবত বেশি সংখ্যক স্থায়ী দুর্নীতির কারণ হতে পারে):

sudo nano /etc/mysql/my.cnf

[mysqld]
innodb_force_recovery = 1
#innodb-read-only=1
#innodb_purge_threads=0
#key_buffer_size=16M
#event-scheduler=disabled

অন্য উইন্ডোতে, চালান:

tail -f /var/log/mysql/error.log

তারপরে মাইএসকিএলএলটি পুনরায় চালু করার চেষ্টা করুন বিভিন্ন বিকল্পের সাথে সক্ষম:

sudo /etc/init.d/mysql restart

যদি এটির সময় শেষ হয়ে যায়, আপনি মাইএসকিএল প্রক্রিয়াগুলি এর সাথে পুনরায় আরম্ভ করতে বাধ্য করতে পারেন:

# process id is first column with number, just ignore lines with grep because they list the process running 'grep mysql'
ps aux | grep mysql
sudo kill -9 <process-id>
sudo /etc/init.d/mysql restart

এটি যদি কাজ করে তবে লগটি এমন কিছু প্রদর্শন করবে:

Version: '5.7.9' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)

যদি এটি ব্যর্থ হয় তবে লগটি এমন কিছু প্রদর্শন করবে:

InnoDB: Assertion failure in thread 140049488692992 in file log0recv.cc line 1420


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

sudo ls -alt /var/lib/mysql

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

sudo rm -rf /var/lib/mysql/<database_name>

আমি অন্যান্য সমস্ত ফাইল রেখে দিয়েছি এবং মাইএসকিএল যেভাবেই শুরু করতে সক্ষম হয়েছিল।

আপডেট: innodb_force_recovery = 1একবার মাইএসকিএল আবার কাজ করা অক্ষম করতে ভুলবেন না, অন্যথায় আপনি ডাটাবেস এবং সারণী পরিবর্তন করার চেষ্টা করলে ত্রুটি পাবেন।

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

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

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