การแก้ปัญหาเมื่อไม่สามารถ Start MariaDB บน Ubuntu ได้
ก่อนอื่นเรามาดูกันก่อนว่า MySQL มีปัญหาอะไร โดยการเปิด Terminal พิมพ์ข้อความตามด้านล่าง
sudo service mysql status
ผมได้ผลตอบกลับมา มีข้อความตามด้านล่าง เป็นสีแดงๆ (ข้อความตอบกลับมีหลายบรรทัดครับ ผมตัดมาเฉพาะที่เกี่ยวข้องนะครับ)
/etc/init.d/mysql[1640]: 150831 12:38:08 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --sy...take effect.
ข้อผิดพลาดนี้บอกว่า มีปัญหาจาก error log ผมเลยไปปิด error log มันซะเลย
เปิด config ของ mysql (MariaDB) มาแก้ไข
sudo gedit /etc/mysql/mariadb.conf.d/mysqld.cnf
มองหาบรรทัด log_error แล้วปิดมันซะด้วยการเติม # ลงไปด้านหน้า
#log_error = /var/log/mysql/error.log
ลอง start MySQL ดูครับ
sudo service mysql start
ถ้าสามารถทำงานได้เป็นปกติ ก็จบขั้นตอนครับ แต่ถ้ายังมีปัญหาอยู่ ก็ให้แก้ไขให้เสร็จด้วยวิธีการตามด้านบน
ส่วนตัว ผมมีการเปลี่ยนตำแหน่งที่เก็บฐานข้อมูลของ MariaDB ด้วย ทำให้ผมพบปัญหาถัดมา ซึ่งมีข้อความ Error ตามด้านล่าง
mysqld[1743]: InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
mysqld[1743]: InnoDB: crash recovery and ignore that table.
mysqld[1743]: InnoDB: 3) If the file system or the disk is broken, and you cannot remove
mysqld[1743]: InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
mysqld[1743]: InnoDB: and force InnoDB to continue crash recovery here.
ปัญหานี้เกิดจากมีไฟล์ .ibd ค้างอยู่ในระบบ ซึ่งการแก้ไข เขาแจ้งให้ลบไฟล์นี้ออกและ restart mysql ใหม่ครับ แต่หากไม่พบไฟล์นี้หรือไม่สามารถลบได้ให้ เปิดไฟล์ my.cnf และกำหนด innodb_force_recovery ให้มากกว่า 0
# # * InnoDB
# # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
innodb_force_recovery = 1