Ubuntu系统mysql数据库目录迁移

550 阅读1分钟

迁移前备份数据库

进入超级管理员

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

参考文章