การเริ่มต้นเซิร์ฟเวอร์ mysql ล้มเหลว


28

ฉันใช้เซิร์ฟเวอร์อูบุนตู เมื่อฉันพยายามที่จะเข้าสู่ mysql (ซึ่งกำลังทำงาน) ฉันได้รับข้อผิดพลาดดังต่อไปนี้

ERROR 2002 (HY000): Can't connect to local MySQL server through socket         '/var/run/mysqld/mysqld.sock' (2)

แต่ไฟล์ mysqld.sock ไม่มีอยู่ใน/var/run/mysqldโฟลเดอร์ ในการรันps aux | grep mysqlคำสั่งฉันรู้ว่าเซิร์ฟเวอร์ mysql ไม่ทำงาน

ฉันพยายามรีสตาร์ทเซิร์ฟเวอร์ mysql โดยใช้

service mysql start
service mysql restart
/etc/init.d/mysql start

แต่กระบวนการเริ่มต้นล้มเหลวในทั้ง 3 กรณี /var/log/mysql/mysql.logและ/var/log/mysql/mysql.errไฟล์ว่างเปล่า

แต่/var/log/error.logแสดงข้อมูลต่อไปนี้:

140425 12:49:05 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140425 12:49:05 [Note] Plugin 'FEDERATED' is disabled.
140425 12:49:05 InnoDB: The InnoDB memory heap is disabled
140425 12:49:05 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140425 12:49:05 InnoDB: Compressed tables use zlib 1.2.8
140425 12:49:05 InnoDB: Using Linux native AIO
140425 12:49:05 InnoDB: Initializing buffer pool, size = 3.0G
140425 12:49:05 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 26214400 bytes!
140425 12:49:05 [ERROR] Plugin 'InnoDB' init function returned error.
140425 12:49:05 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140425 12:49:05 [ERROR] /usr/sbin/mysqld: unknown variable 'record_buffer=64M'
140425 12:49:05 [ERROR] Aborting

140425 12:49:05 [Note] /usr/sbin/mysqld: Shutdown complete

ดูว่านี้จะช่วยให้: serverfault.com/questions/104014/...
Rinzwind

1
อะไรคือผลลัพธ์ของls /var/lib/mysql/ib_logfile*?
jobin

ls: ไม่สามารถเข้าถึง / var / lib / mysql / ib_logfile *: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
ananth

1
ไดเร็กทอรี / var / lib / mysql ของคุณเขียนได้สำหรับ mysql หรือไม่?
Jos

1
ฉันกำลังลินุกซ์ newbie..I เปลี่ยนสิทธิ์ของ / var / lib / MySQL โดยใช้ chmod 777 คุณช่วยแนะนำวิธีการตรวจสอบว่ามันไม่ถูกต้องได้ไหม
Ananth

คำตอบ:


28

เปิดเทอร์มินัล ( Ctrl+ Alt+ t) และทำสิ่งต่อไปนี้:

sudo service mysql stop
sudo rm /var/lib/mysql/ib_logfile0
sudo rm /var/lib/mysql/ib_logfile1

และคอมเม้นท์record_buffer=64Mใน/etc/mysql/my.cnf [1]

จากนั้นรีสตาร์ท msyql โดยใช้:

sudo service mysql restart

(ที่มา)


1
ฉันรันคำสั่งที่คุณกล่าวถึง .. ในการเริ่มบริการ sudo mysql รีสตาร์ทมันหยุดข้อความ: อินสแตนซ์ที่ไม่รู้จักและเชลล์พรอมต์ไม่ปรากฏขึ้น (การรีสตาร์ทยังคงทำงานจากที่ผ่านมา 50 นาที)
Ananth

1
นอกจากนี้ตอนนี้บันทึกข้อผิดพลาดบอกว่า: -140425 15:09:11 InnoDB: รูปแบบไฟล์ที่รองรับสูงสุดคือ Barracuda 140425 15:09:12 InnoDB: รอให้เธรดพื้นหลังเริ่มต้น 140425 15:09:13 InnoDB: 5.5.37 เริ่ม หมายเลขลำดับการบันทึก 940942258188 140425 15:09:13 [ข้อผิดพลาด] / usr / sbin / mysqld: ตัวแปรที่ไม่รู้จัก 'record_buffer = 64M' 140425 15:09:13 [ข้อผิดพลาด] ยกเลิก 140425 15:09:13 InnoDB: เริ่มปิด ... 140425 15:09:14 InnoDB: ปิดการทำงานเรียบร้อยแล้ว หมายเลขลำดับการบันทึก 940942258188 140425 15:09:14 [หมายเหตุ] / usr / sbin / mysqld: ปิดระบบเสร็จสมบูรณ์
ananth

ไม่ได้ฉันเริ่มบริการ sudo mysql ใหม่
Ananth

คุณลองทำsudo service mysql startไหม
jobin

ฉันควรจะฆ่ากระบวนการเริ่ม mysql ซึ่งทำงานอยู่หรือไม่? มันจะทำให้เกิดปัญหาใด ๆ ??
Ananth

9

วิธีนี้แก้ไขปัญหาของฉัน:

mkdir /var/run/mysqld

touch /var/run/mysqld/mysqld.sock

chown -R mysql /var/run/mysqld

/etc/init.d/mysql restart


1
หลังจากใช้ขั้นตอนเหล่านี้ฐานข้อมูลของฉันจะถูกลบ ตอนนี้ฉันจะทำอย่างไร ??
Amit Yadav

7

ฉันแก้ไขปัญหาด้วยวิธีต่อไปนี้:

chown -R mysql:mysql /var/lib/mysql
mysql_install_db --user=mysql -ldata=/var/lib/mysql/

ในบริบทอื่นฉันประสบเพราะmysql daemonล้มเหลวในการเริ่มต้น ดังนั้นให้เริ่มดีมอนด้วยคำสั่ง - mysqld startแล้วลองเริ่มบริการ


2

ฉันมีข้อความแสดงข้อผิดพลาดและว่างเปล่าเหมือนกันในไฟล์บันทึก ในไฟล์ config ของฉัน (my.cnf) ฉันได้ระบุว่าฉันต้องการใช้ตาราง myisam โดยเพิ่มบรรทัดนี้ใน [mysqld] - ส่วน:

default-table-type = myisam

หลังจากอัพเกรด mysql ดูเหมือนว่าสิ่งนี้ทำให้ mysql ไม่เริ่มทำงาน ฉันเปลี่ยนสิ่งนี้เป็น:

default-storage-engine = myisam

และตอนนี้ทุกอย่างทำงานได้ดี


1

การเพิ่ม RAM ที่พร้อมใช้งานโดยการเพิ่มพื้นที่ Swap ใหม่อาจช่วยได้เช่นกัน ขั้นตอนอยู่ที่นี่

ตรวจสอบให้แน่ใจว่าคุณสร้าง / swapfile ที่มีขนาดเล็กกว่าพื้นที่ว่างที่แสดงโดย

df -h

ตัวอย่างเช่นสำหรับฉันผลลัพธ์ของ df- h คือ:

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  1.2G  6.3G  16% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            492M   12K  492M   1% /dev
tmpfs           100M  336K   99M   1% /run

ดังนั้นฉันจึงสร้างโดยใช้ 2 G

sudo fallocate -l 2G /swapfile

จากนั้นเพิ่งเริ่มบริการ

sudo /etc/init.d/mysql restart

หวังว่านี่จะช่วยได้ ทั้งหมดที่ดีที่สุด


1

ทางออกของฉัน:

ตรวจสอบว่าใน /etc/rc1.d ทั้งหมด ... /etc/rc5.d สคริปต์ mysql เริ่มต้นด้วย S (Ex S10mysql) และไม่ใช่ K AS K10mysql

คำอธิบาย: K นำหน้าด้วย stop, ชนิดของบริการ kill; และคำนำหน้า S เริ่มต้นด้วยพารามิเตอร์เริ่มต้น

