概述
本文描述了在Ubuntu 16.04系統(tǒng)下修改mysql-server-5.7數(shù)據(jù)庫(kù)datadir目錄的詳細(xì)步驟。目標(biāo):將數(shù)據(jù)庫(kù)目錄datadir從/var/lib/mysql修改到/home/database/mysql。
系統(tǒng)信息:
$ 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服務(wù)并假設(shè)用戶擁有管理員權(quán)限。
一、停止mysql服務(wù)
sudo service mysql stop
二、新建目錄并移動(dòng)現(xiàn)有數(shù)據(jù)庫(kù)
重要提示:強(qiáng)烈建議先備份
/var/lib/mysql文件夾,數(shù)據(jù)無(wú)價(jià)?。?!強(qiáng)烈建議先備份/var/lib/mysql文件夾,數(shù)據(jù)無(wú)價(jià)!??!強(qiáng)烈建議先備份/var/lib/mysql文件夾,數(shù)據(jù)無(wú)價(jià)!!!
創(chuàng)建新的數(shù)據(jù)庫(kù)目錄:
sudo mkdir /home/database
移動(dòng)當(dāng)前數(shù)據(jù)到新目錄:
sudo mv /var/lib/mysql /home/database/
同時(shí)需要?jiǎng)h除日志文件:
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服務(wù)使修改生效:
sudo service apparmor reload
五、修改mysql-systemd-start
修改/usr/share/mysql/mysql-systemd-start文件,將類似/var/lib/mysql的內(nèi)容全部修改為/home/database/mysql。
六、啟動(dòng)mysql服務(wù)
sudo service mysql start
七、驗(yàn)證
進(jìn)入mysql命令行,執(zhí)行show variables like '%datadir%';,可以看到如下信息:
mysql> show variables like '%datadir%';
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| datadir | /home/database/mysql/ |
+---------------+-----------------------+
1 row in set (0.00 sec)
表示修改成功。恭喜你!
附加說明
當(dāng)mysql服務(wù)無(wú)法啟動(dòng)時(shí),可以通過datadir目錄對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。直接完全拷貝保存即可??梢栽诋?dāng)前主機(jī)或其它主機(jī)(最好mysql版本相同)上直接將原有datadir目錄替換即可完成數(shù)據(jù)恢復(fù)。