จากข่าว “MySQL อาจไม่ใช่ซอฟต์แวร์เสรีอีกต่อไป” ทำให้ผมนั้นได้เวลาเปลี่ยนแปลงมาใช้งาน MariaDB แบบจริงจังเสียที เป็นการตัดสินใจที่คิดมานานแล้ว วางแผนมาพอสมควรแตไม่ได้ทำ
MariaDB คือ MySQL ที่ถูกนำมา fork ออกมาจากต้นสาย MySQL ที่ถูก Oracle ซื้อพ่วงไปกับ Sun และโดนดองไว้ไม่มีการพัฒนาที่มีทิศทางที่ชัดเจนมาสักพักใหญ่ๆ แล้ว โดย Michael Widenius ซึ่งเป็นผู้ก่อตั้ง MySQL เดิม ได้ fork ตัวโครงการออกมาใหม่ได้สักพักใหญ่ๆ หลายปีแล้ว และทำงานภายในชื่อบริษัท Monty Program AB
สำหรับผมนั้นใช้งาน MySQL Server ที่ทำงานกับ blog นี้ที่เป็น MySQL 5.5 อยู่แล้ว การย้าย (migrate) จึงไม่มีอะไรยุ่งยาก เพราะ MariaDB ได้ชื่อว่ารองรับการทำงาน MySQL ได้เต็ม 100% จนได้ชื่อว่า “MariaDB is a binary drop in replacement for MySQL” เลยทีเดียว
ข้อมูลเบื้องต้นก่อนทำการติดตั้งและทำการย้าย
MariaDB นั้นมี 2 รุ่นคือ 5.5 เป็นรุ่น Stable version (GA) และ 10.0 ที่เป็นรุ่น Development version ก่อนติดตั้งเช็คดีๆ ก่อนนะครับ ซึ่งแน่นอนก่อนการย้าย backup ข้อมูลทั้งหมดไม่ว่าจะเป็น data และ user account ก่อนกันพลาดนะครับ
สิ่งแรกที่ต้องทำคือ ตั้งค่า Repositories (sources.list) ให้ MariaDB รู้จักใน APT Repositories เสียก่อน
โดยเข้าไปที่ https://downloads.mariadb.org/mariadb/repositories/
โดย Server ผมนั้นใช้ Distro ที่ชื่อ Ubuntu Server รุ่น 12.04 LTS ก็เลือกตามรายการ ตามด้วย MariaDB version 5.5 และเลือก Mirror เป็น National University of Singapore เพราะ VM Server ผมอยู่ใกล้ที่นั้นที่สุด เสร็จแล้วตัวเลือกก็จะสร้างคำแนะนำมาให้
ก็รันคำสั่งต่อ 2-3 ตัว
- เพิ่ม sign key ของ MariaDB deb packages ลงไปก่อน
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
- เพิ่ม apt-repository ลงไปใน sources.list
sudo add-apt-repository 'deb http://download.nus.edu.sg/mirror/mariadb/repo/5.5/ubuntu precise main'
หรือจะเข้าไปแก้ไขไฟล์ /etc/apt/sources.list เองก็ได้ โดยการใส่ข้อมูลด้านล่างนี้ลงไป
# MariaDB 5.5 repository list - created 2013-06-19 04:24 UTC
# http://mariadb.org/mariadb/repositories/
deb http://download.nus.edu.sg/mirror/mariadb/repo/5.5/ubuntu precise main
deb-src http://download.nus.edu.sg/mirror/mariadb/repo/5.5/ubuntu precise main
- สั่งดึงข้อมูลจาก MariaDB repository มาก่อน
- ติดตั้ง mariadb-server
sudo apt-get install mariadb-server
- คำสั่งก็จะมีแสดงรายการว่ามีการเอาอะไรออก และใส่อะไรเพิ่มเติมลงมาบ้าง
The following extra packages will be installed:
libmariadbclient18 libmysqlclient18 mariadb-client-5.5
mariadb-client-core-5.5 mariadb-common mariadb-server-5.5
mariadb-server-core-5.5 mysql-common
Suggested packages:
tinyca mailx mariadb-test
The following packages will be REMOVED:
mysql-client-5.5 mysql-client-core-5.5 mysql-server mysql-server-5.5
mysql-server-core-5.5
The following NEW packages will be installed:
libmariadbclient18 mariadb-client mariadb-client-5.5 mariadb-client-core-5.5
mariadb-common mariadb-server mariadb-server-5.5 mariadb-server-core-5.5
The following packages will be upgraded:
libmysqlclient18 mysql-common
จะเห็นว่ามีการถอนการติดตั้ง MySQL ออกจากเครื่อง และติดตั้ง MariaDB ลงไปแทน งานนี้ต้องมีตัวใดตัวหนึ่งระเห็ดออกจากเครื่องนี้ไป แน่นอนว่าเลือก MariaDB ให้อยู่ และไล่ MySQL ออกไปครับ!!!
ก็ตอบ Y เพื่อยืนยันการติดตั้ง
รอสักพักไม่นานเกินไป ทุกอย่างก็เรียบร้อย
- MySQL จะถูกหยุดการทำงาน และถูกถอนการติดตั้ง แต่ข้อมูลในฐานข้อมูลยังอยู่ (แต่แนะนำให้ backup ไว้กันพลาด)
- ตัว MariaDB เมื่อติดตั้งเสร็จจะให้ตั้งรหัสผ่านของ root ใหม่อีกครั้ง เพื่อใช้ในการทำงานร่วมกับ MariaDB
- MariaDB จะทำการตรวจสอบไฟล์ ตารางต่างๆ และฐานข้อมูลทั้งหมดเพื่อทำการย้ายและอัพเกรด
- เมื่อ MariaDB เริ่มรันตัวเองขึ้นมาจะบอกว่าทุกอย่างทำงานได้ครบ 100% หรือไม่ ต้องปรับแต่ไฟล์ /etc/mysql/my.cnf อะไรเพิ่มเติมหรือเปล่า
ตรวจสอบด้วย mysql -v จะขึ้นว่า
Server version: 5.5.31-MariaDB-1~precise mariadb.org binary distribution
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
จากการย้ายครั้งนี้ไม่ต้องใช้ข้อมูลที่ backup ไว้แต่อย่างใด ตัวคำสั่งจะถอนการติดตั้ง MySQL และติดตั้ง MariaDB ลงไป ตัว MariaDB จะย้าย และทำตัวเป็น MySQL แทนที่ทันที port ที่เชื่อมต่อก็ 3306, ไฟล์ config และ path ต่างๆ ทั้งหมด รวมไปถึงคำสั่งต่างๆ ยังใช้ mysql command เดิมทั้งหมด
สำหรับการเชื่อมต่อของ PHP กับ MariaDB นั้น ทำงานได้ผ่าน mysqlnd extension ตัวเดิมๆ ได้ทันที
ตอนนี้ blog ที่ท่านอ่านอยู่นี้ก็ใช้งานผ่าน PHP 5.4 และฐานข้อมูล MariaDB เชื่อมต่อกับ WordPress ตัวล่าสุด และทำงานได้อย่างดีครับ