How to find and kill an advisory lock query?
เมื่อรัน application หรือ query database postgreSQL แล้วพบ "advisory lock" เราจำเป็นต้องตรวจสอบ query ที่ทำให้เกิด Lock และ kill query นั้นทิ้ง เพื่อให้ระบบสามารถืำงานได้ต่อ วิธีการตรวจสอบและแก้ไข ใช้
33 บทความในหัวข้อนี้
เมื่อรัน application หรือ query database postgreSQL แล้วพบ "advisory lock" เราจำเป็นต้องตรวจสอบ query ที่ทำให้เกิด Lock และ kill query นั้นทิ้ง เพื่อให้ระบบสามารถืำงานได้ต่อ วิธีการตรวจสอบและแก้ไข ใช้
ถ้าหากทำการรัน query บน table ที่มีจำนวน row มากมายมหาศาลบน InnoDB storage engine และได้ error ERROR 1206 (HY000): The total number of locks exceeds the lock table size สาเหตุ ERROR 1206 ช้างบน หมายถึ
ระบบ MySQL replication จะมีการทำงานโดย slave จะดึงข้อมูลจาก binlog ที่ master server เพื่อไปทำการ replay ที่เครื่อง slave เอง ซึ่งถ้าหากเกิดปัญหา slave หยุดทำงานด้วย error 1236 ดังข้างล่าง เราสามาถทำก
ถ้าหากพบ error message เหมือนด้านล่างหลังจากที่ execute คำสั่งบน MySQL "Error: Cannot load from mysql.proc. The table is probably corrupted" สาเหตุเกิดจาก schema ของ mysql server เป็นคนละ version กับท
วิธีการติดตั้ง MariaDB 10 บน Ubuntu 12.04 LTS ด้วย repository ของทาง MariaDB import Key และติดตั้ง repository ของ MariaDB sudo apt-get install python-software-properties sudo apt-key adv --recv-keys
SQL*PLUS (sqlplus) จะไม่สามารถกด ↑ " ขึ้น " หรือ ↓ " ลง " เพื่อดูคำสั่งก่อนหน้าได้ แต่สามารถตรวจสอบคำสั่งก่อนหน้าได้ 1 คำสั่งเท่านั้น ซึ่งอาจจะทำให้ไม่สะดวกในการใช้งาน เพราะถ้าหากต้องการส่งคำสั่งก่อนห
Oracle tip: Script แสดง query ที่ทำงานอยู่บน Oracle database (คล้ายๆ คำสั่ง show processlist บน MySQL) show_processlist.sh #!/bin/bash sqlplus -s /nolog << EOF CONNECT / as sysdba whenever sqlerror
โดย default แล้ว User บน Oracle จะมีอายุ password สูงสุด 180 วัน ซึ่ง user จำเป็นต้องทำการเปลี่ยน password ใหม่ แต่ถ้าหากไม่ต้องการให้มีการกำหนดอายุของ password ก็สามารถทำได้โดยแก้ไขค่า PASSWORD_LIFE
MYSQLDUMP เป็นโปรแกรมที่เอาไว้ใช้ในการ export data จาก MySQL database ซึ่งโดยการใช้งานทั่วไปแล้วนิยมนำ MYSQLDUMP มาใช้ในการ export ข้อมูลออกมาหมดทั้งหมด (table หรือ database) แต่ถ้าหากต้องการ export ข
Oracle ได้ออก MySQL Yum repository เพื่อช่วยให้สามารถติดตั้งและ update MySQL server ได้สะดวกยิ่งขึ้น โดยในขั้นต้นจะรองรับ Linux distro ดังนี้ Red Hat/Oracle Enterprise Linux/CentOS 6 Fedora 18 และ 19
MySQL 5.6 มี bug ที่ควรระวัง คือการรันคำสั่ง GRANT privileges บน PhpMyAdmin อาจทำให้เกิด slave หยุด replicate ข้อมูลได้ (bug report: http://bugs.mysql.com/bug.php?id=68892) หลังจากได้ใช้งาน MySQL 5
mysqldump คือคำสั่งที่ใช้ในการ export ข้อมูลใน MySQL ออกมาในรูปแบบของ sql format ซึ่งนิยมนำมาใช้ในการ backup ข้อมูลบน MySQL โดยทั่วไปแล้วเวลา backup database ด้วย mysqldump จะไม่มีการ compress ข้อม
วิธีการแสดง Stored procedure ที่มีอยู่ใน MySQL และแสดง procedure code ที่อยู่ใน Stored procedure สามารถทำได้ดังนี้ การแสดง MySQL stored procedure แสดง MySQL stored procedure ที่มีอยู่ในระบบ mysql> SHO
MySQL tip: การหา top 10 query บน MYSQL ที่ถูกใช้งานมากที่สุดในช่วงเวลาหนึ่งๆ โดยการหา top 10 query นี้สามารถทำได้ 2 วิธีด้วยกัน คือ ใช้ tcpdump หรือ mysqlbinlog ในการนำ query ต่างๆ มาเข้า process การจ
MySQL database เราสามารถ copy table (โครงสร้างและข้อมูลต่างๆ) ได้ด้วยง่ายๆ ดังนี้ สมมติต้องการสร้าง table ชื่อ table_new มาใหม่ โดยให้มีโครงสร้างและข้อมูลจาก table ชื่อ table_name สามารถทำได้ดังนี้
ถ้าหากคุณได้ทำการ upgrade Zimbra Collaboration Server (ZCS) ไปยัง version 7 แล้วพบ error ตามด้านล่าง Table upgrade required. Please do "REPAIR TABLE" (2045019) ซึ่งมาจากคำสั่ง mysqlcheck ดังตัวอย่าง D
โดยทั่วไปแล้วเราจะใช้ mysqldump ในการ export ข้อมูลของ database ออกมาซึ่งข้อมูลที่ export ออกมาจะมีทั้ง structure (schema) และข้อมูลของ database นั้นๆ แต่ถ้าหากต้องการ export เฉพาะ structure (schema)
MySQL ถ้าหากมีการเปิดใช้งาน binary log จะทำให้มีการเสียเนื้อที่บางส่วนไป ซึ่งถ้าหากไม่มีการกำหนดวันและเวลาในการ expire ของ binary log ดีๆแล้วจะทำให้มีโอกาสเกิดปัญหาเรื่องเนื้อที่ไม่พอใช้งานเกิดขึ้นอย่
Zimbra ใช้ MySQL database ในการเก็บข้อมูลที่ใช้ในการทำงาน ซึ่งโดยปกติแล้วถ้าหากเข้าใช้งาน mysql ด้วย login เป็น zimbra แล้วไม่จำเป็นต้องใส่ password ในการเข้าใช้งาน MySQL แต่ถ้าหากมีต้องการใช้งาน MySQ
เมื่อต้อง import ข้อมูล SQL จำนวนมหาศาลเข้าไปยัง MySQL server โดยปกติแล้วจะใช้เวลาในการ import ค่อนข้างนาน แต่ก็สามารถช่วยเร่ง speed การ import ให้ไวมากขึ้นกว่าเดิมได้โดยใช้ tip เล็กๆ น้อยๆ ดังต่อไปใน
SQL query สำหรับตรวจสอบเนื่อที่การใช้งานของ database และ table ต่างๆบน MySQL Check size of all database ตรวจสอบขนาดเนื่อที่ของแต่ละ database บน MySQL สามารถทำได้รันคำสั่งด้านล่าง SELECT TABLE_SCHEMA "
โดย default แล้ว MySQL จะเปิดใช้งาน InnoDB storage engine อยู่แล้ว ดังนั้นถ้าหากไม่ต้องการใช้งาน InnoDB storage engine ก็ให้ปิดการใช้งานไปเลยเพื่อประหยัดทรัพยากรของระบบ โดยวิธีการปิดการใช้งาน InnoDB ส
MySQL มี table storage engines อยู่ด้วยกันหลากหลาย แต่ที่นิยมใช้งานกันหลักๆ คือ InnoDB และ MyISAM ในบทความนี้ผมจะมาเปรียบเทียบข้อแตกต่างระหว่าง InnoDB และ MyISAM ในส่วนของ feature, ประสิทธิภาพการทำงาน
NUMA เป็นสถาปัตยกรรมแบบใหม่สำหรับ multiple processor โดยแต่ละ processor (physical) จะมี memory ของตัวเอง ชุดหนึ่ง ซึ่งจะทำให้ processor สามารถเข้าถึง memory ได้รวดเร็วมากกว่าสถปัตยกรรมเก่า ระบบปฏิบัต
ใครเคย dump database พร้อม import database ข้ามเครืองบ้าง? ฟังดูแล้วเหมือนจะทำไม่ได้ แต่จริงๆแล้วสามารถทำได้และไม่มีอะไรสลับซับซ้อนเพียงแค่มีคำสั่ง nc (netcat) มาช่วยในการส่งข้อมูลแบบ streaming ไปยังเ
วิธีการเปลี่ยน storage engine จาก MyISAM เป็น InnoDB ทีละหลายๆ table สามารถทำได้โดยรันคำสั่ง SELECT CONCAT... เพื่อสร้างคำสั่งในการ convert storage engine จาก MyISAM เป็น InnoDB และเราก็นำผลลัพธ์จากคำ
สำหรับเครื่อง centos 5 ที่ใช้งาน MySQL ที่สูงกว่า version ที่มาพร้อมกับ OS อาจประสบปัญหาการลง MySQL-python ไม่ว่าจะผ่าน yum หรือ rpm เพราะโปรแกรมทั้งสองจะฟ้องว่าไม่พบไฟล์ libmysqlclient_r.so.15 ซึ่งเป
MySQL server hardware, OS and configuration tuning tips Hardware and OS ควรใช้ 64-bit OS เพราะรองรับการเพิ่ม memory ที่มากขึ้น ไม่ใช้ software raid เลี่ยงการใช้ RAID 5 และใช้ RAID 10 แทน ถ้าหากมี Batt
เมื่อเกิดเหตุการ MySQL มีจำนวน connection มากเกินไปจนทำให้เครื่องทำงานช้า หรือเกิดเหตุการ Table ใน database เกิดการ Lock ขึ้นมา จากเหตุการณ์เช่นนี้เราจำเป็นต้องทำให้ระบบกลับมาให้สามารถทำงานได้โดยเกิด
MySQL รองรับ table engine อยู่หลากหลาย ไม่ว่าจะเป็น MyISAM, InnoDB, MEMORY, NDB เป็นต้น ดังนั้นหลายคนอาจคิดว่าเมื่อต้องตรวจสอบว่า table นี้ใช้ engine อะไรคงวุ่นวายไม่ใช่เล่น แต่จริงๆแล้วสามารถทำการค้น
หลังจากได้เตรียม server สำหรับ MySQL replication ด้วยการทำให้ข้อมูลของทั้งสองเครื่องเหมือนกันเรียบร้อยแล้ว ก็มาถึงขั้นตอนการ setup replication ซึ่งขั้นตอนนี้จะต้องรันคำสั่ง "show master status" เพื่อต
ปัญหาการเกิด error " too many connections " ในขณะที่ query database อยู่ เกิดจากจำนวน connections ที่เข้ามาติดต่อ database มีจำนวนมากกว่าที่ max_connections ได้กำหนดไว้ ซึ่งโดยปกติแล้ว MySQL จะยอมให้ม
ในบทความนี้จะใช้เครื่องจำนวน 4 เครื่อง โดยแต่ละเครื่องจะมีหน้าที่ storages node จำนวน 2 เครื่อง (mysql-ndb-1 และ mysql-ndb-2) API node จำนวน 1 เครื่อง (mysql-api-1) และ Management node จำนวน 1 เครื่อง