今回はDB移行ということでのMySQLバックアップからの復元方法をまとめておきます。
■mysqldump[バックアップ]
・全てのDBをバックアップしたい時
1 |
$ mysqldump -u user -x -p --all-databases > dump20151022.sql |
・特定のDBをバックアップしたい時
1 |
$ mysqldump -u user -ppass DB > dump20151022_DB.sql |
・複数の特定DBをバックアップしたい時
1 |
$ mysqldump -u user -ppass DB1 DB2 > dump20151022.sql |
■mysql[復元]
・全てのDBを復元したい時
1 |
$ mysql -u user -p < dump20151022.sql |
・特定のDBを復元したい時
1 |
$ mysql -u user -p DB1 < dump20151022.sql |
■オプション一覧
他にもいろんなこと出来そう・・・
オプション | 説明 |
---|---|
–opt | --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset と同じ。デフォルトでこのオプションは有効。 |
–add-drop-table | DROP TABLE文を含める |
–add-locks | 各テーブルへのINSERT文の前後にLOCK_TABLES文とUNLOCK TABLES文を含める。インポートの速度が向上する。 |
–create-options | CREATE TABLE文にMySQL特有のオプションを含める |
–disable-keys | 各テーブルについて、全てのレコードのインポートが完了するまでインデックスを作らないようにする。インポートの速度向上が期待できるが、MyISAMテーブルの(UNIQUEではない)通常のインデックスにしか効果が無い。 |
–extended_insert | INSERT文をコンパクトな書式でダンプする。ダンプファイルのサイズが小さくなる。インポートの時間も短縮する。 |
–lock-tables | ダンプの前にDBの全テーブルをロックする。ただし、ロックはDBごとに行われるのでDB間でのデータ整合性は保証されない。InnoDBでは--single-transaction を使った方が速い。 |
–skip-lock-tables | –lock-tablesオプションを無効にする。–optが–lock-tablesを有効にするので、それを打ち消す為に使用する。 |
–quick | ダンプ時にテーブルの全レコードをメモリに一旦バッファする代わりに、1行ずつ読み込んでダンプする。データ量の大きなテーブルのダンプ時にメモリを圧迫しなくて済む。 |
–set-charset | SET NAMES文を出力する。 |
–quote-names | DB名、テーブル名、カラム名などの識別子をバックティック文字で囲む。これらの識別子にMySQLの予約後が含まれていても問題なく動作するようになる |
–single-transaction | ダンプ処理をトランザクションで囲む。データの整合性を保つのに有効だが、MyISAMテーブルが含まれるDBでは意味が無いので、代わりに–lock-tablesか–lock-all-tablesを使う。 |
–flush-logs | バイナリログをフラッシュして、新しいファイルを作る。フラッシュ |
–lock-all-tables | ダンプの開始から完了まで、全データベースの全テーブルをロックする。これを使うと自動的に--single-transaction と--lock-tables オプションはオフになる。 |
–master-data[=2] | CHANGE MASTER TO 句を含める。これによってレプリケーションのスレーブサーバがマスターサーバのバイナリログの読み取り開始ポイントを知ることが出来る。このオプションは--lock-all-tables を オンにする。ただし、--single-transaction がオンの場合はそうはならず、代わりにダンプ開始時に一瞬だけグローバルリードロックされる。=2 を付けた場合はバイナリログの読み出し開始位置をコメントとして出力する。これは人間が参考のために見たいときに使う。 |
–password | MySQLサーバに接続する時のパスワード |
■まとめ
たぶん復元してると以下の様なエラーが出るはずなので。。。
1 |
ERROR 2006 (HY000): MySQL server has gone away |
次回治す方法をブログします。
参考:http://weblabo.oscasierra.net/mysql-mysqldump-01/
0件のコメント