พอได้ Server ใหม่ของ ThaiThinkPad มาแล้วกำลัง 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