Category: Database

A Comparison of Pros and Cons between InnoDB and MyISAM

MySQL มี table storage engines อยู่ด้วยกันหลากหลาย แต่ที่นิยมใช้งานกันหลักๆ คือ InnoDB และ MyISAM ในบทความนี้ผมจะมาเปรียบเทียบข้อแตกต่างระหว่าง InnoDB และ MyISAM ในส่วนของ feature, ประสิทธิภาพการทำงาน และข้อดีข้อเสียต่างๆของ InnoDB และ MyISAM

How to streaming export and import MySQL database to other server

ใครเคย dump database พร้อม import database ข้ามเครืองบ้าง? ฟังดูแล้วเหมือนจะทำไม่ได้ แต่จริงๆแล้วสามารถทำได้และไม่มีอะไรสลับซับซ้อนเพียงแค่มีคำสั่ง nc (netcat) มาช่วยในการส่งข้อมูลแบบ streaming ไปยังเครื่องปลายทาง สำหรับการ streaming export and import MySQL database ไปยังเครื่องอื่นสามารถทำได้โดย รัน mysqldump ที่เครื่องต้นทาง และรัน mysql เพื่อ import ข้อมูลที่เครื่องปลายทาง…

How to convert all MyISAM tables to InnoDB in a MySQL Database

วิธีการเปลี่ยน storage engine จาก MyISAM เป็น InnoDB ทีละหลายๆ table สามารถทำได้โดยรันคำสั่ง SELECT CONCAT… เพื่อสร้างคำสั่งในการ convert storage engine จาก MyISAM เป็น InnoDB และเราก็นำผลลัพธ์จากคำสั่งนี้ไปรันต่อที่ MySQL console เพื่อแก้ไข storage engine ได้โดยไม่ต้องพิมพ์ให้เมื่อยและยังครบถ้วนทุก table ที่ต้องการ convert…

Fix missing dependency libmysqlclient.so.15 when installing MySQL-python via yum

สำหรับเครื่อง centos 5 ที่ใช้งาน MySQL ที่สูงกว่า version ที่มาพร้อมกับ OS อาจประสบปัญหาการลง MySQL-python ไม่ว่าจะผ่าน yum หรือ rpm เพราะโปรแกรมทั้งสองจะฟ้องว่าไม่พบไฟล์ libmysqlclient_r.so.15 ซึ่งเป็นไฟล์ที่ package MySQL-python ต้องการ และถ้าหากติดตั้ง MySQL-python โดยไม่สนใจไฟล์ libmysqlclient_r.so.15 ก็ไม่สามารถใช้งานได้

Mass killing MySQL connections

เมื่อเกิดเหตุการ MySQL มีจำนวน connection มากเกินไปจนทำให้เครื่องทำงานช้า หรือเกิดเหตุการ Table ใน database เกิดการ Lock ขึ้นมา จากเหตุการณ์เช่นนี้เราจำเป็นต้องทำให้ระบบกลับมาให้สามารถทำงานได้โดยเกิด down time น้อยที่สุด สำหรับผมแล้วการแก้ไขปัญหาดังกล่าวจึงเลือกที่จะ kill connections ที่ค้างอยู่ออกให้หมด โดยเลือกจะเลือกที่จะเลือก connection ที่เป็น Query และมีการทำงานที่นานกว่า Query อื่นๆ หรือมีสถานะเป็น Locked เป็นหลัก…

How to find all tables use particular storage engine on MySQL

MySQL รองรับ table engine อยู่หลากหลาย ไม่ว่าจะเป็น MyISAM, InnoDB, MEMORY, NDB เป็นต้น ดังนั้นหลายคนอาจคิดว่าเมื่อต้องตรวจสอบว่า table นี้ใช้ engine อะไรคงวุ่นวายไม่ใช่เล่น แต่จริงๆแล้วสามารถทำการค้นหาได้ไม่อยากเย็นอะไร โดยเราจะ query ข้อมูลใน database INFORMATION_SCHEMA ซึ่งภายในเก็บข้อมูลเกี่ยวกับ table ไหนใช้ engine อะไรไว้อยู่แล้ว

MySQL replication: ‘show master status’ shows ‘Empty set (0.00 sec)’

หลังจากได้เตรียม server สำหรับ MySQL replication ด้วยการทำให้ข้อมูลของทั้งสองเครื่องเหมือนกันเรียบร้อยแล้ว ก็มาถึงขั้นตอนการ setup replication ซึ่งขั้นตอนนี้จะต้องรันคำสั่ง “show master status” เพื่อตรวจสอบ bin-log และ position ที่เครื่อง master เพื่อนำข้อมูลที่ได้ไปใช้กับคำสั่ง CHANGE MASTER TO ที่เครื่อง slave แต่เมื่อรันคำสั่ง “show master status” ที่เครื่อง…

How to update the max_connections in MySQL

ปัญหาการเกิด error “too many connections” ในขณะที่ query database อยู่ เกิดจากจำนวน connections ที่เข้ามาติดต่อ database มีจำนวนมากกว่าที่ max_connections ได้กำหนดไว้ ซึ่งโดยปกติแล้ว MySQL จะยอมให้มีจำนวน connection ได้เท่ากับ max_connections+1 โดยที่ max_connections คือ จำนวน connection ที่มากที่สุดที่อนุญาต และ +1…

ติดตั้ง MySQL Cluster

ในบทความนี้จะใช้เครื่องจำนวน 4 เครื่อง โดยแต่ละเครื่องจะมีหน้าที่ storages node จำนวน 2 เครื่อง (mysql-ndb-1 และ mysql-ndb-2) API node จำนวน 1 เครื่อง (mysql-api-1) และ Management node จำนวน 1 เครื่อง (mgmt) package สำหรับการติดตั้ง MySQL Cluster MySQL-clustermanagement-community.xxxx.rpm,…