红联Linux门户
Linux帮助

移动MySQL数据目录-Ubuntu

发布时间:2016-07-24 14:59:56来源:topspeedsnail.com作者:斗大的熊猫
MySQL默认把数据库文件保存到/var/lib/mysql目录,由于磁盘空间耗尽,我需要把数据库文件迁移到外部存储(挂载点/mnt/disk1)。
 
查看MySQL数据的存储目录:
$ mysql -u root -p
mysql> select @@datadir;
移动MySQL数据目录-Ubuntu
 
把MySQL数据目录移动到新目录(Ubuntu 16.04)
在移动之前先停止MySQL服务:
$ sudo systemctl stop mysql
复制MySQL数据目录:
$ sudo rsync -av /var/lib/mysql /mnt/disk1
rsync是同步命令,它把/var/lib/mysql目录拷贝到了/mnt/disk1/mysql目录,-a选项指定要保留所有文件和目录的权限。
备份原数据目录:
$ sudo mv /var/lib/mysql /var/lib/mysql_bakup
配置MySQL:
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
把datadir的值改为/mnt/disk1/mysql:
移动MySQL数据目录-Ubuntu
最后,还需要配置AppArmor访问规则。如果不配置AppArmor会出现如下错误:
Job for mysql.service failed because the control process 
exited with error code. See "systemctl status mysql.service" 
and "journalctl -xe" for details.
 
配置AppArmor:
$ sudo vim /etc/apparmor.d/tunables/alias
在文件尾添加:
alias /var/lib/mysql/ -> /mnt/disk1/mysql/,
重启AppArmor:
$ sudo systemctl restart apparmor
 
启动MySQL:
$ sudo mkdir -p /var/lib/mysql/mysql
$ sudo systemctl start mysql
我们需要创建默认的数据目录,因为MySQL在启动时还会检查默认数据目录是否存在。
 
查看MySQL数据目录:
mysql> select @@datadir;
+--------------------+
| @@datadir          |
+--------------------+
| /mnt/disk1/mysql/ |
+--------------------+
1 row in set (0.00 sec)
完成。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22665.html