概述
本文描述了在Ubuntu 16.04
系统下修改mysql-server-5.7
数据库datadir
目录的详细步骤。目标:将数据库目录datadir
从/var/lib/mysql
修改到/home/database/mysql
。
系统信息:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
$ uname -a
Linux Ubuntu 4.4.0-87-generic #110-Ubuntu SMP Tue Jul 18 12:55:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
mysql-server版本:
Server version: 5.7.11-0ubuntu6 (Ubuntu)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
步骤
以下步骤需要停止mysql服务并假设用户拥有管理员权限。
一、停止mysql服务
sudo service mysql stop
二、新建目录并移动现有数据库
重要提示:强烈建议先备份
/var/lib/mysql
文件夹,数据无价!!!强烈建议先备份/var/lib/mysql
文件夹,数据无价!!!强烈建议先备份/var/lib/mysql
文件夹,数据无价!!!
创建新的数据库目录:
sudo mkdir /home/database
移动当前数据到新目录:
sudo mv /var/lib/mysql /home/database/
同时需要删除日志文件:
sudo rm /home/database/mysql/ib_logfile0
sudo rm /home/database/mysql/ib_logfile1
三、修改mysql配置文件
修改/etc/mysql/mysql.conf.d/mysqld.cnf
中datadir
的值为:
datadir = /home/database/mysql
四、修改apparmor配置
修改/etc/apparmor.d/usr.sbin.mysqld
中的Allow data dir access
部分,改后如下:
# Allow data dir access
# /var/lib/mysql/ r,
# /var/lib/mysql/** rwk,
/home/database/mysql/ r,
/home/database/mysql/** rwk,
重新加载apparmor服务使修改生效:
sudo service apparmor reload
五、修改mysql-systemd-start
修改/usr/share/mysql/mysql-systemd-start
文件,将类似/var/lib/mysql
的内容全部修改为/home/database/mysql
。
六、启动mysql服务
sudo service mysql start
七、验证
进入mysql命令行,执行show variables like '%datadir%';
,可以看到如下信息:
mysql> show variables like '%datadir%';
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| datadir | /home/database/mysql/ |
+---------------+-----------------------+
1 row in set (0.00 sec)
表示修改成功。恭喜你!
附加说明
当mysql服务无法启动时,可以通过datadir目录对数据库进行备份。直接完全拷贝保存即可。可以在当前主机或其它主机(最好mysql版本相同)上直接将原有datadir目录替换即可完成数据恢复。