จะเอา /var/lib/mysql บน Ubuntu ไปไว้ที่อื่นทำอย่างไร

mrgill   | November 9, 2009   |   780 Views

ต้องการเอา /var/lib/mysql ไปไว้ที่อื่นครับเพราะกลัวเวลาเครื่องมีปัญหาอาจทำให้ข้อมูลหายได้เพราะ /var/lib/mysql อยู่ใน / เลย(ไม่ได้แบ่ง partition แยกออกมา) วิธีแรกที่ผมทำเลยคือ

root@ubuntu:~# mv /var/lib/mysql /data/mysql root@ubuntu:~# ln -s /data/mysql /var/lib/mysql

ก็คือ move จาก /var/lib/mysql ไปไว้ที่ /data/mysql ผลคือตอน restart mysql มันจะฟ้องว่า

root@ubuntu:~# /etc/init.d/mysql restart * Stopping MySQL database server mysqld [ OK ] * Starting MySQL database server mysqld [fail]

ไปใน /var/log/syslog ก็เจอ error ประมาณนี้ แล้วจะทำไงดี

root@ubuntu:~# tail -f /var/log/syslog Nov 9 02:36:29 ubuntu kernel: [ 2394.732730] type=1503 audit(1257752189.048:131): operation="open" pid=5484 parent=5483 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:30 ubuntu kernel: [ 2395.745479] type=1503 audit(1257752190.061:132): operation="open" pid=5494 parent=5493 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu kernel: [ 2396.761345] type=1503 audit(1257752191.080:133): operation="open" pid=5504 parent=5503 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu kernel: [ 2396.774493] type=1503 audit(1257752191.092:134): operation="open" pid=5513 parent=5512 profile="/usr/sbin/mysqld" requested_mask="r::" denied_mask="r::" fsuid=0 ouid=0 name="/sys/devices/system/cpu/" Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: #007/usr/bin/mysqladmin: connect to server at 'localhost' failed Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Nov 9 02:36:31 ubuntu /etc/init.d/mysql[5520]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!


ผมไปเจอคำตอบที่นี่ครับ
http://forums.mysql.com/read.php?24,211657,225700#msg-225700
เขาบอกว่าให้เข้าไปแก้ไฟล์ /etc/apparmor.d/usr.sbin.mysqld ผมก็จัดไป

root@ubuntu:~# /etc/apparmor.d/usr.sbin.mysqld

โดยเปลี่ยนจาก

# vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include /usr/sbin/mysqld { #include #include #include #include #include capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/my.cnf r, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, }

ให้เปลี่ยนเป็น

# vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include /usr/sbin/mysqld { #include #include #include #include #include capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/my.cnf r, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /data/mysql/ r, /data/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, }

แต่อย่าเพิ่งลบ Symbolic Link นะครับยังจำเป็นต้องใช้
จากนั้นก็สั่ง Restart Apparmor โดย

root@ubuntu:~# /etc/init.d/apparmor restart

จากนั้นลองสั่ง Restart Mysql อีกครั้ง

root@ubuntu:~# /etc/init.d/mysql restart * Stopping MySQL database server mysqld [ OK ] * Starting MySQL database server mysqld [ OK ] * Checking for corrupt, not cleanly closed and upgrade needing tables.

ก็คงจบแต่เพียงเท่านี้

Category : Linux,Server,Ubuntu

Tags: database, How to, Linux, mysql, Server, service, troubleshooting, Ubuntu

Related Posts

จะเข้า Recovery Mode บน Ubuntu 9.10 Karmic Koala ยังไง แก้ปัญหาใช้คำสั่ง sudo ไม่ได้บน ubuntu

3 Comments Leave a Comment

  • 1. best  |  December 15, 2009 at 4:38 PM

    จะย้ายบน redhat ทำไงอ่ะคับมันไม่มี apparmor อ่ะคับช่วยที

  • 2. mrgill  |  December 15, 2009 at 4:55 PM

    ย้ายแล้วมันมี error อะไรแจ้งบ้างครับ
    ลองไปดูในไฟล์ /etc/my.cf ครับรู้สึกมันจะมี directive ที่กำหนด path ของ data เป็น /var/lib/mysql ถ้าลองเปลี่ยนตรงนั้นไม่แน่ใจว่าสามารถช่วยได้หรือเปล่า
    แต่ถ้าจำไม่ผิดที่ผมเคยลอง(เมื่อนานมาแล้ว) move ไปไว้อีกที่แล้วทำ symbolic link มันก็ทำงานได้เลยนะครับ

  • 3. best  |  December 16, 2009 at 4:36 PM

    ทำได้แล้วครับ ขอบคุณที่มาตอบนะคับ ^^

Leave a Comment

(required)

(required), (Hidden)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

TrackBack URL  |  RSS feed for comments on this post.


Chat

Recent Entries

Random Posts

Social Network

Tag Cloud

Calendar

November 2009
S M T W T F S
« Oct   Dec »
1234567
891011121314
15161718192021
22232425262728
2930  

RSSTwitter: imrgill

RSS LinuxToday

RSS UbuntuClub

RSS Blognone

Tag

ภาษาไทย adobe amsn antivirus apt-get bash chat clip dns emesene entertainment Facebook firefox Forward mail free google graphic grave accent How to howto im install Internet karmic keyboard Linux monitoring msn operating system os Programming recovery Server shell script sms Social network Software themes troubleshooting twitter Ubuntu utility virtualization Windows wine

Categories

Archives

Blogroll

Meta

Get Adobe Flash playerPlugin by wpburn.com wordpress themes