?????? 我们在日常部署mysql服务时,经常会考虑到磁盘空间问题,而需要做默认存储目录以及日志目录的迁移,虽然网上零零散散也有很多教程,但经过本人试验,很多文章都比较表层,照着做会出现这样那样的问题,所以今天特别开个专题,把数据文件和日志文件迁移的过程合在一起详细地阐述一遍。
???????
?????? 环境参数:CentOS 6.5 、Mysql 5.5.43
?????? 迁移后路径:数据库文件保存在 /data/mysql 下,日志文件保存在 /data/log/mysql 下
?
??????步骤:
??????一、停止Mysql服务: service mysql stop
????? 二、创建 /data/mysql 和 /data/log/mysql 文件夹
????? 三、修改数据库文件夹的宿主为mysql:chown -R mysql:mysql /data/mysql
????? 四、修改日志文件夹操作权限:chmod 777 /data/log
????? 五、修改日志文件夹的宿主为mysql:chown -R mysql:mysql /data/log/mysql
??????得到如下目录结构:
?????
?????
????? 六、拷贝mysql存储文件夹下所有内容到新目录:cp -rf /var/lib/mysql/* /data/mysql/
????? 七、修改新目录下文件的权限和宿主:chmod 660 *;chown -R mysql:mysql *?
????? --这一步非常关键,就是把copy过去的文件权限进行重新编辑,如果不执行这步操作,很多同学会发现后面的mysql服务是无法启动的,会提示无法打开数据文件,原因因为CentOS系统执行cp,原文件权限和宿主不会被保留。
?????? 得到如下目录结构:
??????
?????? 八、修改mysql配置文件:vim /etc/mysql/my/cnf,修改数据库文件以及日志文件的存放路径
??????
?????
?
???? ok,网上很多教程都到此为止,但动手操作的同学会发现,此时启动mysql会报错,主要错误信息是这样的:/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13),这个错误其实就是mysql的数据目录迁移错位。那怎么解决呢?其实,在my.cnf中注释部分说明的很清楚:# * IMPORTANT# If you make changes to these settings and your system uses apparmor, you may# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
???? apparmor是linux内核强制访问控制系统,这个非常重要!
?
??? 九、我们需要进行调整mysql的强制访问目录:vim /etc/apparmor.d/usr.sbin.mysqld
???
???? 十、记得刷新下,使apparmor配置生效:/etc/init.d/apparmor reload
???? 十一、此时,重启MySQL服务,service mysqld start
?
?至此你的MySQL的已经更换为你的新路径了!
?