พอได้ Server ใหม่ของ <a href=”http://www.thaithinkpad.com/forum/general-discussion/thaithinkpad-server/”>ThaiThinkPad</a> มาแล้วกำลัง Tuning ตัวระบบอยู่ สิ่งที่ต้องทำคือการย้าย datadir ของ MySQL ออกมาอีก I/O แยกจาก H/D หลัก ซึ่งตัว Server ผมมี H/D อยู่สองลูกครับ
วิธีการทำก็ไม่ยากครับ แต่มึนตอนแรกตรง AppArmor เนี่ยแหละ เพราะตอนผมทำบน Windows หรือบน CentOS มันไม่มีปัญหานี้ พอมา Ubuntu Server นี่มันมีส่วนนี้เลยต้องแก้ไขส่วนนี้เพิ่มเติมครับ เรามาเริ่มกันเลย
ปิด Service MySQL
$ sudo /etc/init.d/mysql stop
* Stopping MySQL database server mysqld [ OK ]
ทำการ copy แบบ archive (คงสภาพของ owner/mode ของไฟล์) ไปไว้ที่ H/D นึง ผม mount ไว้ที่ /datasvr (ย้ายจาก /var/lib/mysql ไป /datasvr)
$ sudo cp -a /var/lib/mysql /datasvr
ทำการ Backup ตัวเก่าไว้ก่อนด้วยการเปลี่ยนชื่อ dir ไว้เฉย ๆ กันเหนี่ยวไว้ก่อน
$ sudo mv /var/lib/mysql /var/lib/mysqlbk
ทำการ change owner เป็น group mysql และ user mysql สักหน่อยเผื่อไว้
$ sudo chown -R mysql:mysql /datasvr
แก้ไขไฟล์ my.conf
$ sudo nano /etc/mysql/my.conf
แก้ไขค่าของ
datadir = /var/lib/mysql
เป็น
datadir = /datasvr/mysql
ถ้าใช้ Ubuntu 8.10 Server แก้ไขตัว Application Armor เสียด้วย โดยไปที่
$ sudo nano /etc/apparmor.d/usr.sbin.mysqld
โดยแทรกข้อมูลด้านล่างลงไป โดยเปลีย่น /datasvr/mysql/ เป็น path ของ datadir ที่เราต้องการย้ายไป
/datasvr/mysql/ r,
/datasvr/mysql/** rwk,
แล้ว restart Service AppArmor
sudo /etc/init.d/apparmor restart
แล้วก็เปิด Service MySQL ทำงานต่อไปได้เลย
$sudo /etc/init.d/mysql start
* Starting MySQL database server mysqld [ OK ]
แค่นี้ก็เสร็จสิ้นกรรมวิธีการย้ายข้อมูลแล้ว คราวนี้ก็แบ่ง ๆ โหลด I/O ไปคนละ H/D ครับ
ปัญหาเดียวกับเลยครับ เจอ apparmor พิฆาต ทำงงไปหลายวัน http://rtsp.us/2009/01/12/ubuntu-move-mysql-datadir