MariaDB存儲目錄遷移

本文的初衷僅供自己做備忘筆記, 內(nèi)容大多從網(wǎng)上搜集和整理, 并非都是自己原創(chuàng).
參考的來源我會在后面注明, 對于可能遺漏的來源, 還請相關(guān)原創(chuàng)作者提醒, 非常感謝.

參考來源: https://mariadb.com/kb/en/library/default-data-directory-for-mariadb/

基本操作和MySQL移動是一樣的

停止mariadb

sudo service mariadb stop

創(chuàng)建mysql存放的目標(biāo)文件夾

一般mysql默認(rèn)的存儲目錄在/var/lib/mysql

/var/lib$ ll
......
drwxr-xr-x  2 root          root          4096 11月 25 00:06 mlocate/
drwxr-xr-x  4 mysql         mysql         4096 11月 25 00:30 mysql/
drwxr-xr-x  2 root          root          4096 11月 17 11:34 NetworkManager/
......

注意文件的權(quán)限, 以及用戶和用戶組都為mysql, 這個(gè)很重要.

遷移文件

假設(shè)我們要將mysql目錄移到/home/data_storage下
執(zhí)行

cd /var/lib/
sudo cp -pr mysql/ /home/data_storage

這里p表示把源文件或目錄下的所具有的權(quán)限一同復(fù)制到目標(biāo)目錄或文件, r表示遞歸

修改配置文件:

sudo vim  /etc/mysql/my.cnf

在[mysqld]下, 修改datadir的值(沒有自己加上)

datadir=/home/data_storage

然后, 保存后啟動mariadb, 至此, mariadb的遷移已完成 (沒成功的繼續(xù)看下面)

關(guān)于ubuntu的apparmor

在ubuntu中,有些敏感操作受到了apparmor的限制 ,mysql也受到了限制, 所以要修改這個(gè)

sudo  vim /etc/apparmor.d/usr.sbin.mysqld

加入

/home/data_storage/ r,
/home/data_storage/** rwk,

然后在啟動mysql之前, 重新加載apparmor

sudo  service  apparmor  reload

實(shí)際在當(dāng)前環(huán)境中, usr.sbin.mysqld文件里只有空的注釋說明內(nèi)容, 并沒有特殊的配置.直接添加上面的配置反而會出現(xiàn)其他問題. 因此, 個(gè)人認(rèn)為除非必要, 否則這里不用修改.

關(guān)于移動的目錄權(quán)限

移動完mysql目錄, 并修改好datadir后, 啟動仍可能會遇到如下錯(cuò)誤:

May 13 10:24:28 mariadb3 mysqld[19221]: 2019-05-13 10:24:28 0 [Warning] Can't create test file /usr/local/data/mariadb/mariadb3.lower-test
May 13 10:24:28 mariadb3 mysqld[19221]: 2019-05-13 10:24:28 0 [ERROR] Aborting

除了要檢查mysql目錄的權(quán)限, apparmor配置以外, 還要留意mysql目錄的所有父級目錄的執(zhí)行權(quán)限. mariadb官方是如下要求的:
This is usually a permission error on the directory in which this file is being written. Ensure that the entire datadir is owned by the user running mysqld, usually mysql. Ensure that directories have the "x" (execute) directory permissions for the owner. Ensure that all the parent directories of the datadir upwards have "x" (execute) permissions for all (user, group, and other).
Once this is checked look at the systemd and selinux documentation below, or apparmor.

這個(gè)坑踩得差點(diǎn)吐血!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容