mysqldumpの使い方

mysqldumpとは、MySQLのバックアップを取るツール。

mysqlにログイン後の画面ではなく、
通常のコンソールから実行する。

mysqldump --single-transaction -u root -p ddd > ddd_dump.sql

-uは、ユーザーオプション。
rootユーザーでmysqldumpを実行している。

-pは、パスワードオプション。
エンターを押した後に、対話的にパスワード入力が発生する。

mysqldump --single-transaction -u root -pxxx ddd > ddd_dump.sql

rootユーザーのパスワードをxxxとする。

-p xxxのように書くと、xxxはパスワードではなくデータベース名として解釈されてしまう。
-pxxxのように書くと、xxxはパスワードとして解釈される。

crontabでmysqldumpを定期実行する場合、
対話的にパスワードを入力できないので、コマンドにパスワードを含めて書く。

mysqldump --single-transaction -u root -pxxx ddd > ddd_dump.sql

dddというデータベースのすべてのテーブルをバックアップし、
ddd_dump.sqlというファイルに書き出す。

ddd_dump.sql の中身はSQL文+コメント。
CREATE TABLEINSERTコマンドの羅列となっている。

–single-transactionは、データベースの整合性を保つためのオプション。

–single-transactionを指定しないと、テーブル1を書きだして、テーブル2を書きだして……と逐次的に処理される。
そのため、mysqldump処理の途中でデータが更新された場合に、「テーブル1はデータ更新前の情報だけど、テーブル5はデータ更新後の情報」のような不整合が起こる。

–single-transactionを指定すると、すべてのテーブルを更新できないようにロックしてmysqldump処理をしてくれる。

mysqldump --single-transaction -u root -pxxx --databases ddd > ddd_dump.sql

–database オプションを付けると、CREATE TABLEの前にCREATE DATABASEコマンドも生成される。
サーバー移転時など、リストア対象となるデータベースがまだ存在しない環境へデータを移行するときに使う。

mysqldump --single-transaction -u root -pxxx --databases ddd -d > ddd_dump.sql

-dオプションを指定すると、テーブル名やカラム名などの構造だけをバックアップし、レコードをバックアップしない。
ddd_dump.sqlCREATE TABLEは出力されるが、INSERTは出力されない)

開発環境から本番環境へデータベースを移設するときなどに使う。
動作試験に使ったデータを含まないまっさらなデータベースを本番環境に作成できる。

mysqldump -u root -pxxx ddd ttt> dump.sql

dddというデータベースの、tttというテーブルだけをバックアップする。

mysql -u root -p < dump.sql

mysqlにrootでログイン、
dump.sqlファイルに書かれたSQL文をまとめて実行する。

dump.sqlの中にCREATE DABASEUSEが含まれている場合は、
コマンド実行時にデータベース名の指定は不要。

dump.sqlの中にDROP TABLEを含む場合は注意が必要。
リストア先に同名のテーブルが存在する場合、
リストア先に元々あるデータは完全に削除され、
dump.sqlの内容で完全に上書きされる。

mysql -u root -p xxx < dump.sql

xxxというデータベースに対して、
dump.sql内のDROP TABLECREATE TABELEが実行される。

  • 最終更新: 2021/07/23 09:29