前書き

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

前提条件

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

  • * `+ sudo +`特権を持ち、MariaDBがインストールされている非rootユーザーを持つCentOS 7サーバー*。 CentOS 7での初期サーバーセットアップガイドで、これらの権限を持つユーザーをセットアップする方法の詳細を学ぶことができます。 MariaDBをまだインストールしていない場合は、https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-centos-7 [CentOS 7にMariaDBをインストールする方法]ガイドが役立ちます。 。

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

基礎となるストレージの種類にかかわらず、このガイドはデータディレクトリを新しい場所に移動するのに役立ちます。

手順1-MariaDBデータディレクトリの移動

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

mysql -u root -p

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

select @@datadir;
Output+-----------------+
| @@datadir       |
+-----------------+
|  |
+-----------------+
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 +`は詳細な出力を提供するため、進行状況を追跡できます。

sudo rsync -av /var/lib/mysql

「+ 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=/mysql
socket=/mysql/mysql.sock
. . .

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

/etc/my.cnf

!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                  |
+----------------------------+
|  |
+----------------------------+
1 row in set (0.01 sec)

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

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

結論

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

MariaDBはMySQLのドロップイン置換として設計されているため、データディレクトリの管理の詳細については、公式のMySQLドキュメントの次のセクションをご覧ください。