Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

MySQLにおけるmysqldumpとは何か

mysqldumpはMySQLデータベースをプレーンテキスト形式の.sqlファイルに出力するコマンドラインユーティリティです。出力ファイルにはCREATE TABLEINSERT INTOといったSQL文が含まれており、互換性のある任意のMySQLサーバー上でデータベース構造とデータを再作成できます。

mysqldumpを利用するメリット

  • 移植性:出力される.sqlファイルはプレーンテキストのため、異なるOSやサーバー環境間で簡単に移行できます。
  • バージョン管理:テキストベースの出力のため、Gitなどのバージョン管理システムを使ってスキーマの変更履歴を追跡可能です。
  • 柔軟性:必要に応じてサーバー全体、単一データベース、特定のテーブルのみを出力することができます。

データベース出力用の基本的なmysqldumpコマンド

高度なオプションを確認する前に、まず基本構文を理解しておくと役立ちます。コマンドは単純な構造となっており、MySQLユーザー名、出力対象のデータベース名、ターミナル上での出力ファイル保存先を指定します。

mysqldumpによるデータベース出力構文

基本コマンドは下記の通りです:

mysqldump -u root -p mydb > backup.sql

各要素の解説:

  • mysqldump — ツール本体を指します。
  • -u root — MySQLのユーザー名です。自身のユーザー名が異なる場合はrootを置き換えてください。
  • -p — Enterキーを押下後にパスワード入力を促します。コマンドに直接パスワードを記載しないことで、ターミナル履歴からパスワードが漏洩するリスクを回避します。
  • mydb — 出力対象のデータベース名です。実際のデータベース名に置き換えてください。
  • > — シェルリダイレクト演算子。コマンドの実行結果を画面表示ではなくファイルに書き出します。
  • backup.sql — 出力ファイルの名前と保存パスです。任意の名称に変更可能です。

mysqldumpでMySQLデータベースを出力する手順(ステップ別)

下記手順に沿ってコマンドラインからMySQLデータベースを出力します。Windows、macOS、Linux全てのOSで利用可能ですが、ターミナルの起動方法はOSごとに異なります。

手順1:ターミナルまたはコマンドプロンプトを起動

  • Windows:Win + Rキーを押下し、cmdと入力後Enterキーを押します。
  • macOS:Cmd + スペースキーを押下し、Terminalと入力後Enterキーを押します。
  • Linux:Ctrl + Alt + Tキーを押すか、アプリケーションメニューからTerminalを検索して起動します。

windows cmd prompt

手順2:MySQLのbinディレクトリに移動

mysqldumpがコマンドとして認識されない場合、システムのPATHにMySQLが登録されていません。その場合は事前にMySQLのインストールフォルダへ移動してください。

Windowsにおける標準的なパスは下記の通りです:

cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"

step 2 navigate to the mysql bin directory

ヒント: ターミナル上でmysqldump --versionを実行し、バージョン番号が表示されればPATHに登録済みのため、本手順を省略できます。

手順3:出力コマンドを実行

下記コマンドを実行し、rootmy_databaseを自身のユーザー名、対象データベース名に置き換えてください:

mysqldump -u root -p my_database > backup.sql

step 3 run the export command

出力したい内容に応じてコマンドを変更できます:

目的 コマンド
テーブル構造のみ出力 mysqldump -u root -p my_database --no-data > backup.sql
データのみ出力 mysqldump -u root -p my_database --no-create-info > backup.sql
複数のデータベースを出力 mysqldump -u root -p --databases db1 db2 > backup.sql
サーバー内の全データベースを出力 mysqldump -u root -p --all-databases > full_backup.sql
特定のテーブルのみ出力 mysqldump -u root -p my_database table1 table2 > backup.sql

手順4:パスワードを入力

ターミナルからMySQLのパスワード入力を求められるので、入力後Enterキーを押します。

補足: 入力時に画面上に文字が表示されませんが、これはコマンドラインツールの標準的なセキュリティ機能のため正常な動作です。

手順5:出力ファイルを確認

カーソルが空行に戻ったら出力完了です。ファイルが正常に作成されたか確認する方法は下記の通り:

  1. 現在のフォルダ内に.sqlファイルが存在するか確認する。
  2. ファイルサイズが0KBより大きいか確認する。
  3. 任意のテキストエディタ(Notepad++、VS Codeなど)で開き、SQL文が記載されているか確認する(任意)。

mysqldump出力ファイルからデータベースをインポートする方法

mysqldumpでデータベースを出力した後、復元作業が必要になる場面があります。注意点として、mysqldumpは出力ファイル作成用ツールのため、インポート時にはmysqldumpではなくmysqlクライアントを使用します。

インポート構文

.sqlファイルをデータベースにインポートする際は下記コマンドを実行します:

mysql -u root -p my_database < backup.sql

rootmy_databasebackup.sqlを自身のユーザー名、復元先データベース名、ファイルパスに置き換えてください。

出力コマンドとの大きな違いは演算子の向きです。<記号は.sqlファイルの内容をmysqlクライアントに読み込むのに対し、>は実行結果をファイルへ書き出します。

  1. 事前に復元先データベースを作成する

--all-databasesオプションを使用して出力した場合を除き、.sqlファイルにはCREATE DATABASE文が含まれないため、インポート前に手動でデータベースを作成する必要があります:

CREATE DATABASE my_new_database;

  1. 文字コードを統一する

出力時に特定の文字コード(UTF-8など)を使用した場合、復元先データベースも同じ文字コードに設定してください。文字コードが不一致すると文字化けが発生します。

  1. インポート失敗時はエラー原因を確認する

