ทุกครั้งที่เราทำการเรียกใช้งาน MySQL ไม่ว่าจะเรียกผ่าน command line ของ MySQL เอง หรือว่าจะเป็นการใช้คำสั่ง sql ผ่านทาง php หรืออะไรก็ตาม คำสั่ง SQL ที่เราใช้จะถูกนำไปเก็บไว้ยัง mysqlbinlog
โดยตัว engin ของ MySQL จะทำการสร้าง log file เอาไว้ว่าเราเคยใช้คำสั่งอะไรไปบ้าง แต่ว่าข้อมูลที่เก็บนั้นจะเป็น ข้อมูลแบบ binary ซึ่งทำให้เราไม่สามารถอ่านข้อมูลได้โดยตรง และโดยปกติแล้ว logfile ตัวนี้จะถูกเก็บไว้ในชื่อ hostname-bin.001 ซึ่งจะมีการ run หมายเลข ID ของ log ขึ้นไปเรื่อยๆ และจะถูกเก็บไว้ใน folder เดี่ยวกับ folder ที่เก็บ database ของ MySQL
ในการจะทำให้ข้อมูลที่อยู่ใน mysqlbinlog เป็น คำส่ง SQL ก็สามารถใช้งานได้ด้วยคำสั่งง่ายๆ เพียงคำสั่งเดี่ยว ดังนี้
1 | # mysqlbinlog hostname-bin.001 > /tmp/queries.sql |
จากนั้นให้ลองไปเปิด ข้อมูลใน /tmp/queries.sql ด้วย vi หรือ nano แล้วแต่ถนัดนะครับจะพบว่ามีคำสั่ง sql ที่เราเคยใช้อยู่ใน file นี้ และจะมีวันที่และเวลาที่ใช้งานกำกับไว้ด้วย
การที่ MySQL เก็บข้อมูลของคำสั่งที่เคยมีการเรียกใช้ทั้งหมดลงไปใน file binarylog ก็มีข้อดี คือเราสามารถทำการ ตรวจสอบย้อยหลังได้ว่า มีการใช้งานคำสั่ง sql อะไรที่อาจมีผลกระทบกับระบบไปบ้าง และยังสามารถทำการนำเอาข้อมูลใน mysqlbinlog มาเป็นข้อมูล backup เอาไว้ใช้ยามจำเป็นได้อีกด้วย