execute in terminal:   
(command        script action  runlevel)
---------------------------------------
sudo update-rc.d mysql enable  2
sudo update-rc.d mysql enable  3
sudo update-rc.d mysql enable  4
sudo update-rc.d mysql enable  5

1

ในกรณีของฉันมันเป็นปัญหาพื้นที่ ตรวจสอบว่าคุณมีที่ว่างเหลือเพียงพอ

จาก/var/log/mysql/error.logฉันได้คำแนะนำจากสองบรรทัด:

2018-08-04T05:25:29.519139Z 0 [ERROR] InnoDB: Write to file ./ibtmp1failed at offset 3145728, 1048576 bytes should have been written, only 704512 were writt$
2018-08-04T05:25:29.519145Z 0 [ERROR] InnoDB: Error number 28 means 'No space left on device'

ฉันเห็นว่ามันเป็นปัญหาพื้นที่

root@xxx:/home/user1# df -h
Filesystem                            Size  Used Avail Use% Mounted on
udev                                  477M     0  477M   0% /dev
tmpfs                                 100M   11M   89M  11% /run
/dev/mapper/server1--osticket--vg-root  8.3G  7.9G     0 100% /
tmpfs                                 497M     0  497M   0% /dev/shm
tmpfs                                 5.0M     0  5.0M   0% /run/lock
tmpfs                                 497M     0  497M   0% /sys/fs/cgroup
/dev/vda1                             472M  467M     0 100% /boot
tmpfs                                 100M     0  100M   0% /run/user/1000

/dev/mapper/server1--osticket--vg-root 8.3G 7.9G 0 100% /จากที่นี่ฉันจะได้เห็นว่ามีพื้นที่ไม่เพียงพอที่เหลืออยู่บนเซิร์ฟเวอร์เสมือน และฉันคิดว่าการย้ายหรือเพิ่มไดรฟ์เสมือนจริง แต่ฉันตัดสินใจที่จะลบไฟล์ที่ไม่จำเป็นก่อน

ดังนั้นต้องล้างแคชและไฟล์ที่ไม่ต้องการ:

#apt-get clean
#apt-get -f autoremove

จากนั้นอย่าลืมลบไฟล์บันทึก mysql ที่เสียหายหลังจากนั้น พวกเขาจะถูกสร้างขึ้นอีกครั้งเมื่อคุณรีสตาร์ท mysql

#service mysql stop
#cd /var/lib/mysql
#rm ib_logfile*
#service mysql start

ตรวจสอบการบริการเซิร์ฟเวอร์ mysql ของคุณและอาจเริ่มทำงาน

root@server1-osticket:/var/lib/mysql# service mysql status
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-08-04 23:07:24 WAT; 7min ago
  Process: 1559 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 1549 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1558 (mysqld)
    Tasks: 29
   Memory: 280.3M
      CPU: 589ms
   CGroup: /system.slice/mysql.service
           └─1558 /usr/sbin/mysqld

Aug 04 23:07:19 server1-osticket systemd[1]: Starting MySQL Community Server...
Aug 04 23:07:24 server1-osticket systemd[1]: Started MySQL Community Server.
root@server1-osticket:/var/lib/mysql#

ปิดคดี. ฉันหวังว่ามันจะช่วย


0

ลบไฟล์ /var/lib/mysql/.run-mysql_upgrade และควรเริ่มต้น

;)

"พลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบที่ยิ่งใหญ่"


0

ฉันมีปัญหานี้เมื่อฉันตั้งในmax_allowed_packet = 0.5M/etc/mysql/my.cnf

ฉันจะแก้ไขมันได้โดยการเปลี่ยนไปmax_allowed_packet1M


0

คำสั่งต่อไปนี้แก้ไขปัญหาของฉันและ mysql สามารถเริ่มทำงานได้หลังจากนั้น (อาจเป็นประโยชน์ในบางกรณี)

chown -R mysql: /var/lib/mysql
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.