SlideShare a Scribd company logo
How to backup your 
Mroonga database? 
2014/09/03 
yoku0825 
Groonga "How-To" Talks
I'm yoku0825 
● とある企業のDBA 
● オラクれない 
● ポスグれない 
● マイエスキューエる 
● 家に帰ると 
● 嫁の夫 
● せがれの父 
● この自己紹介を何日か前にご覧いただいた、と 
いう方がいてびっくり。
むるーん(^^)
\ガッ/ 
※ここまで挨拶です
バックアップ取ってますか?
バックアップの話の前に、 
MySQLとMroongaの 
ロックについて話します
MySQL的3層モデル 
Parser, Optimizer, Executor 
Storage Engine 
File Format
MySQL的3層モデル 
Parser, Optimizer, Executor 
MyISAM InnoDB 
.MYD 
.MYI 
ibdata1 
ib_logfile 
.ibd 
HEAP 
Memory 
Mroonga 
.mrn
MySQL的3層モデル 
Parser, Optimizer, Executor 
MyISAM InnoDB 
.MYD 
.MYI 
ibdata1 
ib_logfile 
.ibd 
HEAP 
Memory 
Mroonga 
.mrn 
Meta Data Lock, Query Cache Lock
MySQL的3層モデル 
Parser, Optimizer, Executor 
MyISAM InnoDB 
.MYD 
.MYI 
ibdata1 
ib_logfile 
.ibd 
HEAP 
Memory 
Mroonga 
.mrn 
Table Lock, Next-key Lock
MySQL的3層モデル 
Parser, Optimizer, Executor 
MyISAM InnoDB 
.MYD 
.MYI 
ibdata1 
ib_logfile 
.ibd 
HEAP 
Memory 
Mroonga 
.mrn 
ファイルそのものはロック機構を持たない 
(ファイルシステムによるロックは除く)
How about Mroonga?
MySQL的3層モデル 
ストレージエンジンレイヤーではロックを持たず 
.mrnファイル(libgroonga.so)側にロック機構がある 
Parser, Optimizer, Executor 
MyISAM InnoDB 
.MYD 
.MYI 
ibdata1 
ib_logfile 
.ibd 
HEAP 
Memory 
Mroonga 
.mrn
MySQLはMroongaのロックを 
ロックとして認識していない 
lock_wait_timeout変数じゃなくて 
mroonga_lock_timeout変数が 
必要なのはこのため
ましてや参照ロックフリー 
(=読み取りにロックを取らない) 
トランザクション非対応
それってつまり読み取り中に 
書き込みがあった場合 
結果を何も保証しない
バックアップにおいて 
なんて致命的な問題
選択肢 
● 整合性だいじ 
● MySQL止めて(またはFLUSH TABLES WITH READ 
LOCKしながら)ファイルバックアップ 
● mysqldump (ストレージモードならlock-all-tables, 
ラッパーモードでInnoDBならsingle-transaction) 
● ただしこれらもgroongaサーバーやgroongaコマン 
ドからの更新にはノーガード。。 
● 気にしなくてOK(または更新が来ないことが保 
証されている場合) 
● groonga /data/mysql/tweets.mrn dump 
● grndump /data/mysql/tweets.mrn
後日註 
● ファイルバックアップ以外はmysqld起動した 
まま、INSERTクエリーとSELECTクエリーを投 
げ続けた状態で計っています 
● 環境はCentOS 6.5 on ConoHaのいちばん安い 
やつです 
● https://www.conoha.jp/pricing 
● 正直コアが足りずにサチってます
ファイルバックアップ 
# du -sh mysql/ 
2.3G mysql/ 
# time tar czf mysql.tar.gz mysql/* 
real 1m51.565s 
user 1m35.005s 
sys 0m3.134s 
# ll -h mysql.tar.gz 
-rw-r--r-- 1 root root 360M Sep 2 18:04 mysql.tar.gz 
# time tar xzf mysql.tar.gz 
real 0m24.025s 
user 0m14.640s 
sys 0m3.670s
ファイルバックアップ(20G) 
# du -sh mysql/ 
23G mysql/ 
# time tar czf mysql.tar.gz mysql/* 
real 25m47.765s 
user 24m9.010s 
sys 0m29.462s 
# ll -h mysql.tar.gz 
-rw-r--r-- 1 root root 5.7G Sep 3 16:33 mysql.tar.gz 
# time tar xzf mysql.tar.gz 
real 4m33.880s 
user 2m41.009s 
sys 0m32.507s
ファイルバックアップ 
● メリット 
● 特にスレーブ止めて取ったバックアップは解凍する 
だけですぐSTART SLVAEできる 
● リストアは最速 
● デメリット 
● マスターにリストアする場合はリレーログとか消さ 
ないといけない 
● オフライン(少なくとも更新は止める必要がある) 
● 余談 
● ラッパーモードならXtraBackupで取ったのをリス 
トアしてからALTER TABLE .. ENABLE KEYSでいけ 
るかと思ったけど無理だった。
mysqldump 
# time mysqldump --lock-all-tables tweets | gzip -c > mysqldump.sql.gz 
real 1m10.968s 
user 1m1.596s 
sys 0m0.892s 
# ll -h mysqldump.sql.gz 
-rw-r--r-- 1 root root 235M Sep 2 18:28 mysqldump.sql.gz 
# time zcat mysqldump.sql.gz | mysql tweets 
real 2m40.087s 
user 0m11.373s 
sys 0m0.647s
mysqldump(20G) 
# time mysqldump --lock-all-tables tweets | gzip -c > mysqldump.sql.gz 
real 6m26.385s 
user 5m51.441s 
sys 0m4.802s 
# ll -h mysqldump.sql.gz 
-rw-r--r-- 1 root root 1.4G Sep 3 15:24 mysqldump.sql.gz 
# time zcat mysqldump.sql.gz | mysql tweets 
real 15m6.047s 
user 1m4.754s 
sys 0m3.739s
mysqldump 
● メリット 
● バックアップもリストアもわかりやすい 
● 圧縮すれば結構容量が稼げる 
● デメリット 
● (ストレージモードの場合)更新は止まる 
– ラッパーモードはバックアップの視点ではかなり優秀。 
● 折角のMroongaの機能をかなり制限してしまうのであまりやり 
たくない。。 
● あとはトランザクションの扱いでこんな不整合があるのがイヤ 
– http://yoku0825.blogspot.jp/2014/04/mroongainnodb.html 
● バックアップもリストアも遅め
groonga dump 
# time groonga /data/mysql/tweets.mrn dump | gzip -c > groonga.dump.gz 
real 1m35.061s 
user 1m12.553s 
sys 0m3.239s 
# ll -h groonga.dump.gz 
-rw-r--r-- 1 root root 244M Sep 2 18:46 groonga.dump.gz 
# time zcat groonga.dump.gz | groonga /data/mysql/tweets.mrn 
real 0m45.772s 
user 0m36.010s 
sys 0m1.897s
grndump 
# time grndump /data/mysql/tweets.mrn | gzip -c > grndump.dump.gz 
real 3m41.721s 
user 3m23.788s 
sys 0m2.912s 
# ll -h grndump.dump.gz 
-rw-r--r-- 1 root root 243M Sep 2 18:55 grndump.dump.gz 
# time zcat grndump.dump.gz | groonga /data/mysql/tweets.mrn 
real 0m45.361s 
user 0m35.381s 
sys 0m1.789s
grndump(20G) 
# time grndump /data/mysql/tweets.mrn | gzip -c > grndump.dump.gz 
real 21m7.326s 
user 19m34.971s 
sys 0m15.467s 
# ll -h grndump.dump.gz 
-rw-r--r-- 1 root root 1.4G Sep 3 15:03 grndump.dump.gz 
# time zcat grndump.dump.gz | groonga /data/mysql/tweets.mrn 
real 4m25.299s 
user 3m25.894s 
sys 0m9.969s
groonga dump/grndump 
● メリット 
● 圧縮すれば結構容量が稼げる 
● リストアが想像以上に速い 
● デメリット 
● 整合性に対してノーガード 
● バックアップは(特にgrndumpは)時間がかかる 
– groonga dumpとgrndumpの使い分けはこちらが詳しい 
http://qiita.com/orangain/items/6abb3e3b4e0353419fd 
e 
– 追記: I/OじゃなくてCPUバウンドしてる状態なので、 
ちゃんとした環境でやればもっと速くなるはず 
– grndumpに--lock-all-tablesオプションつけてみた 
https://gist.github.com/yoku0825/305f18ff3ec52eee5a 
50
バックアップの 
用法・用量(?)を知って 
楽しいMroongaライフを!

