Linux でデフォルトの MySQL/MariaDB データ ディレクトリを変更する方法
CentOS/RHEL 7 サーバーに LAMP スタックのコンポーネントをインストールした後、実行したいことがいくつかあります。
それらの中には、Apache および MySQL/MariaDB のセキュリティの強化に関係するものもありますが、その他は設定やニーズに応じて適用できる場合もあれば、適用できない場合もあります。
たとえば、データベース サーバーの予想される用途に基づいて、デフォルトのデータ ディレクトリ (/var/lib/mysql
) を別の場所に変更することができます。これは、そのようなディレクトリが使用率が高いために増大すると予想される場合に当てはまります。
そうしないと、/var
が保存されているファイルシステムがある時点で崩壊し、システム全体に障害が発生する可能性があります。デフォルト ディレクトリを変更するもう 1 つのシナリオは、実際のデータを保存するために使用する専用のネットワーク共有がある場合です。
このため、この記事では、CentOS/RHEL 7 サーバーおよび Ubuntu/Debian ディストリビューションで、デフォルトの MySQL/MariaDB データ ディレクトリを別のパスに変更する方法を説明します。
ここでは MariaDB を使用しますが、特に断りのない限り、この記事で説明する概念と手順は MySQL と MariaDB の両方に適用されます。
デフォルトの MySQL/MariaDB データ ディレクトリの変更
注: 新しいデータ ディレクトリは /mnt/mysql-data
であると仮定します。このディレクトリは mysql:mysql
によって所有される必要があることに注意することが重要です。
mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data
便宜上、プロセスを 5 つのわかりやすいステップに分けました。
ステップ 1: 現在の MySQL データ ディレクトリを特定する
まず、次のコマンドを使用して現在のデータ ディレクトリを特定することは価値があり、適切です。過去に変更されている可能性があるため、まだ /var/lib/mysql
であると単純に想定しないでください。
mysql -u root -p -e "SELECT @@datadir;"
MySQL パスワードを入力すると、出力は次のようになります。
ステップ 2: MySQL データ ディレクトリを新しい場所にコピーする
データの破損を避けるため、サービスが現在実行中の場合は続行する前にサービスを停止してください。これを行うには、systemd のよく知られたコマンドを使用します。
------------- On SystemD -------------
systemctl stop mariadb
systemctl is-active mariadb
------------- On SysVInit -------------
service mysqld stop
service mysqld status
OR
service mysql stop
service mysql status
サービスが停止した場合、最後のコマンドの出力は次のようになります。
次に、元のパーミッションとタイムスタンプを保持しながら、/var/lib/mysql
の内容を /mnt/mysql-data
に再帰的にコピーします。
cp -R -p /var/lib/mysql/* /mnt/mysql-data
ステップ 3: 新しい MySQL データ ディレクトリを構成する
構成ファイル (my.cnf
) を編集して、新しいデータ ディレクトリ (この場合は /mnt/mysql-data
) を指定します。
vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf
[mysqld]
セクションと [client]
セクションを見つけて、次の変更を加えます。
Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock
Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock
変更を保存して、次のステップに進みます。
ステップ 4: SELinux セキュリティ コンテキストをデータ ディレクトリに設定する
この手順はRHEL/CentOS とその派生製品にのみ適用されます。
MariaDB を再起動する前に、SELinux セキュリティ コンテキストを /mnt/mysql-data
に追加します。
semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data
次に MySQL サービスを再起動します。
------------- On SystemD -------------
systemctl stop mariadb
systemctl is-active mariadb
------------- On SysVInit -------------
service mysqld stop
service mysqld status
OR
service mysql stop
service mysql status
次に、ステップ 1 と同じコマンドを使用して、新しいデータ ディレクトリの場所を確認します。
mysql -u root -p -e "SELECT @@datadir;"
ステップ 5: MySQL データベースを作成してデータ ディレクトリを確認する
MariaDB にログインし、新しいデータベースを作成して、/mnt/mysql-data
を確認します。
mysql -u root -p -e "CREATE DATABASE tecmint;"
おめでとう! MySQL または MariaDB のデータ ディレクトリが正常に変更されました。
まとめ
この投稿では、CentOS/RHEL 7 および Ubuntu/Debian ディストリビューションで実行されている MySQL または MariaDB サーバーのデータ ディレクトリを変更する方法について説明しました。
この記事に関してご質問やコメントはありますか?以下のフォームを使用してお気軽にお知らせください。いつでもご連絡をお待ちしております。