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
この記事へのコメント
トラックバックURL