ウェブサイト検索

Linux でデフォルトの MySQL/MariaDB データ ディレクトリを変更する方法


CentOS/RHEL 7 サーバーに LAMP スタックのコンポーネントをインストールした後、実行したいことがいくつかあります。

それらの中には、Apache および MySQL/MariaDB のセキュリティの強化に関係するものもありますが、その他は設定やニーズに応じて適用できる場合もあれば、適用できない場合もあります。

たとえば、データベース サーバーの予想される用途に基づいて、デフォルトのデータ ディレクトリ (/var/lib/mysql) を別の場所に変更することができます。これは、そのようなディレクトリが使用率が高いために増大すると予想される場合に当てはまります。

そうしないと、/var が保存されているファイルシステムがある時点で崩壊し、システム全体に障害が発生する可能性があります。デフォルト ディレクトリを変更するもう 1 つのシナリオは、実際のデータを保存するために使用する専用のネットワーク共有がある場合です。

このため、この記事では、CentOS/RHEL 7 サーバーおよび Ubuntu/Debian ディストリビューションで、デフォルトの MySQL/MariaDB データ ディレクトリを別のパスに変更する方法を説明します。

ここでは MariaDB を使用しますが、特に断りのない限り、この記事で説明する概念と手順は MySQLMariaDB の両方に適用されます。

デフォルトの 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 サーバーのデータ ディレクトリを変更する方法について説明しました。

この記事に関してご質問やコメントはありますか?以下のフォームを使用してお気軽にお知らせください。いつでもご連絡をお待ちしております。