共有

概要

このドキュメントでは、MySQLデータベースからデータをエクスポートし、データをインポートする方法について説明します。このトピックについては、公式のMySQLドキュメントで詳しく学ぶことができます。

`mysqldump`によるデータのエクスポート

`mysqldump`は、MySQLデータベースからデータをエクスポートするために使用できるネイティブのMySQLコマンドラインユーティリティです。このコマンドのすべてのオプションを表示するには、実行します

mysqldump --help

あなたのMySQLインストールには、デフォルトで`mysqldump`が含まれており、macOSでは`/usr/local/mysql/bin`に含まれている場合があります。コマンドが自動的に認識されない場合は、そのディレクトリ`/usr/local/mysql/bin/mysqldump`を指定してコマンドを呼び出すか、`PATH`に追加することで、ディレクトリを指定せずに`mysqldump`を実行できます。

MySQLドキュメントより

`mysqldump`クライアントユーティリティは論理バックアップを実行し、元のデータベースオブジェクト定義とテーブルデータを再現するために実行できる一連のSQLステートメントを生成します。これは、バックアップまたは別のSQLサーバーへの転送のために、1つ以上のMySQLデータベースをダンプします。`mysqldump`コマンドは、CSV、その他の区切りテキスト、またはXML形式で出力することもできます。

基本的なコマンドは次のようになります

mysqldump DB_NAME > OUTPUT_FILE

プレースホルダーの`DB_NAME`と`OUTPUT_FILE`を、それぞれの値に置き換える必要があります。

  • あなたのデータベース名
  • 目的の出力ファイル名(最適な相互運用性のために`.sql`で終わるべきです)

例えば、ローカルMySQLサーバーから`mydb`というデータベースのデータを`mydb.sql`というファイルにエクスポートするには、以下のコマンドを使用できます。

mysqldump mydb > mydb.sql

データベース認証情報の提供

MySQLデータベースサーバーの場所を指定するために、以下の引数を追加できます。

引数デフォルト説明
`--host` (短縮形: `-h`)localhostサーバーのホストマシンのアドレス
`--port` (短縮形: `-p`)-MySQLサーバーがリッスンしているサーバーのホストマシンのポート

MySQLデータベースサーバーに対して認証を行うには、以下の引数を使用できます。

引数デフォルト説明
`--user` (短縮形: `-u`)-データベースユーザー名。
`--password` (短縮形: `-p`)-パスワードの入力を促す。

例えば、以下の接続文字列を持つMySQLデータベースからデータをエクスポートする場合、

mysql://opnmyfngbknppm:XXX@ec2-46-137-91-216.eu-west-1.compute.amazonaws.com:5432/d50rgmkqi2ipus

以下の`mysqldump`コマンドを使用できます。

mysqldump --host ec2-46-137-91-216.eu-west-1.compute.amazonaws.com --port --user opnmyfngbknppm --password d50rgmkqi2ipus > backup.sql

注意点として、このコマンドは、指定されたユーザーのパスワードを入力する必要があるプロンプトをトリガーします

出力の制御

データベース全体をダンプしたくない場合があるかもしれません。例えば、次のようにしたい場合です。

  • 実際のデータのみをダンプし、DDL(つまり、`CREATE TABLE`などのデータベーススキーマを定義するSQLステートメント)を除外する
  • DDLのみをダンプし、実際のデータを除外する
  • 特定のテーブルを除外する

これらのシナリオで使用できるコマンドラインオプションのいくつかについて、以下に概要を示します。

引数デフォルト説明
`--no-create-db` (短縮形: `-n`)falseDDLステートメントを除外し、データのみをエクスポートします。
`--no-data` (短縮形: `-d`)falseデータを除外し、DDLステートメントのみをエクスポートします。
--tablesデフォルトですべてのテーブルが含まれるダンプするテーブルの名前を明示的に指定します。
--ignore-table-ダンプから特定のテーブルを除外します。

SQLファイルからのデータのインポート

`mysqldump`を使用してMySQLデータベースをSQLファイルとしてエクスポートした後、そのSQLファイルを`mysql`に読み込ませることで、データベースの状態を復元できます。

mysql DB_NAME < INPUT_FILE

あなたのMySQLインストールには、デフォルトで`mysql`が含まれており、macOSでは`/usr/local/mysql/bin`に含まれている場合があります。コマンドが自動的に認識されない場合は、そのディレクトリ`/usr/local/mysql/bin/mysql`を指定してコマンドを呼び出すか、`PATH`に追加することで、ディレクトリを指定せずに`mysql`を実行できます。

プレースホルダーの`DB_NAME`と`INPUT_FILE`を、それぞれの値に置き換える必要があります。

  • あなたのデータベース名(その名前のデータベースは事前に作成されている必要があります!)
  • 目的の入力ファイル名(通常は`.sql`で終わります)

例:

mysql mydb < mydb.sql

認証するには、上記で説明した`--user`および`--password`オプションを使用できます。

mysql --user root --password mydb < mydb.sql

事前にデータベースを作成するには、以下のSQLステートメントを使用できます。

CREATE DATABASE mydb;

結論

MySQLからデータをエクスポートし、それを再度取り込んでデータ構造を再構築し、データベースにデータを投入することは、データ移行、バックアップとリカバリ、またはレプリケーションの準備に良い方法です。`mysqldump`と`mysql`ツールがこのタスクを達成するためにどのように連携するかを理解することは、データベースの境界を越えてデータを転送するのに役立ちます。

著者について
Justin Ellingwood

ジャスティン・エリングウッド

ジャスティンは2013年からデータベース、Linux、インフラ、開発者ツールについて執筆しています。現在は妻と2匹のウサギと共にベルリンに住んでいます。彼は通常、三人称で書く必要がないため、関係者全員にとって安心です。
© . All rights reserved.