序章

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

前提条件

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

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

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

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

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

  1. mysql -u root -p

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

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

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

  1. exit

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

  1. sudo systemctl stop mariadb

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

  1. sudo systemctl status mariadb

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

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

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

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

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

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

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

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

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

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

  1. 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を起動して作業を検証する準備が整いました。

  1. sudo systemctl start mariadb
  2. sudo systemctl status mariadb

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

  1. mysql -u root -p

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

  1. 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の公式ドキュメントのこれらのセクションからデータディレクトリの管理について詳しく知ることができます。