通过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 (加上此行)
如果不变就不用改。