วิธีนำเข้าข้อมูลจากฐานข้อมูล MySQL ที่มีอยู่ ไปยัง MariaDB ของ ServBay
ServBay คือสภาพแวดล้อมสำหรับการพัฒนาเว็บแบบ Local ที่ทรงพลัง โดยมี MariaDB เป็นระบบจัดการฐานข้อมูลหลัก ซึ่ง MariaDB นั้นมีความเข้ากันได้กับ MySQL สูงมาก ทำให้การย้ายข้อมูลจาก MySQL ที่คุณใช้อยู่เดิม มาสู่ MariaDB ใน ServBay นั้นเป็นกระบวนการที่ตรงไปตรงมา เอกสารนี้จะแนะนำวิธีการนำออกฐานข้อมูล MySQL เดิม และนำเข้าไปยัง MariaDB ใน ServBay อย่างละเอียดทีละขั้นตอน
ภาพรวม
คู่มือฉบับนี้ออกแบบมาเพื่อช่วยให้นักพัฒนาสามารถนำเข้า/ย้ายฐานข้อมูล MySQL เดิมจากโปรเจกต์หรือข้อมูลต่าง ๆ มายัง MariaDB ใน ServBay เพื่อใช้ในการพัฒนาและทดสอบบนเครื่องได้อย่างสะดวก รวดเร็ว และมีประสิทธิภาพ
กรณีการใช้งาน
- ย้ายฐานข้อมูล MySQL จากเครื่องออนไลน์ หรือเครื่อง Local อื่น มายัง ServBay สำหรับพัฒนาบนเครื่อง
- รวบรวม หรือสำรองข้อมูลของ MySQL เดิมเข้าสู่ MariaDB ใน ServBay
- ทดสอบความเข้ากันได้ของแอปที่ใช้ฐานข้อมูล MySQL เดิม บน ServBay
ข้อกำหนดเบื้องต้น
ก่อนเริ่มนำเข้าข้อมูล โปรดตรวจสอบว่าคุณมีสิ่งเหล่านี้พร้อม:
- ติดตั้งและใช้งาน MySQL อยู่แล้ว: คุณต้องมีฐานข้อมูล MySQL ที่ต้องการจะนำออกข้อมูล พร้อมข้อมูลการเชื่อมต่อ (Host, Port, Username, Password)
- ติดตั้งและใช้งาน ServBay แล้ว: ServBay มาพร้อม MariaDB ในตัว ให้แน่ใจว่า ServBay เปิดใช้งานอยู่ และ MariaDB ทำงานปกติ สามารถตรวจสอบสถานะที่หน้า “แพ็คเกจซอฟต์แวร์” ของแอป ServBay ได้
- ข้อมูลการเชื่อมต่อ MariaDB ใน ServBay: โดยปกติ MariaDB จะใช้
127.0.0.1(หรือlocalhost) ที่พอร์ต3306และชื่อผู้ใช้เริ่มต้นคือrootคุณสามารถดูรายละเอียดการเชื่อมต่อพร้อมรหัสผ่านเริ่มต้นของrootได้ที่แท็บ “ฐานข้อมูล” ในแอป ServBay ขอแนะนำให้จดหรือเปลี่ยนรหัสผ่านนี้ทันทีที่เริ่มใช้งาน - สิทธิ์ของผู้ใช้ฐานข้อมูล: ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ในการส่งออกฐานข้อมูล MySQL ต้นทาง และสิทธิ์ในการนำเข้าสร้างฐานข้อมูลใน MariaDB ของ ServBay (
rootใน MariaDB โดยปกติมี) - เข้าถึง Terminal: คุณจะต้องใช้คำสั่งผ่านเทอร์มินัลในการนำเข้าหรือส่งออกข้อมูล ตัวอย่างในบทความนี้ออกแบบมาเพื่อใช้งานบน macOS หรือ Linux
ขั้นตอนที่ 1: ส่งออกข้อมูลจากฐานข้อมูล MySQL ต้นทาง
ก่อนอื่น ใช้เครื่องมือ mysqldump เพื่อส่งออกฐานข้อมูลของคุณเป็นไฟล์ SQL
- เปิดเทอร์มินัล: เริ่มแอป Terminal บน macOS
- เชื่อมต่อฐานข้อมูล MySQL ต้นทาง: ในเทอร์มินัล ให้รันคำสั่งต่อไปนี้เพื่อเชื่อมต่อไปยัง MySQL ต้นทาง จะมีการถามรหัสผ่านbash
mysql -u your_mysql_username -p -h your_mysql_host -P your_mysql_port1- เปลี่ยน
your_mysql_usernameเป็นชื่อผู้ใช้ MySQL ของคุณ - เปลี่ยน
your_mysql_hostเป็นที่อยู่ของเซิร์ฟเวอร์ MySQL (เช่นlocalhostหรือ IP) - เปลี่ยน
your_mysql_portเป็นหมายเลขพอร์ต MySQL (ถ้าไม่ใช่ 3306) - หากใช้งานบนเครื่องเดียวกับที่รัน MySQL และใช้พอร์ตเริ่มต้น สามารถลดรูปคำสั่งเป็น
mysql -u your_mysql_username -p
- เปลี่ยน
- ส่งออกฐานข้อมูล: ใช้คำสั่ง
mysqldumpส่งออกฐานข้อมูลของคุณ สมมุติฐานข้อมูลชื่อmydatabaseคำสั่งคือ:bashmysqldump -u your_mysql_username -p mydatabase > mydatabase.sql1- เปลี่ยน
your_mysql_usernameและmydatabaseเป็นข้อมูลของคุณ - ไฟล์
mydatabase.sqlจะอยู่ที่ไดเรกทอรีที่คุณกำลังทำงานอยู่ หรือระบุ path แบบเต็ม เช่น/path/to/your/directory/mydatabase.sql - หากต้องการส่งออกฐานข้อมูลทุกตัวในเครื่อง ใช้
--all-databases(แนะนำให้ใช้ด้วยความระมัดระวัง) - หากต้องการเฉพาะบางตาราง ให้ต่อชื่อตารางหลังชื่อฐานข้อมูล
- เปลี่ยน
ขั้นตอนที่ 2: เตรียมฐานข้อมูล MariaDB ใน ServBay
ก่อนนำเข้าข้อมูลเข้า MariaDB คุณอาจต้องสร้างฐานข้อมูลเปล่าที่ MariaDB ของ ServBay ก่อน
- เปิดเทอร์มินัล: หากยังไม่ได้เปิด ให้เปิดขึ้นมา
- เชื่อมต่อ MariaDB ของ ServBay: ใช้ข้อมูลการเชื่อมต่อที่ได้จากแอป ServBay โดยทั่วไปใช้
rootและรหัสผ่านที่แสดงในแอปbashmysql -u root -p -h 127.0.0.1 -P 33061- ระบบจะถามรหัสผ่านผู้ใช้งาน
rootของ MariaDB ใน ServBay ซึ่งดูได้จากแท็บ “ฐานข้อมูล” - หากคุณเปลี่ยนพอร์ตหรือ host ให้แก้ไข
-hและ-Pตามนั้น
- ระบบจะถามรหัสผ่านผู้ใช้งาน
- สร้างฐานข้อมูลใหม่: รันคำสั่ง SQL ต่อไปนี้บน MariaDB ควรใช้ชื่อเดิมจาก MySQL เช่น
mydatabasesqlCREATE DATABASE mydatabase;1- เปลี่ยน
mydatabaseเป็นชื่อที่ต้องการ
- เปลี่ยน
ขั้นตอนที่ 3: นำเข้าข้อมูลไปยัง MariaDB ของ ServBay
เมื่อพร้อมแล้ว ให้นำเข้าไฟล์ SQL ที่ส่งออกไว้ ไปยังฐานข้อมูลใหม่ใน MariaDB
- เปิดเทอร์มินัล: ตรวจสอบให้แน่ใจว่าไฟล์
mydatabase.sqlอยู่ในไดเรกทอรีปัจจุบัน หรือใช้ path แบบเต็ม - นำเข้าไฟล์ SQL: ใช้
mysqlเพื่อโหลดข้อมูลเข้า MariaDBbashmysql -u root -p -h 127.0.0.1 -P 3306 mydatabase < mydatabase.sql1- ระบบจะถามรหัสผ่าน
root - ปรับ
mydatabaseให้ตรงกับฐานข้อมูลที่สร้างในขั้นตอนที่แล้ว mydatabase.sqlคือชื่อไฟล์ SQL ที่ได้จากการส่งออก (เปลี่ยนถ้าใช้ชื่ออื่นหรือ path อื่น)
- ระบบจะถามรหัสผ่าน
ในบางกรณี หากไฟล์ SQL ขนาดใหญ่/โครงสร้างข้อมูลซับซ้อน การนำเข้าอาจต้องรอสักครู่ เทอร์มินัลอาจไม่มีข้อความแสดงระหว่างการดำเนินการ
ขั้นตอนที่ 4: ตรวจสอบผลการนำเข้า
หลังนำเข้าข้อมูล แนะนำให้เชื่อมต่อ MariaDB ใน ServBay เพื่อตรวจสอบความถูกต้อง
- เชื่อมต่อ MariaDB ใน ServBay:bash
mysql -u root -p -h 127.0.0.1 -P 33061- กรอกรหัสผ่านผู้ใช้
root
- กรอกรหัสผ่านผู้ใช้
- เลือกฐานข้อมูล:sql
USE mydatabase;1- เปลี่ยน
mydatabaseให้ตรงกับที่นำเข้า
- เปลี่ยน
- สอบถามข้อมูล: รันคำสั่งง่าย ๆ เพื่อตรวจสอบตารางและข้อมูลsql
SHOW TABLES; -- แสดงรายชื่อตารางทั้งหมด SELECT COUNT(*) FROM your_table_name; -- ดูจำนวนแถวในตาราง SELECT * FROM your_table_name LIMIT 10; -- แสดง 10 แถวแรกของตาราง1
2
3- แทนที่
your_table_nameด้วยชื่อตารางจริงในฐานข้อมูล
- แทนที่
หากผลการค้นหาถูกต้อง แสดงว่านำเข้าข้อมูลสำเร็จ
การจัดการปัญหาความเข้ากันได้ที่อาจเกิดขึ้น
แม้ MariaDB จะเข้ากันได้กับ MySQL สูง แต่ในบางกรณีอาจเกิดปัญหาได้ เช่น
1. คำสั่ง SQL บางอย่างไม่รองรับ
ในกรณีที่ SQL หรือฟังก์ชันที่มีเฉพาะใน MySQL อาจไม่รองรับหรือทำงานต่างกันบน MariaDB
- แนวทางแก้ไข: หากพบข้อผิดพลาดเกี่ยวกับ Syntax ในระหว่างนำเข้า อาจต้องเปิดไฟล์
mydatabase.sqlแก้ไขคำสั่ง SQL ที่ก่อปัญหาให้เข้ากันกับ MariaDB ตรวจสอบเอกสาร MariaDB เพื่อหาวิธีทดแทนคำสั่ง
2. ชนิด Storage Engine ไม่รองรับ
ทั้ง MySQL และ MariaDB รองรับ Storage Engine หลากหลาย (เช่น InnoDB, MyISAM, Aria, XtraDB ฯลฯ) บางกรณี Storage Engine ที่มีเฉพาะใน MySQL เช่น Archive, Blackhole จะใช้บน MariaDB ไม่ได้ หรือบาง Engine ใน MariaDB ก็มีเฉพาะในนั้น โดยทั่วไป InnoDB รองรับทั้งสองระบบ
- แนวทางแก้ไข: ถ้าไฟล์ SQL ใช้ Storage Engine ที่ MariaDB ไม่รองรับ การนำเข้าจะมี Warning หรือ Error คุณสามารถเปิดไฟล์ SQL แก้ไข ENGINE เป็น Engine ที่ MariaDB รองรับ (เช่น
ENGINE=InnoDB) หรือหลังนำเข้า ใช้คำสั่งALTER TABLE table_name ENGINE = InnoDB;เปลี่ยนทีละตาราง
3. บัญชีผู้ใช้และสิทธิ์
ไฟล์ SQL ที่ได้จาก mysqldump มักไม่มีหรือมีข้อมูลบัญชีผู้ใช้และสิทธิ์อยู่อย่างจำกัด และกลไกจัดการผู้ใช้/สิทธิ์ของ MariaDB กับ MySQL อาจต่างกัน การนำเข้าตารางผู้ใช้โดยตรงอาจเกิดปัญหา ใน ServBay จะมีบัญชี root ของ MariaDB ให้ใช้งานได้ คุณควรสร้างบัญชีใหม่สำหรับแอปของคุณแทน
- แนวทางแก้ไข: หลังนำเข้าข้อมูล ควรสร้างบัญชีใหม่และกำหนดสิทธิ์ใน MariaDB สำหรับแอปตามต้องการ โดยเชื่อมต่อ ServBay MariaDB แล้วใช้ SQL ดังนี้sql
-- สร้างผู้ใช้ใหม่ (เปลี่ยน 'your_username', 'localhost', 'your_password' ตามต้องการ) CREATE USER 'your_username'@'localhost' IDENTIFIED BY 'your_password'; -- ให้สิทธิ์กับผู้ใช้ใหม่ในฐานข้อมูลที่ต้องการ GRANT ALL PRIVILEGES ON mydatabase.* TO 'your_username'@'localhost'; -- รีเฟรชสิทธิ์ FLUSH PRIVILEGES;1
2
3
4
5
6
7
8- แทนที่
your_username,localhost(หรือ%ถ้าเชื่อมต่อจากภายนอก),your_passwordและmydatabaseเป็นของคุณเอง - หากคุณลืมรหัสผ่าน
rootของ MariaDB ที่มาพร้อม ServBay สามารถรีเซ็ตได้ในแอปหรือดูคู่มือการใช้งาน
- แทนที่
สรุป
การนำเข้าข้อมูลจากฐานข้อมูล MySQL เดิมเข้าสู่ MariaDB ที่มากับ ServBay เป็นขั้นตอนสำคัญที่ช่วยย้ายสายงานพัฒนาต่าง ๆ มาไว้บน ServBay ได้อย่างราบรื่น ขั้นตอนนี้ประกอบด้วย การใช้ mysqldump ส่งออกข้อมูลจากต้นทาง สร้างฐานข้อมูลปลายทางใน MariaDB ด้วยตนเอง นำเข้าไฟล์ SQL โดยใช้ mysql และตรวจสอบผลลัพธ์ และสุดท้ายคือจัดการปัญหาความเข้ากันได้ที่อาจเกิดขึ้น เมื่อปฏิบัติตามขั้นตอนที่แนะนำในเอกสารฉบับนี้ คุณจะสามารถย้ายฐานข้อมูลมายัง ServBay และดำเนินการพัฒนาเว็บไซต์ต่อในสภาพแวดล้อมใหม่ได้อย่างมีประสิทธิภาพ
