【でーたべーすだんぷ】

データベースダンプ とは?

最終更新:
💡 データベースの中身をファイルにドバッと書き出す!

データベースの構造とデータをファイルに書き出す操作のこと。バックアップや環境構築、データ移行などに使われ、pg_dumpやmysqldumpなどのコマンドで実行する。

📌 このページのポイント
データベースダンプとリストア 本番DB users orders ダンプ backup.sql CREATE TABLE... INSERT INTO... INSERT INTO... リストア 開発DB users orders ダンプコマンド PostgreSQL: pg_dump MySQL: mysqldump MongoDB: mongodump 主な用途 バックアップ・災害復旧 開発環境の構築 データ移行・テスト
データベースダンプのイメージ
ひよこ ひよこ
データベースダンプってバックアップと何が違うの?
ペンギン先生 ペンギン先生
ダンプは「データを書き出す操作」そのもので、バックアップはその目的の一つだよ。ダンプはバックアップ以外にも、開発環境の構築や別のサーバーへのデータ移行など色々な用途に使われるんだ
ひよこ ひよこ
具体的にはどうやるの?
ペンギン先生 ペンギン先生
PostgreSQLなら pg_dump mydb > backup.sql、MySQLなら mysqldump mydb > backup.sql というコマンドだよ。テキスト形式で出すと、テーブルを作るCREATE TABLE文やデータを入れる文がファイルに並ぶんだ
ひよこ ひよこ
復元はどうやるの?
ペンギン先生 ペンギン先生
SQL文のファイルなら、PostgreSQLは psql mydb < backup.sql、MySQLは mysql mydb < backup.sql で流し込むよ。どちらも復元先のデータベースを先に作っておく必要があるんだ。ダンプと復元(リストア)はセットで覚えて、実際に戻せるか試しておこうね
ひよこ ひよこ
開発環境の構築にも使うんだね!
ペンギン先生 ペンギン先生
そう!本番のデータベースをダンプして開発環境にリストアすれば、本物に近いデータでテストできるよ。ただし個人情報が含まれる場合は、マスキング(匿名化)するか、使ってよいか社内のルールを確認してから扱おうね
ひよこ ひよこ
大きなデータベースでもダンプで大丈夫なの?
ペンギン先生 ペンギン先生
ファイルの大きさや時間はデータの中身次第だよ。pg_dumpの -Fc(カスタム形式)は標準で圧縮され、pg_restoreで一部だけ戻すこともできるんだ。MySQLの公式マニュアルは、mysqldumpは大量データの高速なバックアップ向けではないとして、大規模なら物理バックアップやMySQL Shellのダンプ機能を検討するよう書いているよ
もっと詳しく知りたい人へ

サービスを動かしたままダンプしても大丈夫?

pg_dumpは、使用中のデータベースでも処理開始時点で一貫した内容を書き出せるよ。MySQLのInnoDBテーブルなら、mysqldumpに --single-transaction を付けると、テーブルをロックせずに一貫したスナップショットを取れる。ただし負荷はかかるので、大きなDBでは実行する時間帯に注意しよう。

カスタム形式のダンプをpsqlで戻せないのはなぜ?

pg_dumpのカスタム形式(-Fc)やディレクトリ形式(-Fd)はSQL文のテキストではなく専用のアーカイブなので、pg_restoreで復元するんだ。psqlで流し込めるのはプレーンテキスト形式(既定)のダンプだけだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データベースダンプ」って出てきたら「DBの中身をファイルに書き出す操作」と思えればだいたいOK!
📖 おまけ:英語の意味
「Database Dump」 = データベースの書き出し
💬 dump(ドサッと降ろす)という意味で、データベースの中身をファイルにどさっと出すイメージだよ

参考資料

← 用語集にもどる