概述
本文描述了在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目錄替換即可完成數據恢復。