迁移前备份数据库
进入超级管理员
sudo su
开始备份
mysqldump –uroot –p 数据库名 > /home/备份文件.sql;
开始迁移
1、确定mysql数据库文件存放目录
show variables like '%dir%';
2、停止mysql数据库服务:
sudo /etc/init.d/mysql stop
3、 迁移数据库至新目录
目标文件夹:/mnt/data/
方法一(推荐)
sudo cp -a /var/lib/mysql /mnt/data/
方法二
sudo mv /var/lib/mysql /mnt/data/
4、 更改目录权限
sudo chmod -R 777 /mnt
sudo chown -R mysql /mnt/data/mysql
坑1: mysql所在上层文件夹都应该是777的权限,否则在启动mysql的时候会出现“Error: 13 权限不足”的错误。
5、修改配置文件
有的配置文件是/etc/mysql/my.cnf,有的配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf 在[mysqld]标签下添加
datadir =/mnt/data/mysql
坑2:这里不需要更改别的,手贱改了sock,进入mysql时出现错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
6、修改 /etc/apparmor.d/usr.sbin.mysqld文件
找到其中的
# Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
前面加上#注释掉。加入新路径的权限声明:
/mnt/data/mysql/ r,
/mnt/data/mysql/** rwk,
7、修改/etc/apparmor.d/abstractions/mysql文件
/var/lib/mysql{,d}/mysql{,d}.sock rw,
在前面加#注释掉,添加下面内容:
/mnt/data/mysql{,d}/mysql{,d}.sock rw,
8、重启服务
sudo /etc/init.d/apparmor start
sudo /etc/init.d/mysql start