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

พอได้ Server ใหม่ของ ThaiThinkPad มาแล้วกำลัง Tuning ตัวระบบอยู่ สิ่งที่ต้องทำคือการย้าย datadir ของ MySQL ออกมาอีก I/O แยกจาก H/D หลัก ซึ่งตัว Server ผมมี H/D อยู่สองลูกครับ

วิธีการทำก็ไม่ยากครับ แต่มึนตอนแรกตรง AppArmor เนี่ยแหละ เพราะตอนผมทำบน Windows หรือบน CentOS มันไม่มีปัญหานี้ พอมา Ubuntu Server นี่มันมีส่วนนี้เลยต้องแก้ไขส่วนนี้เพิ่มเติมครับ เรามาเริ่มกันเลย

ปิด Service MySQL

  1. $ sudo /etc/init.d/mysql stop
  2. * Stopping MySQL database server mysqld [ OK ]

ทำการ copy แบบ archive (คงสภาพของ owner/mode ของไฟล์) ไปไว้ที่ H/D นึง ผม mount ไว้ที่ /datasvr (ย้ายจาก /var/lib/mysql ไป /datasvr)

  1. $ sudo cp -a /var/lib/mysql /datasvr

ทำการ Backup ตัวเก่าไว้ก่อนด้วยการเปลี่ยนชื่อ dir ไว้เฉย ๆ กันเหนี่ยวไว้ก่อน

  1. $ sudo mv /var/lib/mysql /var/lib/mysqlbk

ทำการ change owner เป็น group mysql และ user mysql สักหน่อยเผื่อไว้

  1. $ sudo chown -R mysql:mysql /datasvr

แก้ไขไฟล์ my.conf

  1. $ sudo nano /etc/mysql/my.conf

แก้ไขค่าของ

  1. datadir = /var/lib/mysql

เป็น

  1. datadir = /datasvr/mysql

ถ้าใช้ Ubuntu 8.10 Server แก้ไขตัว Application Armor เสียด้วย โดยไปที่

  1. $ sudo nano /etc/apparmor.d/usr.sbin.mysqld

โดยแทรกข้อมูลด้านล่างลงไป โดยเปลีย่น /datasvr/mysql/ เป็น path ของ datadir ที่เราต้องการย้ายไป

  1. /datasvr/mysql/ r,
  2. /datasvr/mysql/** rwk,

แล้ว restart Service AppArmor

  1. sudo /etc/init.d/apparmor restart

แล้วก็เปิด Service MySQL ทำงานต่อไปได้เลย

  1. $sudo /etc/init.d/mysql start
  2. * Starting MySQL database server mysqld [ OK ]

แค่นี้ก็เสร็จสิ้นกรรมวิธีการย้ายข้อมูลแล้ว คราวนี้ก็แบ่ง ๆ โหลด I/O ไปคนละ H/D ครับ

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

Leave a Reply