黑马程序员技术交流社区
标题:
【成都校区】修改mysql数据文件存储位置
[打印本页]
作者:
小蜀哥哥
时间:
2019-8-8 09:26
标题:
【成都校区】修改mysql数据文件存储位置
在Linux主机上的默认存储位置是/var/lib/mysql/下。
如果想更换mysql的数据文件的存储位置,则:
Linux下:(linux下经过测试,可以不用停止mysql而直接操作,不过如果是经常更新的数据库还是先停止的好,停止的方法在此就不介绍了!)
# mkdir /data/database(建立新的数据文件目录,也可以直接移动过来)
# mv /var/lib/mysql /data/database/(移动数据文件)
# ln -s /data/database/mysql /var/lib/mysql(建立数据文件的软链接)
如果您的操作用户不是mysql,例如root用户操作,那可能mysql对新建立的数据文件夹没有读取权限,还有chown,或者是chgrp,chmod才可以!
于是才发现/var/lib/mysql所在的分区资源严重不足,己经用到80%了。
在网上查了下资料,有两种方法可以实现:[@more@]本来只是想做一个phpbb的测试站点,但无奈需要它真正的上架运作了。
于是才发现/var/lib/mysql所在的分区资源严重不足,己经用到80%了。
在网上查了下资料,有两种方法可以实现:
首先service mysqld stop
1、修改/etc/my.cnf配置文件
将其中的datadir=/var/lib/mysql修改为现在想移动到的地方。然后将原来的数据文件cp过来。
2、建立文件的软链接
将/var/lib/mysql中的数据cp或mv到新的目的地。再将新目的地的目录链接为/var/lib/mysql
以上完成后,启动mysql。service mysqld start
如果OS version是AS 4的话,默认是开启selinux的。那么在经过以上更改后,你会发现无法启动mysql.
查看/var/log/mysqld.log。日志显示error 13,没有权限创建test文件。
既然问题是因为selinux,那么关闭selinux即可解决问题。关闭的方法如下:
修改/etc/selinux/config
将SELINUX=disabled重启机器。
很多时候,mysql的数据会非常大,数据默认放在/var/lib/mysql,由于/var所划分的空间不够大,所以我们需要将mysql数据存放路径修改一下,放到大分区里面,以便可以应付mysql数据增长。
1.设置新的存放路径
mkdir /data
2.复制原有数据
cp -rp /var/lib/mysql/ /data
3.修改配置文件
vim /etc/mysql/my.cnf
datadir = /data/mysql
修改/etc/apparmor.d/usr.sbin.mysqld中的datadir路径为新的值, 并service apparmor reload重启服务。
Ubuntu就开始使用一种安全软件叫做AppArmor,这个安全软件会在你的文件系统中创建一个允许应用程序访问的区域(专业术语:应 用程序访问控制)。如果不为MySQL修改AppArmor配置文件,永远也无法为新设置的数据库存储位置启动
4.修改启动文件
vim /etc/apparmor.d/usr.sbin.mysqld
#把
/var/lib/mysql r,
/var/lib/mysql/** rwk,
#改成
/data/mysql r,
/data/mysql/** rwk,
5.重启服务
service apparmor restart
service mysql restart
搞定,就是这么简单
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2