MySQLでダンプデータをエクスポートする方法

MySQLでダンプデータをエクスポートする方法

MySQLでデータベースのダンプデータをエクスポートする方法は、mysqldumpというコマンドを使用するのが一般的です。
mysqldumpは、MySQLデータベースのテーブルやスキーマをSQL形式でエクスポートするためのコマンドです。
使い方は様々で、以下にその基本的な使い方とオプションについて説明します。

基本的なmysqldumpコマンド

次のようなコマンドで、データベース全体をエクスポートすることができます。

mysqldump -u ユーザー名 -p データベース名 > エクスポート先のファイル名.sql

このコマンドでは、-uオプションでMySQLに接続するユーザー名を指定し、-pでパスワード入力を求められます。
データベース名にはエクスポートしたいデータベース名を指定し、出力先となる.sqlファイルを右辺にリダイレクトします。

例えば、test_dbというデータベースをbackup.sqlというファイルにエクスポートする場合、次のようにコマンドを実行します。

mysqldump -u root -p test_db > backup.sql

実行すると、パスワードの入力が求められ、正しく認証されるとデータベースのダンプがファイルに出力されます。

特定のテーブルだけをエクスポートする場合

データベース全体ではなく、特定のテーブルだけをエクスポートしたい場合は、以下のようにテーブル名を指定します。

mysqldump -u ユーザー名 -p データベース名 テーブル名1 テーブル名2 > エクスポート先のファイル名.sql

例えば、usersとordersという2つのテーブルをエクスポートしたい場合は、次のようにします。

mysqldump -u root -p test_db users orders > backup.sql

データのみ、またはスキーマのみをエクスポートする

mysqldumpコマンドはデフォルトでテーブル構造とデータの両方をエクスポートしますが、必要に応じてどちらか一方だけをエクスポートすることもできます。

データのみをエクスポート

テーブル構造を含まず、データだけをエクスポートする場合は、--no-create-infoオプションを使用します。

mysqldump -u root -p --no-create-info test_db > data_only.sql
スキーマのみをエクスポート

データを含まず、テーブルの構造(スキーマ)のみをエクスポートする場合は、--no-dataオプションを使用します。

mysqldump -u root -p --no-data test_db > schema_only.sql

圧縮してエクスポートする

ダンプファイルが大きくなる場合、圧縮してエクスポートすることも可能です。
以下のようにしてgzipを使用して圧縮します。

mysqldump -u root -p test_db | gzip > backup.sql.gz

この場合、出力ファイルはgzip形式で圧縮され、backup.sql.gzとして保存されます。
復元時にはgzipで解凍する必要があります。

すべてのデータベースをエクスポートする場合

MySQLのインスタンスに存在するすべてのデータベースをエクスポートする場合は、--all-databasesオプションを使用します。

mysqldump -u root -p --all-databases > all_databases.sql

このコマンドを実行すると、MySQLサーバー内のすべてのデータベースが1つのダンプファイルにエクスポートされます。

特定のデータベース以外を除外する

一部のデータベースだけを除外したい場合は、--ignore-databaseオプションはないため、個別に指定するか、複数のコマンドを組み合わせて処理する必要があります。

エクスポート時の注意点

エクスポートを実行する際には、ユーザーが適切な権限を持っていることを確認してください。
例えば、SELECTやLOCK TABLESの権限が必要になります。
また、大規模なデータベースのエクスポート中にパフォーマンスの影響が発生する可能性があるため、負荷が少ない時間帯に実行することが推奨されます。

まとめ

  • mysqldumpを使用してデータベースのダンプをエクスポートできます。
  • 特定のテーブルやスキーマのみのエクスポートも可能です。
  • 圧縮や全データベースのエクスポートもサポートしています。

これらの手順を使うことで、MySQLのデータを安全にバックアップし、必要に応じて復元することができます。