CentOS7でMariaDBデータディレクトリを新しい場所に変更する方法

提供:Dev Guides
移動先:案内検索

序章

データベースは時間の経過とともに大きくなり、ファイルシステムのスペースを超えることもあります。 また、オペレーティングシステムの他の部分と同じパーティションにある場合、I/Oの競合が発生する可能性があります。 RAID、ネットワークブロックストレージ、およびその他のデバイスは、冗長性およびその他の望ましい機能を提供できます。 スペースを追加する場合でも、パフォーマンスを最適化する方法を評価する場合でも、他のストレージ機能を利用する場合でも、このチュートリアルでは、MariaDBのデータディレクトリを再配置する方法について説明します。

前提条件

このガイドを完了するには、次のものが必要です。

この例では、/mnt/volume-nyc1-01にマウントされたブロックストレージデバイスにデータを移動しています。 DigitalOceanでブロックストレージを使用する方法ガイドで、セットアップ方法を学ぶことができます。

使用する基盤となるストレージに関係なく、このガイドはデータディレクトリを新しい場所に移動するのに役立ちます。

ステップ1—MariaDBデータディレクトリの移動

MariaDBのデータディレクトリを移動する準備をするために、管理者の資格情報を使用してインタラクティブセッションを開始し、現在の場所を確認しましょう。

mysql -u root -p

プロンプトが表示されたら、MariaDBルートパスワードを入力します。 次に、mysqlプロンプトから、データディレクトリを選択します。

select @@datadir;
Output+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)

この出力は、MariaDBがデフォルトのデータディレクトリ/var/lib/mysql/,を使用するように構成されていることを確認するため、移動する必要のあるディレクトリです。 これを確認したら、exitと入力し、「ENTER」を押してモニターを終了します。

exit

データの整合性を確保するために、実際にデータディレクトリに変更を加える前に、MariaDBをシャットダウンします。

sudo systemctl stop mariadb

systemctlは、すべてのサービス管理コマンドの結果を表示するわけではないため、成功したことを確認したい場合は、次のコマンドを使用してください。

sudo systemctl status mariadb

出力の最後の行にサーバーが停止していることが示されている場合は、確実にシャットダウンされます。

Output. . .
Dec 16 18:29:26 mysql systemd[1]: Stopped MariaDB database server.

サーバーがシャットダウンされたので、rsyncを使用して既存のデータベースディレクトリを新しい場所にコピーします。 -aフラグを使用すると、アクセス許可とその他のディレクトリプロパティが保持され、-vは詳細な出力を提供するため、進行状況を追跡できます。

注:ディレクトリに末尾のスラッシュがないことを確認してください。これは、タブ補完を使用する場合に追加される可能性があります。 末尾にスラッシュがある場合、rsyncは、ディレクトリの内容を、含まれているmysqlディレクトリに転送するのではなく、マウントポイントにダンプします。


sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

rsyncが完了したら、現在のフォルダーの名前を.bak拡張子に変更し、移動が成功したことを確認するまで保持します。 名前を変更することで、新しい場所と古い場所の両方にあるファイルから発生する可能性のある混乱を回避できます。

sudo mv /var/lib/mysql /var/lib/mysql.bak

これで、構成に注意を向ける準備が整いました。

ステップ2—新しいデータの場所を指す

MySQLには、構成値をオーバーライドするいくつかの方法があります。 デフォルトでは、datadir/etc/my.cnf ファイルで/var/lib/mysqlに設定されています。 このファイルを編集して、新しいデータディレクトリを反映します。

sudo vi /etc/my.cnf

datadir=で始まる行を見つけて、新しい場所を反映するように続くパスを変更します。 さらに、ソケットは以前はデータディレクトリにあったため、新しい場所に更新する必要があります。

/etc/my.cnf

[mysqld]
. . .
datadir=/mnt/volume-nyc1-01/mysql
socket=/mnt/volume-nyc1-01/mysql/mysql.sock
. . .

既存の行を更新した後、mysqlクライアントの構成を追加する必要があります。 次の設定をファイルの下部に挿入して、[mysqld]ブロックとinclude行の上でディレクティブを分割しないようにします。

/etc/my.cnf

[client]
port=3306
socket=/mnt/volume-nyc1-01/mysql/mysql.sock

!includedir /etc/my.cnf.d

完了したら、ESCAPEを押し、:wq!と入力してファイルを保存し、終了します。

ステップ3—MariaDBを再起動する

新しい場所を使用するように構成を更新したので、MariaDBを起動して作業を検証する準備が整いました。

sudo systemctl start mariadb
sudo systemctl status mariadb

新しいデータディレクトリが実際に使用されていることを確認するには、モニターを起動します。

mysql -u root -p

データディレクトリの値をもう一度見てください。

select @@datadir;
Output+----------------------------+
| @@datadir                  |
+----------------------------+
| /mnt/volume-nyc1-01/mysql/ |
+----------------------------+
1 row in set (0.01 sec)

exitと入力して、モニターを終了します。

MariaDBを再起動し、新しい場所を使用していることを確認したので、この機会にデータベースが完全に機能していることを確認してください。 既存のデータの整合性を確認したら、sudo rm -Rf /var/lib/mysql.bakを使用してバックアップデータディレクトリを削除できます。

結論

このチュートリアルでは、MariaDBのデータディレクトリを新しい場所に移動しました。 ブロックストレージデバイスを使用していましたが、ここでの手順は、基盤となるテクノロジに関係なく、データディレクトリの場所を再定義するのに適しているはずです。

MariaDBはMySQLのドロップイン代替として設計されているため、MySQLの公式ドキュメントのこれらのセクションからデータディレクトリの管理について詳しく知ることができます。