MySQLのデータディレクトリを別の場所に移動するには、いくつかの手順を踏む必要があります。特に、データベースファイルの保存場所を変更する場合、誤操作がシステムの不具合を引き起こす可能性があるため、慎重に作業を進めることが求められます。以下に、MySQLのデータディレクトリを新しい場所に移動するための手順を詳しく解説します。
1. MySQLの停止
まず最初に、MySQLサービスを停止します。これは、データベースの変更を安全に行うために必須のステップです。MySQLが稼働している状態でファイルの移動や変更を行うと、データの損失が生じる可能性があります。
Linuxの場合、以下のコマンドでMySQLサービスを停止できます。
bashsudo systemctl stop mysql
または、service
コマンドを使用して停止することもできます。
bashsudo service mysql stop
2. 現在のデータディレクトリの確認
MySQLのデータディレクトリの場所は、my.cnf
という設定ファイルに記述されています。通常、この設定ファイルは/etc/mysql/my.cnf
や/etc/my.cnf
などに存在します。設定ファイル内で、datadir
という項目がデータディレクトリのパスを示しています。
以下のコマンドで、設定ファイルを確認します。
bashsudo nano /etc/mysql/my.cnf
datadir
の行を探し、現在のデータディレクトリの場所を確認してください。
inidatadir = /var/lib/mysql
3. 新しいディレクトリの作成
次に、新しいデータディレクトリを作成します。例えば、/new/mysql_data
という場所にデータを移動する場合、以下のコマンドでディレクトリを作成します。
bashsudo mkdir /new/mysql_data
ディレクトリのパーミッションを、MySQLユーザー(通常はmysql
)に設定します。
bashsudo chown mysql:mysql /new/mysql_data
4. 既存のデータの移動
現在のデータディレクトリから、新しいディレクトリにデータを移動します。/var/lib/mysql
から/new/mysql_data
にデータを移行する例を示します。
まず、現在のデータディレクトリをコピーします。
bashsudo cp -R /var/lib/mysql/* /new/mysql_data/
このコピーが完了した後、元のディレクトリのデータを削除しても問題ありませんが、念のためバックアップを取っておくことを強くお勧めします。
bashsudo rm -rf /var/lib/mysql/*
5. MySQL設定ファイルの更新
次に、my.cnf
ファイルを編集して、新しいデータディレクトリのパスを設定します。
bashsudo nano /etc/mysql/my.cnf
datadir
の値を、新しいディレクトリパスに変更します。
inidatadir = /new/mysql_data
6. SELinuxの設定(もし有効な場合)
もしシステムでSELinuxが有効になっている場合、新しいデータディレクトリに適切なセキュリティコンテキストを設定する必要があります。
bashsudo chcon -R -t mysqld_db_t /new/mysql_data
7. MySQLの起動
設定が完了したら、MySQLサービスを再起動します。
bashsudo systemctl start mysql
または、以下のコマンドを使用して起動できます。
bashsudo service mysql start
8. 動作確認
MySQLが正常に起動したら、データが新しいディレクトリに移動されていることを確認します。以下のコマンドを実行して、MySQLに接続し、データベースが正しく動作しているかチェックします。
bashmysql -u root -p
その後、以下のコマンドでデータベースが正常に動作しているか確認します。
sqlSHOW DATABASES;
データベースの一覧が表示されるはずです。もし問題があれば、エラーログを確認して原因を特定します。エラーログは通常、/var/log/mysql/error.log
にあります。
9. シンボリックリンクを使ったデータディレクトリの移動(オプション)
シンボリックリンクを使用することで、実際のデータディレクトリを別の場所に移動しつつ、元のパスを維持することができます。この方法は、既存の設定を変更せずにディレクトリを移動したい場合に便利です。
以下のコマンドで、シンボリックリンクを作成します。
bashsudo ln -s /new/mysql_data /var/lib/mysql
この方法で、元のパスに対してシンボリックリンクを作成し、実際のデータは新しい場所に格納されることになります。MySQLはシンボリックリンクを追跡するので、特に設定変更をすることなく、データディレクトリを移動できます。
まとめ
MySQLのデータディレクトリを移動するには、MySQLの停止、新しいディレクトリの作成、データの移動、設定ファイルの更新、MySQLの再起動といった手順を踏むことが必要です。また、シンボリックリンクを利用することで、設定変更を最小限に抑えることも可能です。作業後は、必ず動作確認を行い、問題がないことを確認してから運用を再開しましょう。