mysql|データ|データディレクトリ
MySQL データ ディレクトリ構造 (2)
[潏子]
3 データベース ディレクトリの再配置
前に説明したデータ ディレクトリ構造はデフォルトの構成であり、すべてのデータベース ファイルと状態ファイルがその中に含まれています。データの決定 ディレクトリの内容の場所。このセクションでは、データ ディレクトリの一部 (またはディレクトリ自体) を移動する理由、移動できるもの、およびこれらの変更を行う方法について説明します。
MySQL では、データ ディレクトリまたはそのメンバーを再配置できます。これを行う理由はいくつかあります。
- デフォルトのファイル システムよりも大きな容量のファイル システムにデータ ディレクトリを配置できます。
- データ ディレクトリがビジーなハード ドライブ上にある場合は、ディスク アクティビティを平準化するために、ビジーでないディスクにデータ ディレクトリを置くことができます。データベースとログ ファイルを別のディスクに配置することも、複数のディスクに分散することもできます。
- それぞれ独自のデータ ディレクトリを持つ複数のサーバーを実行することもできます。これは、特により高い制限を許可するようにカーネルを再構成できないため、プロセスごとのファイル記述子の制限問題を回避する 1 つの方法です。
- 一部のシステムでは、サーバーの一部のファイルが /var/run などに保存されます。システム操作の一貫性を保つために、MySQL PID ファイルもそこに保存することをお勧めします。
3.1 再配置方法
データディレクトリの内容を再配置するには 2 つの方法があります:
- サーバーの起動時に、コマンドラインまたはオプションファイルの [mysqld] でオプションを指定できます。
- 再配置したいものを移動し、元の場所に新しい場所を指すシンボリックリンクを作成できます。
どちらの方法でも、再配置できるすべてを解決できるわけではありません。次の表に、再配置できるものと使用する方法をまとめます。オプション ファイルを使用する場合、グローバル オプション ファイル /etc/my.cnf (Windows では c:my.cnf) でオプションを指定できます。現在の Windows バージョンでは、システム ディレクトリ (c:Windows または c:NT) も検索されます。テーブルの再配置方法 再配置方法 適用可能な再配置方法 データ全体 ディレクトリ起動オプションまたはシンボリック リンク 単一データベース ディレクトリ シンボリック リンク 単一データベース テーブル シンボリック リンク PID ファイル起動オプション 一般ログ起動オプション 更新ログ起動オプション
デフォルトのデータ オプション ファイル my.cnf も使用できますディレクトリ内にありますが、その使用は非推奨です。データ ディレクトリ自体を再配置したい場合は、サーバーが「実際の」データ ディレクトリを見つける場所を指定するためのオプション ファイルをここに配置できるように、デフォルトのデータ ディレクトリを読み取り可能にする必要があります。ややこしい。オプション ファイルを使用してサーバー オプションを指定する場合は、/etc/my.cnf を使用するのが最適です。
3.1 再配置の効果を検証する
何かを再配置する前に、操作が期待どおりの効果があることを検証することをお勧めします。ディスク容量情報は、du、df、および ls -l コマンドを使用して取得できますが、これらはファイル システムのレイアウトを正しく理解していることに依存します。
以下は、ディレクトリの再配置をチェックする際の設計上の落とし穴を示しています。データ ディレクトリが /usr/local/var で、/var ファイル システムに多くの空き領域があることが df で示されているため、それを /var/mysql に移動したいとします。
%df /usr /varFilesystem 1k-blocks Used Avail Capacity Mounted on/dev/wd0s3e 396895 292126 73018 80% /usr/dev/wd0s3f 1189359 1111924 162287 15% /var
再配置されたデータ ディレクトリは / にあります。 usr ファイル システムにはどのくらいの空き容量がありますか?それを知るには、 du -s を使用して、ディレクトリが使用しているスペースの量を調べます。
%cd /usr/local/var%du -s .133426
これ約130MBなんですが本当ですか?データディレクトリで df を試してみてください:
%df /usr/local/varFilesystem 1k-blocks Used Avail Capacity Mounted on/dev/wd0s3f 1189359 1111924 162287 15% /var
これは奇妙です。 /usr/local/var を含むファイル システムの空きスペースを要求した場合、var 上のスペースが報告されるのはなぜですか?ここで ls -l が答えを提供します:
%ls -l /usr/local....lrwxrwxrwx 1 root wheel 10 Dec 11 23:33 var -> /var/mysql....
出力は、/usr/local/var が /var/mysql へのシンボリック リンクであることを示しています。つまり、データ ディレクトリはシンボル ポイントで /var ファイル システムに再配置されています。代わりにそこに接続します。データ ディレクトリを /var に移動することにより、/usr 上の多くのスペースが解放されました。
3.2 データ ディレクトリの再配置
データ ディレクトリを再配置するには、サーバーをシャットダウンし、データ ディレクトリを新しい場所に移動します。その後、データ ディレクトリを削除して、新しい場所を指すシンボリック リンクに置き換える必要があります。新しい場所を明示的に指定してサーバーを再起動します。次の表に、指定された場所のコマンド ラインとオプションを示します。テーブル データ ディレクトリの再配置構文 オプション ソース構文 コマンド ライン --data-dir=/path/to/dir オプション ファイル [mysqld]
datadir=/path/to/dir
3.3 データベースの再配置
データベースはシンボル方式で接続可能削除されました。データベースを再配置するには、サーバーをシャットダウンしてデータベース ディレクトリを移動し、元のデータベース ディレクトリを削除して、新しい場所を指すシンボリック リンクに置き換えてから、サーバーを再起動します。
次の例は、データベース bigdb を別の場所に移動する方法を示しています:
%mysqladmin -u root -p shutdownEnter password: ******%cd DATADIR%tar cf - bigdb | (cd /var/db; tar xf -)%mv bigdb bigdb.origln -s /var/db/bigdb .%safe_mysqld
これらのコマンドはデータ ディレクトリの所有者として実行する必要があります。セキュリティ上の理由から、元のデータベース ディレクトリの名前は bigdb.orig に変更されました。サーバーが正常に動作していることを確認したら、元のデータ ディレクトリを削除できます。
%rm -rf bigdb.orig
3.4 データベーステーブルの再配置
別のテーブルを再配置することはお勧めできません。これを行うには、テーブル ファイルを別の場所に移動し、データ ディレクトリ内のファイルへのシンボリック リンクを作成します。ただし、ALTER TABLE または OPTIMIZE TABLE ステートメントを発行した場合、変更は行われません。
各ステートメントは、変更または最適化を実装する一時テーブルをデータベース ディレクトリに作成し、元のテーブルを削除して一時テーブルの名前を元のテーブルに変更することによって完了します。その結果、シンボリック リンクが削除され、新しいテーブルが復元されます。 . データベース ディレクトリ (移動前の元のテーブル ファイルの場所) に移動します。さらに悪いことに、それらがそこにあり、スペースを占有し続けていることに気づかず、シンボリックな接続が壊れているため、後で何が起こったのかに気づいたときに、それらをどこに移動したか忘れてしまうと、良いことはありません。もうファイルを追跡する方法はありません。
テーブルアクセス権を持つ誰かがテーブルを変更または最適化しないことを保証するのは難しいため、テーブルをデータベースディレクトリに残しておくことが最善です。
3.5 ステータスファイルの再配置
PIDファイル、一般ログ、更新ログを再配置できます。エラー ログは、safe_mysqld によって起動オプションを指定して作成され、(safe_mysqld を編集しない限り) 再配置することはできません。
状態ファイルを別の場所に書き込むには、サーバーをシャットダウンし、新しい状態ファイルの場所を指定する適切なオプションを使用してサーバーを起動します。次の表に、各ファイルのコマンド ラインとオプション ファイルの構文を示します。テーブル ステータス ファイルの再配置構文 オプション ソース構文 コマンド ライン --pid-file=
pidfile--log=
lodfile
--log-update=
updatefileoptions file [mysqld]
pid-file=
pidfile log=
lodfile
log-update=
updatefileステータスファイルを絶対パス名で指定した場合はそのパスでファイルが作成され、それ以外の場合はデータディレクトリにファイルが作成されます。たとえば、--pid-file=/var/run/mysqld.pid を指定した場合、PID ファイルは /var/run/mysqld.pid になります。 -pid-file=mysqld.pid を指定した場合、PID ファイルは DATADIR/mysqld.pid になります。
拡張子なしで更新ログ ファイルを指定すると、MySQL は更新ログを開くたびに連続した名前を生成します。これらの名前には拡張子 .nnn が付いています。ここで、.nnn は、既存の更新ログ (update.000、update.001 など) で使用されていない最初の番号です。拡張子を明示的に指定することで、連続した名前をオーバーライドできます。この場合、サーバーは指定された名前のみを使用します。