Author Topic: repair table ผ่าน mysql myisamchk,mysqlcheck, show processlist ครับ  (Read 15369 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
#mysql -p

>use db_name;

>check table table_name;

เวลาจะซ่อม table ที่เสียก็
>repair table table_name;

แค่นี้ก็เรียบร้อยครับ
« Last Edit: มีนาคม 02, 2015, 09:36:35 AM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: repair table ผ่าน mysql myisamchk,mysqlcheck, show processlist ครับ
« Reply #1 on: มีนาคม 01, 2015, 08:53:52 PM »
ปกติจะมีรูปแบบ การ repair หลักๆอยู่สองแบบนะครับผม
แบบแรก โดยผ่าน command "myisamchk" กับ "mysqlcheck"

ซึ่งการทำงานจะต่างกัน คือ ถ้ารัน myisamchk จะใช้งานในกรณี database ของเราเป็น รูปแบบ myisam
และควรจะต้องปิดทำการ service mysql daemon ด้วยเพื่อป้องกันการเขียนทับ index ของฐานข้อมูล

ก่อนทำการ ซ่อม table ใน database ควรจะ backup ไว้ก่อนนะครับ
#mysqldump -uroot -p  golfdb golftable > golftable.sql
หลักจาก dump เก็บไว้เสร็จแล้วก็เริ่มซ่อมกันเลย โดยให้เริ่มจาก option -r ก่อน แล้วถ้า -r ทำงานแล้วมี error ให้เปลี่ยนเป็น -o แทนนะครับ (กินเวลาในการ recoveryหน่อย 17GB ประมาณ 13 ชม.)

mode recovery ปกติ สามารถแก้ไขในกรณี table crash ได้ครับผม
#myisamchk -r  golftable.MYI

หรือถ้าในการกรณีเป็น safe recovery จะใช้เวลาการซ่อมนานหน่อย และต้องสำรองพื้นที่ในการ re-index database ด้วยครับ ใช้พื้นที่ประมาณ​ สองเท่าของ ขนาดtable นั้น เช่น
golftable = 15GB ควรจะสำรองพื้นที่ไว้ประมาณ​ 30GB ครับไว้ในการซ่อม
#myisakchk -o golftable.MYI

ส่วนวิธีการของ mysqlcheck เราสามารถทำการเรียกใช้งานในขณะที่ mysql daemon กำลังทำงานอยู่ได้ครับผม
ก็จะช่วย ในการ optimize table ในกรณีที่เรามีการ record ครั้งละเยอะๆมาก ลดการบวมของ table และเพิ่มความเร็วในการ query ข้อมูลครับผม
#mysqlcheck --analyze --medium-check --optimize --auto-repair --databases amavis users -uxx -pxx > optimized.log

ลองดูนะครับผม
« Last Edit: มีนาคม 02, 2015, 10:32:33 AM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
##การแสดง process list ใน mysql

#mysql -p
>show full processlist;

ถ้าในกรณี มี processlist ยาวมากๆ แล้วต้องการแบ่งดูทีหน้า ให้เพิ่ม \P more อาศัยการทำงานของ command ช่วยดังนี้ครับ
>\P more
PAGER set to 'more'
>show full processlist;

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: repair table ผ่าน mysql myisamchk,mysqlcheck, show processlist ครับ
« Reply #3 on: มีนาคม 04, 2015, 12:21:37 AM »
ถ้าท่านใดใช้งานเป็น innodb แล้วเกิด table crash ขึ้นมาลองดูตามนี้ นะครับผม
http://golfreeze.packetlove.com/smileboard/index.php?topic=231.0

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: repair table ผ่าน mysql myisamchk,mysqlcheck, show processlist ครับ
« Reply #4 on: พฤษภาคม 28, 2017, 09:19:38 AM »
 /usr/bin/mysqlcheck doesn't support multiple contradicting commands

โดยปกติจะเกิดกับ mysql 5.6 ขึ้นไป หรือ mariadb ครับ
เนื่องจากในเวอร์ชั่นใหม่จะไม่สามารถใช้ option ที่ ผสมกันได้ ต้องแยกออกครับผม เช่นจาก

#/usr/bin/mysqlcheck --analyze --medium-check --optimize --auto-repair -A -uadminadmin -pabc123

ก็ปรับแก้ไขเป็น

#/usr/bin/mysqlcheck --optimize --auto-repair -A -uadminadmin -pabc123