จบชีวิตลง เพราะ reboot เครื่อง database หายไปครึ่ง ส่งงานวันนี้ ไม่ได้ Backup ไว้ด้วย

เข้าไป Reboot เครื่องเมื่อเช้า เพราะ server มันแปลกๆ แล้วทำการเข้าหน้าเว็บไม่ได้

ให้พี่ icez แก้ไข กลับมาใช้งานได้ แต่ดาต้าหาไปหมดเลย copy กับมาก็ใช้งานไม่ได้ T__T

Table ‘…’ doesn’t exist

ใครพอมีแนวทางช่วยชีวิตผมได้บ้างหรือเปล่าครับ :189bbdde:

ไม่คิดจะทำ backup บางเลยหรือครับ backup database นี้ทำได้ทุกวัน cron ดึก ตีสาม ตีสี่ ก็ได้

คิดครับ แต่พื้นที่ไม่พอ เลยไม่ได้ Backup ไว้ที่เครื่อง และไม่ได้ Backup ไปที่อื่นด้วย

ไม่ได้ Backup นี่ยากเลยครับ

ใน /var/lib/mysql/<<DBName>> ยังมีไฟล์อะไรอยู่บ้างครับ?

มีครบเห็น Table แต่เข้าไปดูข้อมูลไม่ได้ครับ

[COLOR=#333333]มีครบเห็น Table แต่เข้าไปดูข้อมูลไม่ได้ครับ เข้าปุบแจ้ง #1146 Table ‘…’ [/COLOR][COLOR=#333333]doesn’t exist ครับ[/COLOR]

เอาแบบไวๆ ก่อนนะ ดูเรื่องไฟล์ permission ทั้งหมดก่อนว่าตรงหรือเปล่า

owner, permission ต้องเหมือนกันหมด

ถ้ายังไม่ได้ลองสั่ง chmod 777 ทั้งหมดดูก่อน แล้วลอง restart mysql ดู

ปล. ว่าแต่ table engine เป็นอะไรครับ? myisam หรือว่า innodb

ถ้า table ที่อ่านไม่ได้ เป็น innodb ต้องดูไฟล์ ibdata ว่า size เป็นยังไง ปกติหรือเปล่า

ปล2.ก่อนทำ backup file ออกมาก่อนนะครับ

ปล3. อาจยังมีหวังนะ

ขอบคุณมากเลยครับ เดียวลองดูเลยครับ :slight_smile:

ลองแล้วครับ เป็น innodb ลอง cp database แล้วไปเปิดต่อก็ไม่ได้เข้า table ไม่ได้

อ่านหลายๆเว็บมันบอกว่าเอาไฟล์ ibdata เก่ามันวางทับ แต่ไฟล์เก่าไม่มี

งั้นลองไอ้นี่ดู

https://launchpad.net/percona-data-recovery-tool-for-innodb

backup กลับมาทำเครื่องที่บ้านดีกว่านะ

ไล่สถานการณ์ตามนี้ครับ

  1. disk เต็ม — สถานะตอนนี้คือ mysql ค้าง stop ปกติไม่ได้เพราะมันพยายามเขียนข้อมูลลง disk อยู่ แต่ disk เต็ม
  2. สั่ง reboot เครื่อง (ทั้งๆ ที่ disk เต็มแบบนั้น)
    — หลังจากนี้ผมเข้ามาดู —
  3. mysql ibdata เขียนไม่สมบูรณ์ + ib_log พังอนาถ (ณ ตอนที่เข้ามาดูมันขึ้นขนาดไฟล์ 0 byte ไปแล้ว)
  4. clear file log ที่ทำให้ disk เต็ม (error log จากเว็บในเครื่องเว็บหนึ่ง)
  5. ฝั่ง mysql เหลือสิ่งที่ทำได้คือ clear ibdata + ib_log ทิ้ง (ผม rename ibdata เติม .bak) แล้ว start mysql กลับขึ้นมาเพื่อให้ db ที่เหลือยังทำงานได้

ฝั่งด้านนอกผมเป็น replicate disk (อารมณ์ raid 1) ใน cloud มันก็เลยย้อนไม่ได้ ไม่ได้สั่ง snapshot อะไรไว้
ไม่มี backup ย้อนหลังให้เพราะแค่นี้ก็เปลืองพื้นที่ 2 เท่าของพื้นที่ที่ใช้จริงแล้วครับ (ไม่นับว่าที่ server แต่ละตัวทำ raid10 อีก เท่ากับเปลืองพื้นที่ 4 เท่าในการเก็บข้อมูล 1 copy)

============

อยากเตือนคนที่เอะอะอะไรก็ reboot เครื่องมาก ว่า linux มันอ่อนไหวกับการ reboot/reset เอามากๆ
ถ้าจะรีบูตต้องเช็คแล้วว่าเครื่องอยู่ในสถานะปกติจริงๆ ไม่มีอะไรมีปัญหาค่อยสั่ง reboot หรือมันค้างหนักถึงขั้นเกิน 5 นาทีแล้วก็ remote เข้าไปไม่ได้จริงๆ ถึงค่อย reboot

บทเรียนชั้นยอดเลยครับ :slight_smile: กำลังลองต่างๆนาๆครับ โอกาศที่จะกลับไม่รู้กี่ % สุดท้ายคงต้องมานั้งทำเว็บทั้งหมด สิบกว่าเว็บ T__T

แต่ก็ขอบคุณพี่ icez มากเลยครับ

roundcube รีบิวไม่ได้ครับ รบกวนพี่ช่วยดูให้ทีนะครับ ผมจะไปลุยกับเว็บต่อละครับ ^___^

เคยเจออาการแบบนี้ โชคดีที่ Backup ไว้ครับ ไม่งั้นหายเกลี้ยงหมดเลย :e111de78:

ในเคสนี้ขั้นตอนที่ถูกต้องจริงๆ คือหาทางทำให้มี free space ในระบบเพิ่มขึ้นมาครับ mysql จะทำงานต่อได้เองเลยไม่ต้องทำอะไร

innodb อาจมีหนทางครับ ลองอ่าน
http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

อ่านข้อ 3 ของผมดีๆ ครับ

“(ณ ตอนที่เข้ามาดูมันขึ้นขนาดไฟล์ 0 byte ไปแล้ว)”

คิดว่าจะมีข้อมูลอะไรเหลือให้กู้อีกเหรอครับ ไฟล์ 0 byte เนี่ย - -’

เขียนว่า iblog = 0 นิ

force recovery สามารถ ignore log ได้ครับ

อ่า… ผมหมายถึงทั้งสองไฟล์เลยฮะ ไม่ใช่แค่ iblog

ไม่งั้นผมไม่บอกหรอกว่ากู้ไม่ได้ - -’ ibdata พังแบบเละเทะก็กู้มาหลายรอบแล้ว แต่ไม่เคยเจอเคสที่ size กลายเป็น 0 แบบนี้

ไปรื้อเจอ Backup เก่ามาครับ


แต่เซงตรงที่มีบ้างเว็บ กด Backup ไปสะงัน ทับของเก่าเลย เวนกำ