CentOS7でMariaDB(MySQL)マウントした領域にデータ格納位置を変更

CentOS7にMariaDB入れた際にdatadirを変えてデータを格納位置をデフォルトと違う位置にして運用を開始するのはなかなかうまくいかないが、これに関しては細かく書きはしません(パーミッションやSELinux,ProtectHomeなどが原因としては多い)うまくいく方法を書いておく。

インストールしてから/etc/my.cnf.d/下に設定を書いて、サービス起動、mysql_secure_installationしてという通常の作業を行った後

位置を/db_data/mysqlにする場合(datadirは変えない)

$ sudo mkdir /db_data/mysql
$ sudo chown mysql:mysql /db_data/mysql

1.MySQLを止める

$sudo systemctl stop mariadb.service

2.MySQLのdata_dirを新パーティションにコピー

$sudo cp -pR /var/lib/mysql/* /db_data/mysql

3.元のMySQLデータディレクトリをリネーム

$sudo mv /var/lib/mysql /var/lib/mysql.old

4./var/lib/mysqlからコピーしたパーティションへシンボリックリンク

$sudo ln -s /db_data/mysql /var/lib/mysql

5.MySQLを起動

$sudo systemctl start mariadb.service

ここで書きたいのは「マウントした領域」を格納位置にする方法。上記の方法でちゃんとサービス起動するが、OS再起動後だけ起動に失敗する

Feb 18 16:16:28 jyutyu mysqld: 2018-02-18 16:16:28 139737110296704 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release.
Feb 18 16:16:28 jyutyu mysqld: 2018-02-18 16:16:28 139737110296704 [Note] /usr/sbin/mysqld (mysqld 10.2.6-MariaDB-log) starting as process 1375 ...
Feb 18 16:16:28 jyutyu mysqld: 2018-02-18 16:16:28 139737110296704 [Warning] Can't create test file /var/lib/mysql/jyutyu.lower-test
Feb 18 16:16:28 jyutyu mysqld: #007/usr/sbin/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 2 "No such file or directory")
Feb 18 16:16:28 jyutyu mysqld: 2018-02-18 16:16:28 139737110296704 [ERROR] Aborting
Feb 18 16:16:28 jyutyu systemd: mariadb.service: main process exited, code=exited, status=1/FAILURE
Feb 18 16:16:28 jyutyu systemd: Failed to start MariaDB database server.
Feb 18 16:16:28 jyutyu systemd: Unit mariadb.service entered failed state.

ErrcodeがNo such file or directoryであることに注目。シスログを見ると結構後のほうでマウントが行われていることがわかる。

$ sudo vi /usr/lib/systemd/system/mariadb.service

マウントが終わった後にすることで解決する

[Unit]のところに追加
RequiresMountsFor=/db_data
カテゴリー: DB, Linux, 技術情報 タグ: ,

関連してるかも記事

この記事へのコメント

※コメントはスパム対策の為、承認制となっています。あらかじめご了承ください。

トラックバックURL