🕌

MySQL ダンプ(mysqldump)/リストアコマンドまとめ

2021/06/26に公開

ダンプ(mysqldump)

以下、dump.sqlというファイルに書き出すものとする。

特定のデータベースのダンプ

mysqldump -u <db_user> <db_name> -p > dump.sql

特定のデータベース、特定のテーブルだけダンプ

mysqldump -p -u <db_user> <db_name> <table_name1> <table_name2> ... > dump.sql;

DB名の後ろにテーブル名を続ける。

INSERT文だけダンプ

mysqldump -p -u <db_user> -t <db_name> > dump.sql;

# テーブルの指定も可能
mysqldump -p -u <db_user> -t <db_name> <table_name1> <table_name2> ... > dump.sql;

-tオプションで構造を省略してデータだけを出力できる。
(CREATE文などは出力せずに、INSERT文だけを取れる。)

WHERE句で絞り込んだ結果をダンプ

mysqldump -p -u ユーザー名 DB名 --where 'WHERE句' > dump.sql;
# 例: mysqldump -p -u <db_user> <db_name> --where 'open = 1' > dump.sql;

全データベースのダンプ

mysqldump -u <db_user> -x --all-databases > dump.sql

リストア

mysql -u <user_name> <db_name> -p < dump.sql;

リストア専用のコマンドは存在しない。
ファイル(SQL文)を標準入力として読み込む。
ダンプファイルを読み込むことで、リストアを実現する。

参考:
標準入出力・リダイレクション・パイプ - いづいづブログ

Discussion