More Related Content

PDF
MySQLをプロファイる(仮)
PDF
わたしを支える技術
PPTX
MySQL clients
PDF
MySQLチューニング
PDF
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
PDF
MySQLerの7つ道具
PDF
Handlerさんコンニチワ
PDF
Dockerイメージで誰でも気軽にMroonga体験
MySQLをプロファイる(仮)
わたしを支える技術
MySQL clients
MySQLチューニング
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
MySQLerの7つ道具
Handlerさんコンニチワ
Dockerイメージで誰でも気軽にMroonga体験

What's hot (20)

PDF
MySQL 5.7の次のMySQLは
PDF
ぐだぐだInnoDB
PDF
MHAの次を目指す mikasafabric for MySQL
PDF
今から備えるMySQL最新バージョン5.7
PDF
MySQLステータスモニタリング
PDF
Devsの常識、DBAは非常識
PDF
ペパボ de MySQL
PDF
MySQL 初めてのチューニング
PDF
Maatkitの紹介
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
PDF
MySQLを割と一人で300台管理する技術
PDF
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
PDF
tcpdump & xtrabackup @ MySQL Casual Talks #1
PDF
MySQLの全文検索に関するあれやこれや
KEY
My sql casual_in_fukuoka_vol1
PDF
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
KEY
Mysql casial01
PDF
MySQL 5.7が魅せる新しい運用の形
PDF
MySQLやSSDとかの話 前編
PDF
MySQL Casual Talks in Fukuoka vol.2
MySQL 5.7の次のMySQLは
ぐだぐだInnoDB
MHAの次を目指す mikasafabric for MySQL
今から備えるMySQL最新バージョン5.7
MySQLステータスモニタリング
Devsの常識、DBAは非常識
ペパボ de MySQL
MySQL 初めてのチューニング
Maatkitの紹介
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQLを割と一人で300台管理する技術
イルカさんチームからゾウさんチームに教えたいMySQLレプリケーション
tcpdump & xtrabackup @ MySQL Casual Talks #1
MySQLの全文検索に関するあれやこれや
My sql casual_in_fukuoka_vol1
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう
Mysql casial01
MySQL 5.7が魅せる新しい運用の形
MySQLやSSDとかの話 前編
MySQL Casual Talks in Fukuoka vol.2
Ad

Viewers also liked (6)

PDF
さんをつけろよデコ助野郎
PDF
とあるイルカのバーボンハウス
PDF
出会い駆動コミュニティー
PDF
初めて使うJasperReports Server 6.1.0J
PDF
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
ODP
ビジネスインテリジェンス入門~OSSでBIを始めよう~
さんをつけろよデコ助野郎
とあるイルカのバーボンハウス
出会い駆動コミュニティー
初めて使うJasperReports Server 6.1.0J
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
ビジネスインテリジェンス入門~OSSでBIを始めよう~
Ad

Similar to How to backup your mroonga database? (20)

PDF
MySQLバックアップの基本
PDF
[db tech showcase Tokyo 2015] C27:楽天MySQL Backup Structure by 楽天株式会社 粟田啓介
PPTX
Rakuten New MySQL Backup System With Xtrabackup
KEY
カジュアルにバックアップ - MySQL Casual Talks 福岡
PDF
MySQL ガチBeginnerがやってみたことと反省したこと
PPTX
MySQLやSSDとかの話・後編
PDF
Maria db
PDF
さいきんのMySQLに関する取り組み(仮)
PDF
MySQL 5.5 Update #denatech
PDF
LINEのMySQL運用について
PDF
MySQLとPostgreSQLの基本的なバックアップ比較
PDF
MySQL のオンラインバックアップ & リカバリ
PDF
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
PDF
MySQL 開発最新動向
PDF
Mroonga!
PDF
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
PPTX
LINEのMySQL運用について 修正版
PDF
Art of MySQL Replication.
PDF
20150920 中国地方db勉強会
PDF
MySQLやSSDとかの話 後編
MySQLバックアップの基本
[db tech showcase Tokyo 2015] C27:楽天MySQL Backup Structure by 楽天株式会社 粟田啓介
Rakuten New MySQL Backup System With Xtrabackup
カジュアルにバックアップ - MySQL Casual Talks 福岡
MySQL ガチBeginnerがやってみたことと反省したこと
MySQLやSSDとかの話・後編
Maria db
さいきんのMySQLに関する取り組み(仮)
MySQL 5.5 Update #denatech
LINEのMySQL運用について
MySQLとPostgreSQLの基本的なバックアップ比較
MySQL のオンラインバックアップ & リカバリ
20170622_MySQL最新情報 ~MySQL 8.0 開発状況、MySQL InnoDB Cluster、などのご紹介~ by 日本オラクル株式会社...
MySQL 開発最新動向
Mroonga!
Yahoo! JAPANのプライベートRDBクラウドとマルチライター型 MySQL #dbts2017 #dbtsOSS
LINEのMySQL運用について 修正版
Art of MySQL Replication.
20150920 中国地方db勉強会
MySQLやSSDとかの話 後編

More from yoku0825 (17)

PDF
逝くぞ最新版、罠の貯蔵は十分か
PDF
MySQLレプリケーションあれやこれや
PDF
MySQL 8.0で憶えておいてほしいこと
PDF
片手間MySQLチューニング戦略
PDF
わかった気になるMySQL
PDF
MySQLアンチパターン
PDF
MySQLerの7つ道具 plus
PDF
5.7の次のMySQL
PDF
mikasafabric for MySQL
PDF
とあるイルカの近況報告
PDF
MySQL Fabricでぼっこぼこにされたはなし
PDF
MySQLと正規形のはなし
PDF
MySQLおじさんの逆襲
PDF
地雷職人の朝は早い
PDF
雑なMySQLパフォーマンスチューニング
PDF
紹介 of Anemometer
PDF
MySQL5.7で遊んでみよう
逝くぞ最新版、罠の貯蔵は十分か
MySQLレプリケーションあれやこれや
MySQL 8.0で憶えておいてほしいこと
片手間MySQLチューニング戦略
わかった気になるMySQL
MySQLアンチパターン
MySQLerの7つ道具 plus
5.7の次のMySQL
mikasafabric for MySQL
とあるイルカの近況報告
MySQL Fabricでぼっこぼこにされたはなし
MySQLと正規形のはなし
MySQLおじさんの逆襲
地雷職人の朝は早い
雑なMySQLパフォーマンスチューニング
紹介 of Anemometer
MySQL5.7で遊んでみよう

How to backup your mroonga database?