大家帮帮忙: mysql数据文件转移的问题
-
- 帖子: 45
- 注册时间: 2006-12-01 7:10
大家帮帮忙: mysql数据文件转移的问题
因为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
请问各位是否有办法解决问题,谢谢!
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数据文件转移的问题
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数据库文件存储目 录正确。
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数据文件转移的问题
检查目录的属主。
-
- 帖子: 45
- 注册时间: 2006-12-01 7:10
Re: 大家帮帮忙: mysql数据文件转移的问题
这是/var/lib/mysql下面各个目录的属性:oneleaf 写了:检查目录的属主。
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中设置数据库文件存放位置之外,是不是还需要其他的改动?
-
- 帖子: 45
- 注册时间: 2006-12-01 7:10
Re: 大家帮帮忙: mysql数据文件转移的问题
我又做了个实验,把data file 移到主硬盘的其他目录下面,mysql也可以正常启动。
现在原因基本上可以确定为下面两条之一:
1, mysql不支持把数据文件放到其他分区;
2, sdb1分区挂载时权限设置有问题。
请高手指点一下,谢谢!
现在原因基本上可以确定为下面两条之一:
1, mysql不支持把数据文件放到其他分区;
2, sdb1分区挂载时权限设置有问题。
请高手指点一下,谢谢!
- goodyd
- 帖子: 15
- 注册时间: 2009-09-18 22:06
- 来自: http://www.joyvs.com
Re: 大家帮帮忙: mysql数据文件转移的问题
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数据文件转移的问题
我是直接做了一个ln -s 将其它分区的目录挂载软链接到 /var/lib/mysql 都没有任何问题。
-
- 帖子: 45
- 注册时间: 2006-12-01 7:10
Re: 大家帮帮忙: mysql数据文件转移的问题
6楼正解。成功了,多谢各位。
- 冲浪板
- 论坛版主
- 帖子: 7513
- 注册时间: 2007-05-06 8:19
Re: 大家帮帮忙: mysql数据文件转移的问题
9494,其实你以为改动了文件位置系统就自己知道?就算ubuntu强,也没那么的强。
btw:还是ln -s来得好一些吧
btw:还是ln -s来得好一些吧
- meteormatt
- 帖子: 693
- 注册时间: 2008-02-24 14:15
- 系统: Ubuntu
- 来自: 江苏
- 联系:
Re: 大家帮帮忙: mysql数据文件转移的问题
哦冲浪板 写了:9494,其实你以为改动了文件位置系统就自己知道?就算ubuntu强,也没那么的强。
btw:还是ln -s来得好一些吧
怀念以前的老台式机。可惜现在租的地方没条件用了。目前只能用笔记本和手机了。