wmthai
January 31, 2013, 1:34am
1
สวัสดีครับ พอดีเมื่ออาทิตย์ก่อน server ที่ดูแลอยู่เกิดอาการล่มครับ และหลังจากลงระบบแล้วเกิดปัญหาครับ
ก่อนอื่นเลย เอา spec ไปก่อนะครับ
server : SUNFire X4150
os : centos 6.3
mysql : 5.1
php : 5
** ขอกล่าวถึงเฉพาะเรื่อง mysql นะครับ
คือระบบมันรวนมากครับ เดี๋ยว service โน้นติด นี่ดับ ฯลฯ ท้ายสุด mysql start ไม่ติดครับ ก็เลยตัดสินใจลงใหม่
แต่ด้วย mysql มัน start ไม่ได้ ก็เลยไม่สามารถ dump ตามขั้นตอนปกติได้
ผมก็จำต้องใช้วิธีหักดิบ คือเข้าไป copy folder data มาจาก /var/lib/mysql ครับ
เอามาดิบๆทั้งดุ้นเลย เมื่อก่อนใช้ server windows ก็ลงเครื่องใหม่ให้ mysql มันรุ่นเดียวกัน เอา folder นี้ทับไป จบ
แต่พอล่าสุดนี้ผมลองวิธีนี้ดู ปรากฎว่าใช้การไม่ได้เลยครับ ใน phpmyadmin มองเห็น DB จริง แต่ไม่ปรากฎ table เลย (มี 100 กว่า)
ทีนี้ผมอยากรู้ว่า error ยังไง เลยเข้าส่วนจัดการ mysql ใน webmin ดูครับ พบ error ว่า
[h=3]/usr/bin/mysqlshow: Cannot list tables in satitcom: Can’t read dir of ‘./satitcom/’ (errno: 13)[/h]
ทีนี้อยากรบกวนท่านผู้รู้ครับ ผมจะสามารถแก้ไขปัญหาได้อย่างไรบ้างครับเพื่อให้ฐานข้อมูลทำงานได้เหมือนเดิม
ปล.ข้อมูลใน table สำคัญมากๆๆๆครับผม
kke
January 31, 2013, 1:51am
2
file system มีปัญหาหรือเปล่า
ถ้ากด reset หน้าเครื่องบ่อยๆ file system มีปัญหาแน่นอน
เข้าหน้าเครื่อง boot เข้า singleuser แล้ว fsck ซักรอบ
ติด Permission หรือเปล่าครับ
มี mysql error log หรือเปล่าครับ?
น่าจะติดเรื่อง permission นะ ถ้าไม่รู้ว่า mysql run ด้วย user อะไร ลองใช้ chmod 666 ลงไปดูก่อนว่า work หรือเปล่า?
แต่คิดว่า CentOS น่าจะเป็น user ชื่อ mysql นะครับ
สั่ง chown mysql:mysql -R /var/lib/mysql แล้ว restart mysql service ใหม่ครับ
ปล. เครื่องติดๆ ดับๆ นี่ถ้าหาสาเหตุไม่เจอ ลงใหม่มันก็เท่านั้นนะครับ
น่าจะเป็นปัญหาเรื่อง permission ครับ
ถ้าให้ชัวร์ ทำไมไม่ไปดู logfile ของ mysql หละครับ
ton1
January 31, 2013, 11:55am
7
น่าจะเป็นที่ตัว tables เสียนะครับ ลอง repair ดูครับ
myisamchk -o *.MYI
wmthai
January 31, 2013, 2:41pm
8
DinoNet:
มี mysql error log หรือเปล่าครับ?
น่าจะติดเรื่อง permission นะ ถ้าไม่รู้ว่า mysql run ด้วย user อะไร ลองใช้ chmod 666 ลงไปดูก่อนว่า work หรือเปล่า?
แต่คิดว่า CentOS น่าจะเป็น user ชื่อ mysql นะครับ
สั่ง chown mysql:mysql -R /var/lib/mysql แล้ว restart mysql service ใหม่ครับ
ปล. เครื่องติดๆ ดับๆ นี่ถ้าหาสาเหตุไม่เจอ ลงใหม่มันก็เท่านั้นนะครับ
ขอบคุณทุกท่านที่ตอบนะครับ ขอทำความเข้าใจดังนี้ก่อนนะครับ
1.ที่ติดๆดับๆ ไม่ใช่เครื่องครับแต่เป็น service
2.ขณะนี้ file system “ไม่น่าจะ” มีปัญหาครับ เพราะเพิ่งจะติดตั้งระบบใหม่
3.File data ของ mysql ผมใช้วิธี copy ทื่อๆ จาก os เดิม(ก่อน format) มาใส่ทับครับ
เพราะขณะนั้นไม่สามารถ start mysql ได้เลย ลงใหม่ก็ start ไม่ติดครับ ก็เลยไม่สามารถ dump ข้อมูลออกมาได้เลย
สำหรับวิธีของคุณ DinoNet และท่านอื่นๆเดี๋ยวผมขอรับไปลองดูก่อนนะครับ พอดีแถวนี้ต่อ VPN เข้าไปไม่ติด :7f5341cc:
icez
January 31, 2013, 3:00pm
9
เข้าได้แล้วลอง check log /var/log/mysqld.log ด้วยนะครับ
kke
January 31, 2013, 5:11pm
10
wmthai:
ขอบคุณทุกท่านที่ตอบนะครับ ขอทำความเข้าใจดังนี้ก่อนนะครับ
1.ที่ติดๆดับๆ ไม่ใช่เครื่องครับแต่เป็น service
2.ขณะนี้ file system “ไม่น่าจะ” มีปัญหาครับ เพราะเพิ่งจะติดตั้งระบบใหม่
3.File data ของ mysql ผมใช้วิธี copy ทื่อๆ จาก os เดิม(ก่อน format) มาใส่ทับครับ
เพราะขณะนั้นไม่สามารถ start mysql ได้เลย ลงใหม่ก็ start ไม่ติดครับ ก็เลยไม่สามารถ dump ข้อมูลออกมาได้เลย
สำหรับวิธีของคุณ DinoNet และท่านอื่นๆเดี๋ยวผมขอรับไปลองดูก่อนนะครับ พอดีแถวนี้ต่อ VPN เข้าไปไม่ติด :7f5341cc:
อ่อครับ เครื่องติดตั้งใหม่งั้นก็ตัดปัญหาเรื่อง fs error ออกไปได้เลย
กรณี copy ไฟล์มาวางดื้อๆ ก็น่าจะติดปัญหาเรื่อง owner/permission ของไฟล์ข้อมูลแหละครับ
wmthai
January 31, 2013, 9:25pm
11
นี่คือข้อความใน log ครับ
130131 19:21:36 [ERROR] Cannot find or open table satitcom/com_assignment_submissions from
the internal data dictionary of InnoDB though the .frm file for the
table exists. Maybe you have deleted and recreated InnoDB data
files but have forgotten to delete the corresponding .frm files
of InnoDB tables, or you have moved .frm files to another database?
or, the table contains indexes that this version of the engine
doesn’t support.
See http://dev.mysql.com/doc/refman/5.1/en/innodb-troubleshooting.html
how you can resolve the problem.
kke
January 31, 2013, 9:48pm
12
เอาไฟล์ ibdata มาด้วยหรือเปล่า
ข้อมูล innodb มันอยู่ในไฟล์ ibdata ครับ
จริงๆถ้าให้ดีน่าจะ dump เป็น .sql ออกมาจากเครื่องเก่า แล้วมา import เข้าเครื่องใหม่
แต่จริงๆยก folder mysql มาทั้งยวงเลยมันก็ได้ แต่ถ้าก็อปมาแค่ folder ย่อยของบาง db ข้อมูลตาราง innodb มันไม่อยู่ในนั้น
wmthai
January 31, 2013, 9:55pm
13
ยกมาหมดเลยครับ ทั้ง folder /var/lib/mysql เลยครับ
icez
January 31, 2013, 11:15pm
14
check permission ดีแล้วใช่มั้ยคัรบ? ลองสั่ง ls -la /var/lib/mysql ดูแล้วยังเอ่ย
icez
January 31, 2013, 11:27pm
16
ไม่เป็นผลนี่ยังไงฮะ ที่ผมบอกนี่คือให้ check ว่า owner ถูกมั้ย (mysql.mysql) นะ -*-’
wmthai
February 1, 2013, 12:16am
17
เช็คแล้วครับ ถูกต้อง
ไม่เป็นผล = ลองดูหลายๆวิธี(อีกครั้ง) ก็ไม่ได้ผล(ไม่เห็น table)ครับ
icez
February 1, 2013, 12:35am
18
centos รึเปล่าครับ?
ลองสั่ง setenforce 0 แล้วลองดูอีกทีครับ
ถ้าสั่งแล้วใช้ได้ ไปแก้ไฟล์ /etc/selinux/config ตรง SELINUX=enforcing เป็น SELINUX=disabled เพื่อให้มีผลถาวรครับ
wmthai
February 1, 2013, 1:00am
19
ปิดไว้แต่แรกแล้วครับ ปากฎว่าก็ยังเปิดฐานข้อมูลไม่ได้อยู่ดีครับผม :485c3a61:
icez
February 1, 2013, 1:05am
20
สั่ง getenforce ดูสถานะดูครับ ควรจะขึ้นว่า Permissive หรือ Disabled นะครับ
errno 13 = permission denied ไม่ติด selinux ก็คือ owner/permission ผิดอะ
chown mysql.mysql -R /var/lib/mysql
chmod 770 -R /var/lib/mysql
restorecon /var/lib/mysql
setenforce 0
ถ้าไม่ได้อีก ls -la /var/lib/mysql มาให้ดูหน่อยครับ