Mais conteúdo relacionado
Semelhante a MySQL のオンラインバックアップ & リカバリ (15)
MySQL のオンラインバックアップ & リカバリ
- 4. mysqldump
• MySQL に付属している論理バックアップツール
!
• SQL 文が羅列されたものが出力される
4
DROP TABLE IF EXISTS `sometable`;
CREATE TABLE `sometable` ( ...
INSERT INTO `sometable` VALUES ( ...
INSERT INTO `sometable` VALUES ( ...
INSERT INTO `sometable` VALUES ( ...
INSERT INTO `sometable` VALUES ( ...
- 5. 対象テーブルの指定
• mysqldump somedb
• somedb 内のテーブルすべてダンプ
!
• mysqldump somedb sometable1 sometable2
• somedb.sometable1, somedb.sometable2 のみバッ
クアップ
!
• mysqldump --ignore-table=somedb.gomitable1 somedb
• somedb.gomitable1 は無視する
• オプションを繰り返すことで複数指定可
5
- 6. デフォルト有効のオプション
• mysqldump は、デフォルトで "--opt" が有効になっている。
• "--skip-opt" で無効にできる。
!
• "--opt" は下記と同義
• --add-drop-table
• --add-locks
• --create-options
• --disable-keys
• --extended-insert
• --lock-tables
• --quick
6
- 7. デフォルト有効のオプション
• --extended-insert
• INSERT 一文に、複数のレコードが入る
• メリット: リストア速度が早い
!
!
!
!
• --skip-extended-insert
• 1 レコード 1 INSERT になる。
• メリット: ダンプファイルをいじりやすい
7
INSERT INTO `sometable` VALUES (1,1980,'piyopiyo','','2014-05-24
13:44:51'),(2,1981,'hogehoge','','2014-05-24 13:45:05'),
(3,1982,'hugahuga','','2014-05-24 14:44:27');
- 9. 推奨オプション
• --single-transaction
• ダンプが単一トランザクションになる
• ダンプ開始時点の断面がダンプできる
• かつ、ダンプ中更新可能
• ※ トランザクション対応 DB でのみ可能 (InnoDB など)
!
• --master-data=2
• ダンプファイル内に、バイナリログのポジションがコメントで入る
• ポイントインタイムリカバリに使える
9
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1457;
- 13. その他知っとくと便利なオプション
• --where="deleted_at >= '2013-10-01 00:00:00'"
• ダンプ時に where 句指定で吐ける
• 「"」「'」 に注意
!
• --no-data
• テーブルの定義のみダンプ
• CREATE TABLE, CREATE INDEX などのみ
!
• --no-create-info
• データのみダンプ
• INSERT のみ
13
- 17. mysqlbinlog オプション
• --start-position=4
• --stop-position=123456
• バイナリログの読み込み開始・終了のポイントを、ポ
ジションで指定
!
• --start-datetime="2013-01-01 12:34:56"
• --stop-datetime="2013-01-01 12:34:56"
• バイナリログの読み込み開始・終了のポイントを、時
刻で指定
!
• --database=somedb
• バイナリログの中で、対象のデータベースを指定
17
- 18. (再掲) 推奨オプション
• --single-transaction
• ダンプが単一トランザクションになる
• ダンプ開始時点の断面がダンプできる
• かつ、ダンプ中更新可能
• ※ トランザクション対応 DB でのみ可能 (InnoDB など)
!
• --master-data=2
• ダンプファイル内に、バイナリログのポジションがコメントで入る
• ポイントインタイムリカバリに使える
!
!
!
18
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1457;
- 19. mysqlbinlog 使用例
!
!
!
!
!
• 状況の例
• --master-data=2 で取得したバックアップがある
!
• 15:00:00 にバルス (DROP TABLES) してしまった
!
• バックアップと tmp.sql でバルス直前の状態まで戻せ
る
19
$ mysqlbinlog
--start-position=1457
--stop-datetime="2014-05-24 14:59:00"
mysql-bin.000001 > tmp.sql
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1457;