サイトアイコン IT NEWS

MariaDB(MySQL)のデータディレクトリを変更する方法

mysql-change-datadir

前回は連載中の自宅サーバー構築のデータベース編で、Ubuntu上にDBサーバーを構築しました。
今回はその続きということで、MariaDBMySQL)の設定ファイルを変更せずにデータディレクトリの保存先を変更する方法をご紹介します!

何故、データディレクトリ変更するかと言うと、OS自体はそこまで容量を持たせてないので、これまた以前構築したストレージサーバーにマウントしている内蔵HDDに保存するためです。

データディレクトリの確認と移動

まずはMariaDBの設定ファイルから、どこにデータディレクトリがあるかを確認し、保存したい場所に移動します。
毎度のことですが、設定作業は常にroot権限で行ってください。

データディレクトリの確認

一般的なLinuxなら「/etc/my.cnf」に設定ファイルがあるのですが、Ubuntu 20.04の標準パッケージからインストールすると以下のフォルダにあります。

# vi /etc/mysql/mariadb.conf.d/50-server.cnf
・・・
[mysqld]
・・・
datadir = /var/lib/mysql
・・・ 

[mysqld]セクションに「datadir」があるのが分かります。
ということで、データディレクトリは「/var/lib/mysql」になりますね。

データディレクトリの移動

移動する前に、必ずMariaDB停止しておきましょう。

# systemctl stop mariadb

停止を確認したら、念のために変更前に容量を確認しておきます。

# du -s /var/lib/mysql/*

そして、変更先のディレクトリにそのまま移動するのですが、ディレクトリの内容を丸ごと保持したまま移動したいので、mvコマンドは使用せず、cpコマンドにオプション「-pR」を付けてコピーします。

# cp -pR /var/lib/mysql /mnt/nas/mysql

必要があれば、所有者mysqlに変えてくださいね。
著者の場合は同セグのフルアクセスを許可してるので不要

# chown -R mysql:mysql /mnt/nas/mysql

コピーが完了したら再度容量を確認し、容量に差異がないことを確認しましょう。

シンボリックリンクを貼るだけ!

最後に、元あったデータディレクトリシンボリックリンクを貼れば完成ですが、先程は移動ではなくコピーをしたので、元のデータディレクトリが残ったままだとシンボリックリンクを貼れません。
そこで、バックアップの意味も込めて、一旦コピー元のデータディレクトリをリネイムし、シンボリックリンクを貼ってからMariaDBの起動と動作を確認した後に消しましょう。

コピー元のデータディレクトリ名を変更

ここはリネイムするだけなので普通にmvコマンドでOKですよ~。

# mv /var/lib/mysql /var/lib/mysql.old

これで「/var/lib/mysqlディレクトリがなくなり、「/var/lib/mysql.old」ができました。

シンボリックリンクを貼る

前章でコピー先のデータディレクトリシンボリックリンクコピー元と同じパスに作成します。

# ln -s /mnt/nas/mysql /var/lib/mysql

一応、中身を見てきちんとリンクされているか確認したら、MariaDBを起動してステータス正常であるかも確認します。

# systemctl start mariadb
# systemctl status mariadb

コピー元のデータディレクトリを削除

正常に起動していれば、先程リネイムしたコピー元のデータディレクトリはゴミになりますので消してしまいます。

# rm -rf /var/lib/mysql.old

以上でデータディレクトリの変更は完了です!
ディレクトリごと移動してシンボリックリンクを貼るだけで、意外と簡単でしたね!

モバイルバージョンを終了