ウェブサイト検索

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


紹介

データベースは時間と共に成長し、時にはファイルシステム上のスペースを超えてしまうことがあります。また、オペレーティングシステムの残りと同じパーティションに置いている場合、I/Oコンテンションに直面することもあります。RAID、ネットワークブロックストレージ、その他のデバイスは冗長性やその他の望ましい機能を提供できます。ストレージの特徴を利用しようとしている場合でも、スペースを追加している場合でも、パフォーマンスを最適化する方法を評価している場合でも、このチュートリアルではMariaDBのデータディレクトリの移動についてガイドします。

前提条件

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

  • 非ルートユーザーにsudo権限があり、MariaDBがインストールされたCentOS 7サーバー。これらの権限を持つユーザーの設定方法については、CentOS 7の初期サーバー設定ガイドをご覧ください。まだMariaDBをインストールしていない場合は、CentOS 7にMariaDBをインストールする方法ガイドを参考にしてください。

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

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

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

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

  1. mysql -u root -p

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

  1. select @@datadir;
+-----------------+
| @@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

出力の最終行がサーバーが停止したと伝えている場合、確実にシャットダウンしています。

. . .
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=」で始まる行を見つけ、その後のパスを新しい場所を反映するように変更します。また、ソケットは以前データディレクトリにあったため、新しい場所に更新する必要があります:

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

既存の行を更新した後、mysql クライアントの設定を追加する必要があります。以下の設定をファイルの一番下に挿入して、[mysqld] ブロックの指示を分割しないようにし、include 行の上に配置してください:

[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;
+----------------------------+
| @@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ドキュメントのこれらのセクションからデータディレクトリの管理についてさらに学ぶことができます:

  • MySQLデータディレクトリ
  • 複数のデータディレクトリの設定

関連記事: