SlideShare a Scribd company logo
1 of 20
Download to read offline
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

What's hot

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

What's hot (20)

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

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

1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)Masahiro Nagano
 
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡sakaik
 
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQLkeki3
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールsakaik
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画keki3
 
いまいまMySQL@OSC2016福岡
いまいまMySQL@OSC2016福岡いまいまMySQL@OSC2016福岡
いまいまMySQL@OSC2016福岡sakaik
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo!デベロッパーネットワーク
 
2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックスkeki3
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門Yoshiyuki Asaba
 
mysqlcasual6-fabric
mysqlcasual6-fabricmysqlcasual6-fabric
mysqlcasual6-fabricdoublemarket
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会Mikiya Okuno
 

Similar to MySQL のオンラインバックアップ & リカバリ (15)

1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)
 
いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡いまいまMySQL@OSC2016長岡
いまいまMySQL@OSC2016長岡
 
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストール
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
いまいまMySQL@OSC2016福岡
いまいまMySQL@OSC2016福岡いまいまMySQL@OSC2016福岡
いまいまMySQL@OSC2016福岡
 
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSSYahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
 
2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス
 
MHA, Murakumo & Me
MHA, Murakumo & MeMHA, Murakumo & Me
MHA, Murakumo & Me
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
mysqlcasual6-fabric
mysqlcasual6-fabricmysqlcasual6-fabric
mysqlcasual6-fabric
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
 

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