SlideShare a Scribd company logo
MySQL のオンラインバックアップ
& リカバリ
2014/05/24
teru
@TKS #3
アジェンダ
• バックアップ
• mysqldump コマンド
• 推奨オプション
• 便利なオプション
!
• リカバリ
• ダンプのリストア方法
• mysqlbinlog コマンド
• バイナリログの適用 (ポイントインタイムリカバリ)
2
バックアップ編
3
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 ( ...
対象テーブルの指定
• mysqldump somedb
• somedb 内のテーブルすべてダンプ
!
• mysqldump somedb sometable1 sometable2
• somedb.sometable1, somedb.sometable2 のみバッ
クアップ
!
• mysqldump --ignore-table=somedb.gomitable1 somedb
• somedb.gomitable1 は無視する
• オプションを繰り返すことで複数指定可
5
デフォルト有効のオプション
• mysqldump は、デフォルトで "--opt" が有効になっている。
• "--skip-opt" で無効にできる。
!
• "--opt" は下記と同義
• --add-drop-table
• --add-locks
• --create-options
• --disable-keys
• --extended-insert
• --lock-tables
• --quick
6
デフォルト有効のオプション
• --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');
デフォルト有効のオプション
• --lock-tables
• テーブルのダンプ前、ロックを掛ける
• ダンプ中はそのテーブルの更新ができない
!
• --skip-lock-tables
• ロックしない
• サーバ移行時の事前テストなど、カジュアルにダンプ
ができる
8
推奨オプション
• --single-transaction
• ダンプが単一トランザクションになる
• ダンプ開始時点の断面がダンプできる
• かつ、ダンプ中更新可能
• ※ トランザクション対応 DB でのみ可能 (InnoDB など)
!
• --master-data=2
• ダンプファイル内に、バイナリログのポジションがコメントで入る
• ポイントインタイムリカバリに使える
9
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1457;
推奨オプション
• --order-by-primary
• ダンプを主キーでソートして出力する
• InnoDB のリストアが爆速になる
!
!
!
!
!
!
• 444MBのダンプファイルのリスト時
• 引用: http://d.hatena.ne.jp/sh2/20120122
10
innodb_buffer_pool_size
おまけ: クラスタインデックス
11
僕がいつも使うオプション
!
• mysqldump --default-character-set=binary --opt -c
somedb
• MyISAM の場合
!
• mysqldump --default-character-set=binary --opt -c
--single-transaction --master-data=2 --order-by-
primary somedb
• InnoDB の場合
• binlog 出しとく
12
その他知っとくと便利なオプション
• --where="deleted_at >= '2013-10-01 00:00:00'"
• ダンプ時に where 句指定で吐ける
• 「"」「'」 に注意
!
• --no-data
• テーブルの定義のみダンプ
• CREATE TABLE, CREATE INDEX などのみ
!
• --no-create-info
• データのみダンプ
• INSERT のみ
13
リストア編
14
ダンプファイルのリストア方法
!
• cat somedb.sql | mysql somedb
• 普通の方法
!
• cat somedb.sql | throttle -M 1 | mysql somedb
• throttle コマンドで 1MB/s に制限
• 負荷を掛けたくない時に有用
15
mysqlbinlog コマンド
!
• バイナリログから SQL 構文を作るコマンド
!
• 出力されたファイルは、ダンプファイルと同じようにリ
ストアに使用できる。
!
• 文法
• mysqlbinlog [OPTIONS] mysql-bin.000001 ...
16
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
(再掲) 推奨オプション
• --single-transaction
• ダンプが単一トランザクションになる
• ダンプ開始時点の断面がダンプできる
• かつ、ダンプ中更新可能
• ※ トランザクション対応 DB でのみ可能 (InnoDB など)
!
• --master-data=2
• ダンプファイル内に、バイナリログのポジションがコメントで入る
• ポイントインタイムリカバリに使える
!
!
!
18
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1457;
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;
以上
20

More Related Content

PDF
MySQLバックアップの基本
PDF
MySQL 初めてのチューニング
PPTX
MySQLの運用でありがちなこと
PDF
S10 日本東西リージョンでのディザスタ リカバリ環境の実現
PDF
tcpdump & xtrabackup @ MySQL Casual Talks #1
PDF
MySQL Cluster 新機能解説 7.5 and beyond
PDF
MySQL カジュアル 福岡 03
KEY
カジュアルにバックアップ - MySQL Casual Talks 福岡
MySQLバックアップの基本
MySQL 初めてのチューニング
MySQLの運用でありがちなこと
S10 日本東西リージョンでのディザスタ リカバリ環境の実現
tcpdump & xtrabackup @ MySQL Casual Talks #1
MySQL Cluster 新機能解説 7.5 and beyond
MySQL カジュアル 福岡 03
カジュアルにバックアップ - MySQL Casual Talks 福岡

What's hot (20)

PDF
WindowsでMySQL入門
PDF
Infinispan - Open Source Data Grid
PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
PDF
バックアップとリストアの基礎
PDF
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
PDF
S14 azure site recovery を利用したオンプレミスから azure のサイト回復
PPT
Linux/DB Tuning (DevSumi2010, Japanese)
PPTX
LINEのMySQL運用について 修正版
PPTX
Persistence on Azure - Microsoft Azure の永続化
PPT
Handlersocket 20140218
PDF
MySQLチューニング
PDF
20120913 nosql@hikarie(okuyama fuse)
PDF
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
PDF
MHA for MySQLとDeNAのオープンソースの話
PPTX
MySQL clients
PDF
MySQLを割と一人で300台管理する技術
PDF
お金が無いときのMySQL Cluster頼み
PDF
S01 企業で活用が進む Microsoft Azureの仮想マシン (Windows)
PDF
Chugoku db 17th-postgresql-9.6
PPTX
MySQL Clusterを運用して10ヶ月間
WindowsでMySQL入門
Infinispan - Open Source Data Grid
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
バックアップとリストアの基礎
Dbtechshowcasesapporo mysql-turing-for-cloud-0.9.3
S14 azure site recovery を利用したオンプレミスから azure のサイト回復
Linux/DB Tuning (DevSumi2010, Japanese)
LINEのMySQL運用について 修正版
Persistence on Azure - Microsoft Azure の永続化
Handlersocket 20140218
MySQLチューニング
20120913 nosql@hikarie(okuyama fuse)
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MHA for MySQLとDeNAのオープンソースの話
MySQL clients
MySQLを割と一人で300台管理する技術
お金が無いときのMySQL Cluster頼み
S01 企業で活用が進む Microsoft Azureの仮想マシン (Windows)
Chugoku db 17th-postgresql-9.6
MySQL Clusterを運用して10ヶ月間
Ad

MySQL のオンラインバックアップ & リカバリ