วิธีอัปเกรดและย้ายข้อมูล MySQL/MariaDB ใน ServBay
ภาพรวม
ระหว่างการพัฒนาในเครื่อง คุณอาจจำเป็นต้องเปลี่ยนเวอร์ชันเริ่มต้นของฐานข้อมูล MySQL หรือ MariaDB ในสภาพแวดล้อม ServBay ตามความต้องการของโปรเจกต์ หรือเพื่อใช้ประโยชน์จากฟีเจอร์ใหม่และอัปเดตความปลอดภัย เอกสารนี้จัดทำขั้นตอนอย่างละเอียดและชัดเจน เพื่อให้คุณดำเนินการเปลี่ยนเวอร์ชันได้อย่างปลอดภัย รวมถึงการสำรองและกู้คืนข้อมูลที่สำคัญ
กรณีการใช้งาน
- อัปเกรดเป็นเวอร์ชันล่าสุด: เพื่อใช้ฟีเจอร์ใหม่ ประสิทธิภาพที่ดีขึ้น และแพตช์ความปลอดภัย
- ทดสอบความเข้ากันของโปรเจกต์: ตรวจสอบว่าแอปของคุณทำงานได้ปกติในฐานข้อมูลเวอร์ชันต่างๆ
- ตอบโจทย์การพัฒนาที่ต้องใช้เวอร์ชันเฉพาะ: บางโปรเจกต์อาจระบุให้ใช้เวอร์ชันฐานข้อมูลที่เจาะจง
ข้อกำหนดเบื้องต้น
- ติดตั้งและใช้งาน ServBay เรียบร้อยแล้ว
- มีความรู้พื้นฐานเกี่ยวกับการใช้เทอร์มินัลคำสั่ง
- ทราบรหัสผ่านผู้ใช้
root
ของฐานข้อมูลปัจจุบัน - มีพื้นที่ดิสก์เพียงพอสำหรับติดตั้งเวอร์ชันใหม่และเก็บไฟล์สำรองฐานข้อมูล
ขั้นตอนดำเนินการ
ตัวอย่างต่อไปนี้จะอธิบายการย้ายข้อมูลจาก MariaDB 10.11 ไปยัง MariaDB 11.3 สำหรับการเปลี่ยนเวอร์ชันของ MySQL ขั้นตอนจะคล้ายคลึงกัน
1. สำรองข้อมูลฐานข้อมูลเวอร์ชันเก่า
ก่อนเปลี่ยนเวอร์ชัน ขอแนะนำอย่างยิ่ง ให้สำรองข้อมูลฐานข้อมูลทั้งหมดไว้ก่อน ช่วยป้องกันข้อมูลสูญหาย และสร้างจุดกู้คืนหากเจอปัญหาความเข้ากัน
เครื่องมือ mysqldump
เป็นวิธีมาตรฐานสำหรับสำรองฐานข้อมูล เปิดแอปเทอร์มินัลแล้วรันคำสั่งนี้:
bash
mysqldump -uroot -p --all-databases --opt > mariadb_backup.sql
1
-u root
: เชื่อมต่อฐานข้อมูลด้วยผู้ใช้root
-p
: ระบบจะสอบถามรหัสผ่านของroot
--all-databases
: สำรองฐานข้อมูลทุกตัว--opt
: รวมออปชันมาตรฐาน เช่น--add-drop-table
,--add-locks
,--create-command
,--disable-keys
,--extended-insert
,--lock-tables
,--quick
,--set-charset
เพื่อให้ไฟล์สำรองมีประสิทธิภาพ ย้ายข้อมูลได้ง่าย> mariadb_backup.sql
: ส่งผลลัพธ์ไฟล์สำรองไปยังmariadb_backup.sql
ในโฟลเดอร์ปัจจุบัน (โดยทั่วไปคือ home directory~
)
เมื่อรันคำสั่งแล้ว ให้กรอกรหัสผ่านของ root
MariaDB ตามที่ระบบถาม รอจนกระทั่งบรรทัดคำสั่งใหม่ปรากฏอีกครั้งโดยไม่มีข้อความเพิ่มเติม ขนาดไฟล์ backup จะขึ้นอยู่กับปริมาณข้อมูลฐานข้อมูล แนะนำให้ตรวจสอบขนาดไฟล์ mariadb_backup.sql
ให้แน่ใจว่าไม่ว่างเปล่า
2. ติดตั้งเวอร์ชันใหม่ที่ต้องการ
เปิดแอป ServBay เลือกแถบ แพ็กเกจ (Packages) ค้นหา MariaDB หรือ MySQL ในหมวดฐานข้อมูล แล้วเลือกเวอร์ชันใหม่ที่ต้องการสลับใช้งาน (เช่น MariaDB 11.3) จากนั้นคลิกปุ่ม Install/ติดตั้ง
รอจนกว่า ServBay จะดาวน์โหลดและติดตั้งเวอร์ชันใหม่เสร็จ
3. ปิดใช้งานฐานข้อมูลเวอร์ชันเก่า
เมื่อติดตั้งเวอร์ชันใหม่เรียบร้อยแล้ว ให้กลับไปที่แถบ แพ็กเกจ (Packages) ของ ServBay ค้นหาฐานข้อมูลเวอร์ชันเก่าที่กำลังรันอยู่ (เช่น MariaDB 10.11) คลิกที่สถานะ (ไอคอนวงกลมสีเขียว) ข้างๆ เพื่อปิดการใช้งาน สถานะจะเปลี่ยนเป็นสีเทา
4. เปิดใช้ฐานข้อมูลเวอร์ชันใหม่
หลังจากปิดเวอร์ชันเก่าแล้ว ให้ค้นหาเวอร์ชันใหม่ที่ติดตั้งไว้ (เช่น MariaDB 11.3) คลิกที่ไอคอนสถานะเพื่อเปิดการใช้งาน สถานะจะเปลี่ยนเป็นสีเขียว แสดงว่าเวอร์ชันใหม่นี้ทำงานแล้ว
5. ตั้งเวอร์ชันใหม่เป็นดีฟอลต์
เพียงแค่เปิดเวอร์ชันใหม่และปิดเวอร์ชันเก่ายังไม่ทำให้ระบบใช้เวอร์ชันใหม่นี้เป็นดีฟอลต์ คุณต้องกำหนดค่าชัดเจนในแผงตั้งค่าของ ServBay
เข้าไปที่แผง ตั้งค่า (Settings) ของ ServBay ค้นหาตัวเลือกเวอร์ชันเริ่มต้นของ MySQL หรือ MariaDB ในส่วนฐานข้อมูล เลือกเวอร์ชันใหม่ที่คุณเพิ่งเปิดใช้ (เช่น MariaDB 11.3) จากเมนูดร็อปดาวน์
คลิกปุ่ม Apply (นำไปใช้) ที่ด้านล่างของแผงเพื่อบันทึกการเปลี่ยนแปลง
6. ตรวจสอบการตั้งค่าเวอร์ชันเริ่มต้น
กลับไปที่แถบ แพ็กเกจ (Packages) ของ ServBay คุณควรเห็นข้อความกำกับตรงเวอร์ชันใหม่ (เช่น MariaDB 11.3) ว่าเป็นเวอร์ชันที่ตั้งเป็นดีฟอลต์ไว้
7. ตรวจสอบเวอร์ชันผ่านเทอร์มินัล
เปิดเทอร์มินัล แล้วรันคำสั่งต่อไปนี้เพื่อตรวจสอบว่าเวอร์ชันดีฟอลต์ถูกเปลี่ยนแล้วหรือไม่:
bash
mysql -V
1
ผลลัพธ์ควรระบุเวอร์ชันใหม่ที่ตั้งไว้ เช่น mysql Ver 11.3.2-MariaDB ...
8. กู้คืนข้อมูลจากไฟล์สำรอง
ตอนนี้ให้กู้คืนข้อมูลที่สำรองไว้เข้าสู่ฐานข้อมูลเวอร์ชันใหม่ที่ตั้งค่าไว้ เปิดเทอร์มินัลแล้วรันคำสั่งนี้:
bash
mysql -uroot -p < mariadb_backup.sql
1
-u root
: เชื่อมต่อด้วยผู้ใช้root
-p
: ระบุให้ระบบถามรหัสผ่านroot
< mariadb_backup.sql
: นำเนื้อหาในไฟล์mariadb_backup.sql
ใส่เข้าไปใน mysql client เพื่อดำเนินการคืนค่าข้อมูล
เมื่อรันคำสั่งแล้ว ให้ใส่รหัสผ่านของผู้ใช้ root
สำหรับเวอร์ชันใหม่ (โดยทั่วไปรหัสผ่านจะเหมือนเดิม ยกเว้นคุณเปลี่ยนตอนเปิดใช้งานครั้งแรก) กระบวนการนี้อาจใช้เวลาตามขนาดไฟล์สำรอง
ข้อควรระวัง: ขณะกู้คืนข้อมูล ในเทอร์มินัลอาจขึ้นข้อความเตือนหรือข้อผิดพลาด โดยเฉพาะหากมีความต่างของเวอร์ชันมาก หรือไฟล์สำรองมีฟีเจอร์ที่ผูกกับเวอร์ชันเก่า (เช่น storage engine, function หรือตัวกำหนด DEFINER
) โดยปกติแล้วสำหรับโปรเจกต์เว็บทั่วไปสามารถข้ามข้อเตือนได้ แต่ถ้าเป็นงาน production หรือโปรเจกต์ซับซ้อน ควรไล่ตรวจสอบและแก้ไขปัญหาเหล่านั้น
9. ตรวจสอบความสมบูรณ์ของข้อมูลหลังการกู้คืน
เสร็จแล้ว ให้ล็อกอินเข้าสู่ฐานข้อมูลเพื่อตรวจสอบข้อมูล:
bash
mysql -uroot -p
1
หลังเข้าสู่ mysql client แล้ว ใช้คำสั่งต่อไปนี้เพื่อดูรายการฐานข้อมูล:
sql
SHOW DATABASES;
1
สามารถตรวจสอบฐานข้อมูลและตารางเฉพาะเพิ่มเติม รวมถึงทดสอบกับแอปพลิเคชัน เพื่อดูว่าข้อมูลถูกต้องและสามารถเชื่อมต่อได้ตามปกติ
ข้อควรระวัง
- ความเข้ากันของข้อมูล: แม้ MySQL/MariaDB จะพยายามคงความเข้ากันได้ แต่การอัปเกรดข้าม major version (เช่น 5.7 เป็น 8.0 หรือ MariaDB 10.x เป็น 11.x) อาจเจอปัญหาความเข้ากันที่ต้องปรับแก้ ควรศึกษาคู่มืออย่างเป็นทางการของแต่ละเวอร์ชัน
- ไฟล์การตั้งค่า: ServBay แยกไฟล์คอนฟิกฐานข้อมูลแต่ละเวอร์ชัน (เช่น
my.cnf
,my.ini
) หากคุณเคยตั้งค่าไฟล์ config ของเวอร์ชันเดิมเอง ต้องนำค่าเหล่านั้นไปปรับใช้ใน config ของเวอร์ชันใหม่ด้วย ไฟล์เหล่านี้มักอยู่ที่/Applications/ServBay/etc/mysql/หมายเลขเวอร์ชัน/my.cnf
- ประสิทธิภาพ: ฐานข้อมูลเวอร์ชันใหม่อาจมีค่าสำคัญหรือการ optimize ที่เปลี่ยนไป หลังเปลี่ยนเวอร์ชันควรทดสอบประสิทธิภาพและปรับแต่ง config ตามความเหมาะสม
- พอร์ต: ค่าเริ่มต้นของฐานข้อมูลใน ServBay จะใช้พอร์ตมาตรฐาน (เช่น 3306) เปลี่ยนเวอร์ชันเริ่มต้นจะไม่เปลี่ยนค่าพอร์ต หากต้องการรันหลายเวอร์ชันและใช้พอร์ตต่างกัน ต้องแก้ config ด้วยตนเอง
คำถามที่พบบ่อย (FAQ)
- ถาม: ติดตั้งเวอร์ชันใหม่แล้วฐานข้อมูลไม่รัน ต้องทำอย่างไร?
- ตอบ: ตรวจสอบสถานะและไฟล์ log ในแผงแพ็กเกจของ ServBay โดยปกติ log จะอยู่ที่
var/log/mysql
หรือvar/log/mariadb
ในโฟลเดอร์ติดตั้ง ServBay ตรวจสอบเพื่อดูข้อผิดพลาด เช่น ไฟล์ config ผิด, การชนกันของพอร์ต หรือสิทธิ์ไม่ถูกต้อง
- ตอบ: ตรวจสอบสถานะและไฟล์ log ในแผงแพ็กเกจของ ServBay โดยปกติ log จะอยู่ที่
- ถาม: เจอ error ระหว่างกู้คืนฐานข้อมูล จะแก้ยังไง?
- ตอบ: อ่าน error อย่างละเอียด ปัญหาทั่วไปเช่น character set (เรียกใช้
mysqldump
พร้อม--default-character-set=utf8mb4
อาจช่วยได้), ปัญหา permission เกี่ยวกับDEFINER
(สามารถค้นหาและแทนที่ในไฟล์สำรอง), หรือไฟล์สำรองเสียหาย กรณีฐานข้อมูลใหญ่ แนะนำใช้mydumper
/myloader
เพื่อสำรองและกู้คืนแบบขนาน
- ตอบ: อ่าน error อย่างละเอียด ปัญหาทั่วไปเช่น character set (เรียกใช้
- ถาม: เปลี่ยนเวอร์ชันโดยไม่สำรองและกู้คืนได้ไหม?
- ตอบ: ไม่แนะนำโดยเด็ดขาด โดยเฉพาะอัปเกรด major version เพราะอาจเกิดโครงสร้างไม่เข้ากัน, โอกาสข้อมูลเสียหายหรือหาย การสำรองและกู้คืนข้อมูลเป็นวิธีที่ปลอดภัยและถูกต้องที่สุด
- ถาม: หลังเปลี่ยนเวอร์ชัน แอปหรือเว็บไซต์เชื่อมต่อฐานข้อมูลไม่ได้ต้องทำอย่างไร?
- ตอบ: ตรวจสอบว่าเปิดใช้และตั้งเวอร์ชันใหม่เป็นดีฟอลต์ใน ServBay เรียบร้อยแล้ว เช็ก config การเชื่อมต่อในแอปพลิเคชันให้ hostname (เช่น
127.0.0.1
หรือlocalhost
), port (ปกติ 3306), ชื่อผู้ใช้ และรหัสผ่านถูกต้อง
- ตอบ: ตรวจสอบว่าเปิดใช้และตั้งเวอร์ชันใหม่เป็นดีฟอลต์ใน ServBay เรียบร้อยแล้ว เช็ก config การเชื่อมต่อในแอปพลิเคชันให้ hostname (เช่น
สรุป
ด้วยขั้นตอนในเอกสารฉบับนี้ คุณสามารถสลับและอัปเกรดเวอร์ชันเริ่มต้นของ MySQL หรือ MariaDB ใน ServBay ได้อย่างปลอดภัยและราบรื่น ขั้นตอนหลักคือ สำรองข้อมูล ติดตั้งและเปิดใช้เวอร์ชันใหม่ กำหนดใน ServBay ให้ใช้เวอร์ชันใหม่เป็นดีฟอลต์ และสุดท้ายกู้คืนข้อมูล อย่าลืมสำรองข้อมูลเสมอ และตรวจสอบความสมบูรณ์ก่อนใช้งานจริง