大家帮帮忙: mysql数据文件转移的问题

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
pearly
帖子: 45
注册时间: 2006-12-01 7:10

大家帮帮忙: mysql数据文件转移的问题

#1

帖子 pearly » 2009-09-24 22:34

因为linux的主分区(sda2)容量不够,我装了第二块硬盘(sdb1)。新硬盘格式化成ext4,并且在fstab中自动挂载如下:
proc /proc proc defaults 0 0
# Entry for /dev/sda2 :
UUID=966e4d95-39b2-464e-81b9-8ce5920c1736 / ext3 relatime,errors=remount-ro 0 1
# Entry for /dev/sda3 :
UUID=5a515218-2043-4ac4-bd9b-dfc527906922 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec,utf8 0 0
/dev/sda1 /media/SYSTEM ntfs-3g defaults,locale=zh_CN.UTF-8 0 0
/dev/sda5 /media/win_d ntfs-3g defaults,locale=zh_CN.UTF-8 0 0
/dev/sdb1 /mnt/DATA ext4 auto,rw,umask=022 0 0

然后我把/var/lib/mysql目录全部移到 /mnt/DATA下面。修改/etc/mysql/my.cnf:
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /mnt/DATA/mysql
tmpdir = /tmp
skip-external-locking

尝试 sudo /etc/init.d/mysql start 报错,在/var/log/daemon.log文件中记录错误是:
Sep 24 15:26:50 ubuntu-lt mysqld_safe[21537]: started
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: 090924 15:26:50 [Warning] Can't create test file /var/lib/mysql/ubuntu-lt.lower-test
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: 090924 15:26:50 [Warning] Can't create test file /var/lib/mysql/ubuntu-lt.lower-test
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: 090924 15:26:50 InnoDB: Operating system error number 13 in a file operation.
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: InnoDB: The error means mysqld does not have the access rights to
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: InnoDB: the directory.
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: InnoDB: File name ./ibdata1
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: InnoDB: File operation call: 'open'.
Sep 24 15:26:50 ubuntu-lt mysqld[21540]: InnoDB: Cannot continue operation.
Sep 24 15:26:50 ubuntu-lt mysqld_safe[21547]: ended

请问各位是否有办法解决问题,谢谢!
头像
木泥黑
帖子: 1339
注册时间: 2008-10-18 12:41

Re: 大家帮帮忙: mysql数据文件转移的问题

#2

帖子 木泥黑 » 2009-09-25 16:34

1、关掉数据库 /etc/init.d/mysql stop

2、假设我们指定的数据库文件目录为/db
创建目录 /db,并修改其拥有者及所属群组为mysql:mysql.命令:chown mysql:mysql db
修改mysql配置文件my.cnf:将datadir=/var/lib/mysql改为datadir=/db

