通过apt-get或yum安装的mysql的目录通常的位置不时候存放大量的数据,我们很多时候需要把mysql的数据文件放在另外一个目录下,这个时候需要整体迁移,步骤如下:

创建目录:

root@scutech:~# mkdir /mysql/data -p
root@scutech:~# chown -R mysql. /mysql
root@scutech:~# ll /mysql/
total 12
drwxr-xr-x  3 mysql mysql 4096 Mar  4 19:29 ./
drwxr-xr-x 25 root  root  4096 Mar  4 19:29 ../
drwxr-xr-x  2 mysql mysql 4096 Mar  4 19:29 data/

修改MySQL启动脚本/etc/init.d/mysql
搜索datadir将/var/lib/mysql修改成现在的实际存放路径 /mysql/data

MYSQLDATA=$(get_mysql_option mysqld datadir "/var/lib/mysql")

停止mysql服务,将原data目录整体拷贝到新的目录

cp -R /var/lib/mysq/* /mysql/data
 chown -R mysql. /mysql

启动mysql服务,发现

2020-03-04T11:57:30.088084Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.
2020-03-04T11:57:30.088132Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.
: apparmor="DENIED"

原来是apparmor把目录的权限锁住了, vi /etc/apparmor.d/usr.sbin.mysqld,加入两行:

  /mysql/data/ r,
  /mysql/data/** rwk,

为保证MySQL能够正常工作,可能需要指明新的mysql.sock文件的产生位置。
–socket=/var/run/mysqld/mysqld.sock
内容,为了更稳妥用“#”注释此行)
socket  = /mysql/data/mysqld.sock (加上此行)
如果不变就不用改。

文章下方是我的微信,欢迎加我。👇

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