之前mysql通过apt安装的,运行一段时间之后,发现根分区过小,有必要将占用空间大的数据库迁移到home分区,于是,有了这篇文章。
停掉正在使用的数据库
为了保证数据的完整性,先暂时停掉正在使用的数据库。1
service mysql stop
修改数据目录配置
1 | vim /etc/mysql/mysql.conf.d/mysqld.conf |
找到datadir参数(默认情况下是/var/lib/mysql
)。
将其修改为迁移后的目录,此处我放在了/data/mysql_data
目录。
当然,如果/data/mysql-data
目录不存在,则需要新新建1
mkdir /data/mysql_data
复制数据文件
1 | cp -a -r /var/lib/mysql/* /data/mysql_data |
此处一定要跟上-a
参数,不然复制过去的目录没有权限。
修改新目录的权限1
chown -R mysql:mysql /data/mysql_data
修改AppArmor
要通过在默认目录和新位置之间创建别名来告诉AppArmor让MySQL写入新目录。需要编辑AppArmor alias文件1
vim /etc/apparmor.d/tunables/alias
在文件底部添加1
alias /var/lib/mysql/ -> /mnt/volume-nyc1-01/mysql/,
保存并退出。
重启AppArmor服务,使配置生效。1
service apparmor restart
启动mysql
1 | service mysql start |
查看mysql状态1
systemctl status mysql
检查新目录是否生效
登录mysql1
mysql -u root -p
查看配置1
show global variables like "%datadir%";
此时应该看到值为新目录/data/mysql_data
,表示配置生效。
删除原文件
1 | rm -rf /var/lib/mysql |
参考文章: