ย้าย datadir ของ MySQL ใน Ubuntu Server 8.10

พอได้ 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 ครับ

1 thought on “ย้าย datadir ของ MySQL ใน Ubuntu Server 8.10”

Comments are closed.