シンボリックリンクを利用してデータベースの保存先を変更する 【mariadb, MySQL】

2021-07-02

シンボリックリンクでデータベースの保存先を変更

mariadb, MySQLで、データベースの保存先の設定は、「/etc/my.cnf」の「datadir=/var/lib/mysql」の箇所です

# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

このdatadir の設定箇所を変更すれば、データベースの保存先を変更できますが、設定ファイルを変更せずシンボリックリンクでの作って保存先を変更します

新しいデータベースの保存先を作成します

新しいデータベースの保存先のディレクトリを作成します。下記の設定ではadminユーザーのhomeディレクトリに作成しています

$ mkdir -p /home/admin/database/

データベースを停止します

既存のデータベースの保存先をコピー(移動)する前に、データベース(mariadb, MySQL)を停止します

# mariadb の場合
$ sudo systemctl stop mariadb

# mysql の場合
$ sudo systemctl stop mysqld

データベースのコピー及び所有者を変更します

データベースを停止してから、保存先を新しいディレクトリにコピーします。

$ sudo cp -pr /var/lib/mysql /home/admin/database/

シンボリックリンクを作成時に、「/var/lib/mysql」が存在したままだとシンボリックリンクが作成できないので、コピー後はデータベースを保存先は「mysql_old」にリネームします。

$ sudo mv   /var/lib/mysql  /var/lib/mysql_old

コピーしたディレクトリの所有者を「mysql」ユーザーに変更します

$ sudo chown -R mysql:mysql /home/admin/database/mysql

シンボリックリンクを作成します

lnコマンドでシンボリックリンクを作成します

$ sudo ln -s /home/admin/database/mysql /var/lib/mysql

データベースを起動します

シンボリックリンクを作成したら、データベースを起動します

# mariadb の場合
$ sudo systemctl start mariadb

# mysql の場合
$ sudo systemctl start mysqld

※しばらく運用して問題がなければ、古いデータベースを保存先を削除します

$ sudo rm -rf /var/lib/mysql_old