3、修改ubuntu中的安全设置
/etc/apparmor.d/usr.sbin.mysqld 在这个文件里面加入权限设定,将原来的
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
更换成
/db/mysql/ r,
/db/mysql/** rwk,

4、重新初始化数据文件:执行mysql_install_db

5、启动mysql数据库服务:sudo /etc/init.d/mysql start

6、设置mysql数据库root密码:mysqladmin -u root password ‘new-password’

7、在/etc/mysql/debian.cnf中找到你的debian-sys-maint用户密码,在mysql中重新建立这个用户.

此时我们会发现/db目录下出现mysql相关文件。如果我们新建数据库,其数据库文件也将出现在db目录下。表示我们修改的mysql数据库文件存储目 录正确。
上次由 木泥黑 在 2010-03-12 10:59,总共编辑 1 次。
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 大家帮帮忙: mysql数据文件转移的问题

#3

帖子 oneleaf » 2009-09-25 16:56

检查目录的属主。
pearly
帖子: 45
注册时间: 2006-12-01 7:10

Re: 大家帮帮忙: mysql数据文件转移的问题

#4

帖子 pearly » 2009-09-25 18:59

oneleaf 写了:检查目录的属主。
这是/var/lib/mysql下面各个目录的属性:
drwx------ 2 mysql root 12288 2009-09-23 17:54 ailas
-rw-r--r-- 1 root root 0 2009-09-24 11:57 debian-5.0.flag
-rw-rw---- 1 mysql mysql 10485760 2009-09-24 15:29 ibdata1
-rw-rw---- 1 mysql mysql 5242880 2009-09-24 15:45 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 2009-09-24 11:57 ib_logfile1
drwxr-xr-x 2 mysql root 4096 2009-09-24 12:02 mysql
-rw------- 1 root root 6 2009-09-24 11:57 mysql_upgrade_info
drwx------ 2 mysql root 20480 2009-09-24 12:21 rec_movie
drwx------ 2 mysql root 4096 2009-09-24 12:21 rec_movielens
drwx------ 2 mysql root 4096 2009-09-24 12:21 recommendation

我觉得目录本身的属主和读写属性都应该是对的,因为我用mv把数据文件移回/var/lib下面(在主硬盘sda)就一切正常,但是mv到新硬盘sdb1上面就出问题。

除了在my.cnf中设置数据库文件存放位置之外,是不是还需要其他的改动?
pearly
帖子: 45
注册时间: 2006-12-01 7:10

Re: 大家帮帮忙: mysql数据文件转移的问题

#5

帖子 pearly » 2009-09-25 22:15

我又做了个实验,把data file 移到主硬盘的其他目录下面,mysql也可以正常启动。
现在原因基本上可以确定为下面两条之一:
1, mysql不支持把数据文件放到其他分区;
2, sdb1分区挂载时权限设置有问题。
请高手指点一下,谢谢!
头像
goodyd
帖子: 15
注册时间: 2009-09-18 22:06
来自: http://www.joyvs.com

Re: 大家帮帮忙: mysql数据文件转移的问题

#6

帖子 goodyd » 2009-09-27 9:17

pearly 写了:我又做了个实验,把data file 移到主硬盘的其他目录下面,mysql也可以正常启动。
现在原因基本上可以确定为下面两条之一:
1, mysql不支持把数据文件放到其他分区;
2, sdb1分区挂载时权限设置有问题。
请高手指点一下,谢谢!


ubuntu 8.04 在 /etc/apparmor.d/usr.sbin.mysqld
在这个文件里面可以修改应用程序路径的权限.这个文件做了相应更改才可以移到别的分区去。
路上行人皆红杏,渔樵耕读尽红妆~~~~不是玄藏说的!
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 大家帮帮忙: mysql数据文件转移的问题

#7

帖子 oneleaf » 2009-09-27 11:33

我是直接做了一个ln -s 将其它分区的目录挂载软链接到 /var/lib/mysql 都没有任何问题。
pearly
帖子: 45
注册时间: 2006-12-01 7:10

Re: 大家帮帮忙: mysql数据文件转移的问题

#8

帖子 pearly » 2009-09-30 4:25

6楼正解。成功了,多谢各位。
头像
冲浪板
论坛版主
帖子: 7513
注册时间: 2007-05-06 8:19

Re: 大家帮帮忙: mysql数据文件转移的问题

#9

帖子 冲浪板 » 2009-09-30 8:43

9494,其实你以为改动了文件位置系统就自己知道?就算ubuntu强,也没那么的强。

btw:还是ln -s来得好一些吧
头像
meteormatt
帖子: 693
注册时间: 2008-02-24 14:15
系统: Ubuntu
来自: 江苏
联系:

Re: 大家帮帮忙: mysql数据文件转移的问题

#10

帖子 meteormatt » 2009-10-09 20:59

冲浪板 写了:9494,其实你以为改动了文件位置系统就自己知道?就算ubuntu强,也没那么的强。

btw:还是ln -s来得好一些吧

怀念以前的老台式机。可惜现在租的地方没条件用了。目前只能用笔记本和手机了。
回复