開発運用

MySQL データディレクトリ 移動

MySQLのデータディレクトリを別の場所に移動するには、いくつかの手順を踏む必要があります。特に、データベースファイルの保存場所を変更する場合、誤操作がシステムの不具合を引き起こす可能性があるため、慎重に作業を進めることが求められます。以下に、MySQLのデータディレクトリを新しい場所に移動するための手順を詳しく解説します。

1. MySQLの停止

まず最初に、MySQLサービスを停止します。これは、データベースの変更を安全に行うために必須のステップです。MySQLが稼働している状態でファイルの移動や変更を行うと、データの損失が生じる可能性があります。

Linuxの場合、以下のコマンドでMySQLサービスを停止できます。

bash
sudo systemctl stop mysql

または、serviceコマンドを使用して停止することもできます。

bash
sudo service mysql stop

2. 現在のデータディレクトリの確認

MySQLのデータディレクトリの場所は、my.cnfという設定ファイルに記述されています。通常、この設定ファイルは/etc/mysql/my.cnf/etc/my.cnfなどに存在します。設定ファイル内で、datadirという項目がデータディレクトリのパスを示しています。

以下のコマンドで、設定ファイルを確認します。

bash
sudo nano /etc/mysql/my.cnf

datadirの行を探し、現在のデータディレクトリの場所を確認してください。

ini
datadir = /var/lib/mysql

3. 新しいディレクトリの作成

次に、新しいデータディレクトリを作成します。例えば、/new/mysql_dataという場所にデータを移動する場合、以下のコマンドでディレクトリを作成します。

bash
sudo mkdir /new/mysql_data

ディレクトリのパーミッションを、MySQLユーザー(通常はmysql)に設定します。

bash
sudo chown mysql:mysql /new/mysql_data

4. 既存のデータの移動

現在のデータディレクトリから、新しいディレクトリにデータを移動します。/var/lib/mysqlから/new/mysql_dataにデータを移行する例を示します。

まず、現在のデータディレクトリをコピーします。

bash
sudo cp -R /var/lib/mysql/* /new/mysql_data/

このコピーが完了した後、元のディレクトリのデータを削除しても問題ありませんが、念のためバックアップを取っておくことを強くお勧めします。

bash
sudo rm -rf /var/lib/mysql/*

5. MySQL設定ファイルの更新

次に、my.cnfファイルを編集して、新しいデータディレクトリのパスを設定します。

bash
sudo nano /etc/mysql/my.cnf

datadirの値を、新しいディレクトリパスに変更します。

ini
datadir = /new/mysql_data

6. SELinuxの設定(もし有効な場合)

もしシステムでSELinuxが有効になっている場合、新しいデータディレクトリに適切なセキュリティコンテキストを設定する必要があります。

bash
sudo chcon -R -t mysqld_db_t /new/mysql_data

7. MySQLの起動

設定が完了したら、MySQLサービスを再起動します。

bash
sudo systemctl start mysql

または、以下のコマンドを使用して起動できます。

bash
sudo service mysql start

8. 動作確認

MySQLが正常に起動したら、データが新しいディレクトリに移動されていることを確認します。以下のコマンドを実行して、MySQLに接続し、データベースが正しく動作しているかチェックします。

bash
mysql -u root -p

その後、以下のコマンドでデータベースが正常に動作しているか確認します。

sql
SHOW DATABASES;

データベースの一覧が表示されるはずです。もし問題があれば、エラーログを確認して原因を特定します。エラーログは通常、/var/log/mysql/error.logにあります。

9. シンボリックリンクを使ったデータディレクトリの移動(オプション)

シンボリックリンクを使用することで、実際のデータディレクトリを別の場所に移動しつつ、元のパスを維持することができます。この方法は、既存の設定を変更せずにディレクトリを移動したい場合に便利です。

以下のコマンドで、シンボリックリンクを作成します。

bash
sudo ln -s /new/mysql_data /var/lib/mysql

この方法で、元のパスに対してシンボリックリンクを作成し、実際のデータは新しい場所に格納されることになります。MySQLはシンボリックリンクを追跡するので、特に設定変更をすることなく、データディレクトリを移動できます。

まとめ

MySQLのデータディレクトリを移動するには、MySQLの停止、新しいディレクトリの作成、データの移動、設定ファイルの更新、MySQLの再起動といった手順を踏むことが必要です。また、シンボリックリンクを利用することで、設定変更を最小限に抑えることも可能です。作業後は、必ず動作確認を行い、問題がないことを確認してから運用を再開しましょう。

Back to top button