MySQL คืออะไร และวิธีติดตั้งบน Cloud Server
MySQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์สที่อยู่เบื้องหลังเว็บและแอปจำนวนมหาศาลทั่วโลก ตั้งแต่เว็บ WordPress ไปจนถึงระบบธุรกิจขนาดใหญ่
- หมวดหมู่
- ฐานข้อมูล
- ติดตั้งบนเซิร์ฟเวอร์เองได้
- ได้
- สเปกเริ่มต้นที่แนะนำ
- 2 vCPU · RAM 4 GB
- ไลเซนส์
- GPLv2 (Community Edition)
- เว็บทางการ
- เปิดเว็บไซต์
- ISO/IEC 27001
- ISO 22301
- ISO 20000-1
- CSA-STAR
Data Center ในไทย มาตรฐาน TIA-942 Tier 3+ ข้อมูลอยู่ในประเทศไทย
MySQL คืออะไร
MySQL เก็บข้อมูลเป็นตารางที่มีความสัมพันธ์กัน และใช้ภาษา SQL ในการเพิ่ม ค้นหา และแก้ไขข้อมูล จุดแข็งคือความนิ่ง เอกสารและตัวอย่างจำนวนมาก และการที่นักพัฒนาแทบทุกคนใช้เป็น
เอนจินหลักที่ใช้งานกันคือ InnoDB ซึ่งรองรับ Transaction และการล็อกระดับแถว ทำให้เหมาะกับงานที่มีการเขียนพร้อมกันหลายรายการ เช่น ระบบสั่งซื้อและระบบบัญชี
ค่าที่มีผลต่อประสิทธิภาพมากที่สุดคือ innodb_buffer_pool_size ซึ่งกำหนดว่าจะให้ฐานข้อมูลเก็บข้อมูลไว้ใน RAM มากแค่ไหน ถ้าตั้งไว้น้อยเกินไป ฐานข้อมูลจะวิ่งอ่านดิสก์ตลอดเวลาและช้าลงอย่างเห็นได้ชัด
ความสามารถเด่นของ MySQL
รองรับ Transaction เต็มรูปแบบ
InnoDB รับประกันความถูกต้องของข้อมูลแม้ระบบดับกลางคัน เหมาะกับงานการเงินและคำสั่งซื้อ
ทำ Replication ได้
สร้างเครื่องสำเนาเพื่อกระจายภาระการอ่าน หรือใช้เป็นสำรองพร้อมสลับเมื่อเครื่องหลักมีปัญหา
เครื่องมือรอบด้านครบ
ทั้ง phpMyAdmin, MySQL Workbench และไลบรารีของทุกภาษาโปรแกรม
รองรับข้อมูล JSON
เก็บและคิวรีข้อมูลกึ่งโครงสร้างในฐานข้อมูลเดียวกับข้อมูลตารางปกติได้
สิทธิ์ผู้ใช้ละเอียด
กำหนดได้ถึงระดับตารางและคำสั่ง เพื่อให้แอปแต่ละตัวมีสิทธิ์เท่าที่จำเป็น
ใช้ MySQL ทำอะไรได้บ้าง
- ฐานข้อมูลของเว็บไซต์ WordPress, Laravel และเว็บ PHP ทั่วไป
- ระบบหลังบ้านขององค์กร เช่น ระบบขาย คลังสินค้า และงานบุคคล
- แอปมือถือที่ต้องการฐานข้อมูลกลางบนเซิร์ฟเวอร์
- ระบบที่ต้องแยกเซิร์ฟเวอร์ฐานข้อมูลออกจากเว็บเพื่อรองรับผู้ใช้จำนวนมาก
สเปก Cloud Server ที่แนะนำ
| ระดับการใช้งาน | vCPU | RAM | Disk |
|---|---|---|---|
| เริ่มต้นเว็บเดียวหรือระบบภายในทีมเล็ก | 2 vCPU | 4 GB | NVMe 40 GB |
| แนะนำฐานข้อมูลงานจริงขนาดไม่กี่สิบกิกะไบต์ | 4 vCPU | 16 GB | NVMe 200 GB |
| ระบบใหญ่ฐานข้อมูลหลักขององค์กรที่มีทราฟฟิกเขียนสูง | 8 vCPU ขึ้นไป | 32 GB ขึ้นไป | NVMe 500 GB ขึ้นไป |
ดูราคาตามสเปกได้ที่ ราคา Cloud Compute หรือให้ทีมงานช่วยประเมินสเปกจากปริมาณผู้ใช้จริงของคุณ
วิธีติดตั้ง MySQL บน Cloud Server ของ THAI DATA CLOUD
ขั้นตอนด้านล่างใช้กับ Cloud Server ที่เพิ่งสร้างใหม่จากหน้าจัดการของ THAI DATA CLOUD ได้ทันที ถ้าไม่สะดวกทำเอง ทีมวิศวกรของเราติดตั้งและตั้งค่าให้ฟรีสำหรับลูกค้า Cloud Server
สิ่งที่ต้องเตรียม
- Ubuntu Server 24.04 LTS หรือ Rocky Linux 9
- ดิสก์ NVMe เพราะฐานข้อมูลอ่อนไหวต่อความเร็วดิสก์มากที่สุด
- RAM มากพอให้ตั้ง buffer pool ได้ราวครึ่งหนึ่งถึงสามในสี่ของ RAM ทั้งเครื่อง
ทดสอบบน Ubuntu Server 24.04 LTS
- 1
ติดตั้ง MySQL Server
sudo apt update sudo apt -y install mysql-server sudo systemctl enable --now mysql - 2
ตั้งค่าความปลอดภัยเบื้องต้น
ตั้งรหัสผ่าน root ปิดผู้ใช้นิรนาม และลบฐานข้อมูลทดสอบ
sudo mysql_secure_installation - 3
สร้างฐานข้อมูลและผู้ใช้ของแอป
ให้สิทธิ์เฉพาะฐานข้อมูลที่แอปนั้นใช้ ไม่ใช้ผู้ใช้ root ในแอปเด็ดขาด
sudo mysql -e "CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" sudo mysql -e "CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'ChangeThisStrongPassword';" sudo mysql -e "GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;" - 4
จูนค่าหลักใน /etc/mysql/mysql.conf.d/mysqld.cnf
ตั้ง buffer pool ให้ราว 60 ถึง 70 เปอร์เซ็นต์ของ RAM เมื่อเครื่องนี้ทำหน้าที่เป็นฐานข้อมูลอย่างเดียว
[mysqld] innodb_buffer_pool_size = 8G innodb_log_file_size = 1G innodb_flush_method = O_DIRECT max_connections = 300 slow_query_log = 1 long_query_time = 1 - 5
เปิดการเชื่อมต่อจากเว็บเซิร์ฟเวอร์ในวงภายใน
ผูก MySQL กับไอพีภายในเท่านั้น และเปิด Firewall เฉพาะไอพีของเว็บเซิร์ฟเวอร์ ห้ามเปิดพอร์ต 3306 สู่อินเทอร์เน็ต
# ใน mysqld.cnf bind-address = 10.10.0.20 sudo ufw allow from 10.10.0.11 to any port 3306 proto tcp sudo systemctl restart mysql - 6
ตั้งการสำรองข้อมูลอัตโนมัติ
ตัวอย่างนี้ดัมป์ฐานข้อมูลทุกวันตอนตีสองและเก็บย้อนหลัง 14 วัน
sudo mkdir -p /var/backups/mysql ( sudo crontab -l 2>/dev/null; echo "0 2 * * * mysqldump --single-transaction --routines --all-databases | gzip > /var/backups/mysql/all-\$(date +\%F).sql.gz; find /var/backups/mysql -mtime +14 -delete" ) | sudo crontab -
สำรองข้อมูลไว้บนเครื่องเดียวกันไม่ถือว่าปลอดภัย ควรส่งสำเนาออกไปยัง Object Storage หรือเครื่องสำรองคนละไซต์
พอร์ตที่ต้องเปิดบน Firewall
| พอร์ต | โปรโตคอล | ใช้ทำอะไร |
|---|---|---|
| 3306 | TCP | การเชื่อมต่อฐานข้อมูล (เปิดเฉพาะวงภายในเท่านั้น) |
สิ่งที่ควรทำต่อหลังติดตั้งเสร็จ
- ห้ามเปิดพอร์ต 3306 สู่อินเทอร์เน็ต ให้เข้าถึงผ่าน Private Network หรือ SSH Tunnel
- สร้างผู้ใช้แยกต่อแอปพร้อมสิทธิ์เท่าที่จำเป็น และไม่ใช้ root ในโค้ด
- เปิด slow query log เพื่อหาคิวรีที่ทำให้ระบบช้าก่อนที่ผู้ใช้จะบ่น
- ตั้งการสำรองข้อมูลอัตโนมัติและทดสอบกู้คืนจริงอย่างน้อยไตรมาสละครั้ง
- เปิดการเข้ารหัสการเชื่อมต่อด้วย TLS เมื่อฐานข้อมูลกับแอปอยู่คนละเครื่อง
ทำไมควรรัน MySQL บน Cloud Server ของ THAI DATA CLOUD
Data Center ในประเทศไทย มาตรฐาน ISO/IEC 27001 และ ISO 22301 พร้อมทีมวิศวกรคนไทยดูแลตลอด 24 ชั่วโมง
ดิสก์ NVMe บน Cloud Server ให้ IOPS สูง ซึ่งเป็นปัจจัยสำคัญที่สุดของงานฐานข้อมูล
แยกเครื่องฐานข้อมูลออกจากเว็บและเชื่อมกันผ่าน Private Network ในไทย ได้ทั้งความเร็วและความปลอดภัย โดยไม่มีค่าทราฟฟิกภายใน
ข้อมูลลูกค้าอยู่ใน Data Center ในประเทศไทย สอดคล้องกับ PDPA
เพิ่ม RAM ได้ทันทีเมื่อฐานข้อมูลโตขึ้น ซึ่งมักช่วยเรื่องความเร็วมากกว่าการเพิ่ม CPU
คำถามที่พบบ่อยเกี่ยวกับ MySQL
MySQL กับ MariaDB ต่างกันอย่างไร ควรเลือกตัวไหน
MariaDB แยกสายมาจาก MySQL และยังใช้คำสั่งเดียวกันได้เกือบทั้งหมด งานเว็บทั่วไปเลือกตัวไหนก็ได้ ถ้าองค์กรมีมาตรฐานผูกกับ MySQL หรือใช้ฟีเจอร์เฉพาะของ Oracle ให้อยู่กับ MySQL ส่วนงานโอเพนซอร์สจำนวนมากเลือก MariaDB เพราะพัฒนาโดยชุมชนเต็มตัว
ฐานข้อมูลช้าลงเรื่อย ๆ ควรเริ่มแก้จากตรงไหน
เริ่มจากเปิด slow query log เพื่อหาคิวรีที่ช้าที่สุด แล้วดูว่ามีดัชนีครบหรือไม่ ปัญหาส่วนใหญ่มาจากคิวรีที่ไม่มีดัชนีรองรับ ถัดมาคือ buffer pool ที่เล็กเกินไปเมื่อเทียบกับขนาดข้อมูล ซึ่งแก้ได้ด้วยการเพิ่ม RAM
ควรแยกเซิร์ฟเวอร์ฐานข้อมูลออกจากเว็บเมื่อไหร่
เมื่อเว็บกับฐานข้อมูลเริ่มแย่ง CPU และ RAM กันจนช้าทั้งคู่ หรือเมื่อต้องการขยายทั้งสองส่วนอิสระจากกัน การแยกยังช่วยเรื่องความปลอดภัยเพราะฐานข้อมูลไม่ต้องเปิดสู่อินเทอร์เน็ตเลย
สำรองข้อมูลอย่างไรให้กู้คืนได้จริง
ใช้ mysqldump พร้อมตัวเลือก single-transaction สำหรับฐานข้อมูลขนาดเล็กถึงกลาง หรือใช้เครื่องมือระดับไฟล์สำหรับฐานข้อมูลใหญ่ สิ่งสำคัญกว่าวิธีคือต้องเก็บสำเนาไว้คนละเครื่องและทดลองกู้คืนจริงเป็นระยะ
ทางเลือกอื่นที่คล้ายกับ MySQL
แอปอื่นในหมวด ฐานข้อมูล
บริการของ THAI DATA CLOUD ที่เกี่ยวข้อง
ให้เราติดตั้ง MySQL ให้ฟรี บน Cloud Server ในไทย
แจ้งความต้องการสั้น ๆ ทีมวิศวกรจะช่วยประเมินสเปก ติดตั้ง และตั้งค่าความปลอดภัยให้พร้อมใช้งาน ปรึกษาฟรี ไม่มีข้อผูกมัด