一般的な失敗要因:ユーザーの権限不足(アクセス拒否)、ファイルサイズがサーバーのmax_allowed_packet上限を超過。後者の場合はMySQL設定ファイルにて値を増加させてください。

i2BackupによるMySQLデータベース出力の簡略化と安全性強化

mysqldumpは単発出力や手動バックアップには信頼できるツールです。しかし定期的な自動実行や一元管理によるデータ保護が必要なチームにとって、毎回コマンドを手動実行するのは運用規模に適しません。そこで専用のバックアップソリューションであるi2Backupが役立ちます。

MySQL保護におけるi2Backupの主な機能

  • 定期・リアルタイムバックアップ:mysqldumpを手動実行する必要がなく、1時間・毎日・毎週などの自動バックアップスケジュールを設定可能です。またREDOログ、アーカイブログを常時取得することでRPOを限りなく0に近づけます。
  • 複数のバックアップ保存先:ローカルストレージ、NAS、クラウドに同時にバックアップを保存し、単一点障害を回避します。
  • 暗号化転送全データをAESまたはSM4暗号化により転送し、送信中のデータベース出力ファイルを保護します。
  • 一元管理機能Webコンソールからバックアップ状況の監視、タスクスケジュール設定、複数のデータベースインスタンスの管理が一箇所で完了。コマンドライン操作は不要です。
  • 幅広いデータベース対応MySQL以外にOracle、SQL Server、IBM DB2、MongoDBなどに対応し、複数種類のDBが混在する環境向け統合ソリューションとなります。

単一のMySQLインスタンスの保護から複数サーバーのバックアップ管理まで、i2Backupはmysqldump手動実行による運用負担をなくし、一貫した自動データ保護を実現します。

60日間無料トライアル

よくある質問

Q1:MySQLサーバー内のデータベース全体を出力するには?

下記コマンドを実行し、rootmy_databaseを自身のユーザー名、データベース名に置き換えてください:

mysqldump -u root -p my_database > backup.sql

サーバー上の全データベースを一括出力する場合は、代わりに--all-databasesオプションを使用します:

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

 

Q2:mysqldumpを使ってデータベースをバックアップする手順は?

ターミナルを起動し、必要に応じMySQLのbinディレクトリへ移動後、ユーザー名、データベース名、出力先を指定した>演算子付きのmysqldumpコマンドを実行します。実行するMySQLユーザーには対象データベースに対するSELECT権限とLOCK TABLES権限が付与されている必要があります。

 

Q3:MySQLデータベースから特定のテーブルのみ出力するには?

コマンド内のデータベース名の後にテーブル名を追加します:

mysqldump -u root -p my_database my_table > table_backup.sql

複数のテーブルを出力する場合は半角スペースでテーブル名を並べて記載します。

 

Q4:データを含まずテーブル構造のみ出力するには?

--no-dataオプションを使用すると、レコードデータを除いたテーブル定義のみ出力できます:

mysqldump -u root -p my_database --no-data > structure_only.sql

同一スキーマの新規環境を構築する際に便利です。

 

Q5:Windows環境でmysqldumpは利用可能?

はい。コマンドプロンプトを開き、LinuxやmacOSと同じmysqldumpコマンドを実行できます。コマンドが認識されない場合は事前にMySQLのbinディレクトリへ移動(例:cd "C:\Program Files\MySQL\MySQL Server 8.0\bin")するか、システムPATHにMySQLを登録してください…

まとめ

mysqldumpはコマンドラインからMySQLデータベースを出力するシンプルで柔軟性の高いツールです。単一テーブルのバックアップ、サーバー全体の移行、スキーマのみ出力など、本ガイドで紹介したコマンドとオプションにより大半の一般的なケースに対応できます。

ただし、バックアップファイルは正常に復元できて初めて意味を持ちます。出力完了後は必ず.sqlファイルの検証を実施してください。一貫性と自動運用が重視される本番環境では、mysqldumpとi2Backupといった専用ソリューションを組み合わせることで、手作業による負担と人為的ミスのリスクを低減できます。

概要は準備中です

関連記事

SQL Server Management Studioでデータベースをバックアップする方法
このガイドでは、SQL Server Management Studio(SSMS)におけるデータベースのバックアップ手順を詳しく解説しています。GUIによる手動操作、カスタムT‑SQLスクリプト、自動化ソリューション、さらにi2Backupによるエンタープライズ向けの高度な運用方法を扱っています。
記事を読む
SQL Serverデータベースが復元状態でスタックした場合の6つの効果的な解決策
SQLデータベースが復元モードのままになるトラブルが発生すると、データベースの復元作業が中断し、通常業務に影響を及ぼします。本記事では代表的な発生原因を解説し、当該問題を効率的に診断・解決する6つの実用的な手法を紹介します。
記事を読む
SQLテーブルデータをExcelにエクスポートする方法:ステップバイステップガイド
SQLテーブルデータを迅速かつ正確にExcelへエクスポートする必要がありますか。本ガイドではSSMSからPythonまで、4つの実用的な方法を解説しており、業務フローに最適な手法を選択できます。
記事を読む
# 【3つの実用的な手法】SQL Serverにおけるデータベースダンプの実施方法
SQL Serverにおけるデータベースダンプは、バックアップ、環境移行、災害復旧に活用されます。本ガイドではダンプの定義と、複数の汎用手法によるSQL Serverデータベースの出力・復元手順を解説します。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}