Upload
rakuten-inc
View
659
Download
1
Embed Size (px)
Citation preview
Rakuten New MySQL Backup System With XtrabackupVol.01 Jul/14/2016Uijun LeeGlobal Operations Department, Rakuten Inc.http://www.rakuten.co.jp/
2
Table of Contents
0. Introduction
1. Current MySQL Backup
2. Xtrabackup
3. New MySQL Backup System
4. Future
Introduction
4
Who am I?
2008 ~ 2010, 名古屋大学情報科学研究科、修士卒業
2010 ~, 新卒で楽天入社
MySQL DB EngineerDB Application, DB platform 設計、開発、構築
Python , Ruby, Java, Shell-script, Coffee-script 等でプログラミング
~ 2008, 韓国で大学まで
??
5
History in Rakuten (~2014 年 )
権限付与、スキーマ変更等
スキーマ & SQL review, DB 構築 , migration
DB consulting, Online-schema 導入 , bench-mark with YCSB & TPCC, 自動化 script
Monitoring design (Almond) / development
6
MySQL Monitoring System (Almond)
7
In Progress
USER DB (Prod)
「 Almond は進行中」
8
[Improvement] Almond Bot System
Hipchat, Hubot, Cloud Storage を使って対話ができるように実現!いつでもアプリを使って status の確認、閾値変更などができる
9
Next Mission
What is Next?
10
My Goal
DBaaS?DBPlatform?
11
Cloud Database Design
Monitor はある程度安定しているので、次は backup?
3PAR, Pure Storage
Vmware ESX
Cent OS
MySQL 5.5 , 5.6 , 5.7
Monitor AlertBackup Operation
12
My Strategy
Monitoring Design / Development ( ~ 2014 年 )
Backup Design / Development
Deploy, Alert Design / Development
DBaaS / DB Platform
Other DBs (No-SQL, and so on)
Current MySQL Backup
14
The History Of Database Structure & Backup
Age DB Structure Backup Structure
VCS VCS + ReplicationVCS + Shard
SAN Snapshot
IA + SSD IA Server + SSD LVM
CLOUD Private Cloud Veeam
SAN
VIP
VIPActive Standby Active Standby Backup
VCS IA + SSD
15
The Features Of Current Backup
重複排除により効率的な backup
backup size を節約できるので、ストレージ容量を削減できる
Job の実行サーバと管理用のサーバが独立している
負荷分散ができる
SnapShot での backup
16
Merits
VM 単位で backup がとれる
「 Copy 構築」が簡単にできる
OS 領域まで含めた backup が出来る
簡単な画面操作
GUI で操作するので、簡単に backup 、 restore ができる
Restore 用の本番から独立した環境が選択できる
自由なテストが可能になる
17
[Demerit] Using Remote-desktop
Remote-Desktop で Windows server に接続して作業する
不便で、誰かが接続すると場合によってはセッションが切れる
Running 中の job が多いと、画面操作が重くなる
18
[Demerit] Dangerous
間違った選択で、本番稼動中のサーバに上書きしてしまう!
19
[Demerit] Must Change Network Values
必ず network 設定を直さないと本番サーバと IP 衝突 するので危険!
Operation が危ないので必ず作業チェック者が必要
作業 cost が高い
20
Many Restore Operations
様々なサービスが DB を使っているので、 restore 作業が比較的に多い
テスト環境構築
データ取得のため
slave 構築( copy 構築)
21
Nothing Solutions ?
Backup は今のレベルを「維持」しながら、Restore がより「簡単」でより「安全」に出来て、Platform を「自由」に作れるのは無いのか?
Xtrabackup
23
What is Xtrabackup?
Percona 社が提供している MySQL の backup
Open-source hot backup utility
High-performance, non-blocking backup system
InnoDB, XtraDB テーブルが基本
MyISAM テーブルも backup が可能 (Innobackex 利用)
Xtrabackup は C で、 innobackupex は Perl で書かれている
24
What is Innobackupex?
Xtrabackup は low level binary
Innobackupex は xtrabackup のための higher-level Perl wrapper
一般的には、 innobackupex で実行
引用 : Nilnanadan Joshi http://www.slideshare.net/nilnandan/percona-xtrabackup-mysql-meetup-mumbai
25
Structure
MySQLclient
MySQLclient
MySQLclient
MySQLServer
InnoDBData
TransactionLogs
TargetDirectory
Backup Process
Binary file copy
Transaction info check
引用 : Nilnanadan Joshi http://www.slideshare.net/nilnandan/percona-xtrabackup-mysql-meetup-mumbai
26
Files
Backup-my.cnf → apply-log 実行のための最低限の InnoDB 設定情報が入っている
Xtrabackup_info → backup に関するすべての情報がある → xtrabackup server version, backup time, binlog position 等
Xtrabackup_binlog_info → binary の logging が ON の場合生成される → Master で取った backup から slave を構築する時必要
Xtrabackup_checkpoints → backup に関するメータデータが格納されている
Xtrabackup_logfile → applylog で必要なデータが格納されている
27
Xtrabackup Version
Version Compatibility Feature2.0 MySQL 5.0, 5.1, 5.5, 5.6 MySQL5.0 対応
2.1 MySQL 5.1, 5.5, 5.6 compact backup サポート
2.2 MySQL 5.1, 5.5, 5.6
2.3 MySQL 5.1, 5.5, 5.6 xbcloud binary (Cloud に流せる)
2.4 MySQL 5.1, 5.5, 5.6, 5.7 MySQL 5.7 対応
Xtrabackup 2.3 からは、 xbcloud を使って OpenStack Swift にも飛ば
せる
AWS 等は何時対応するのか?
28
Strengths
Backup を速く安定して取れる
Backup 中に トランザクション処理を干渉しない
ディスクやネットワークを効率良く使える
ストリーム機能でリモートにも飛ばせる
オープンソースである
STABILITY & FREEDOM
29
Weaknesses
差分 backup は管理等が難しい
オプションを付けるとコマンドが長くなる
MyISAM だと lock が必要
Xtrabackup と MySQL 間でバージョン依存がある
Linux のみ対応、 Solaris,Windows他には対応していない
COMPATIBILITY & DIFFICULTY
New MySQL Backup System (Rbackup)
31
NewBackup
& RestoreService
What is Rbackup?
32
Goals
Service Cloud Storage
DBaaS Automation
Simple Open Source
33
Conditions
DB 構成を標準化している
• OS (Linux) , MySQL バージョン等
Recovery はほとんど無い
• Restore はほとんどテスト用 (検証、データ取得等)• 過去のデータでの restore はほとんどない
DB 稼働状況
• 専用の Backup サーバが無いサービスも多い• Single master で動いている DB サーバも多数
DB運用ポリシー
• 短期、中期、長期の保存 policy がある• Security level が存在する
34
Concept
短期保存は storage 、中長期は cloud に転送
Client-daemon は予約情報を確認
Binary−log で差分 backup
Backup 情報の中央管理• ( storage 情報、 backup option 情報、保存期間等 )
Auto-mount
35
CLI 化
まず、スクリプトをシンプルにしないと!
SIMPLE
36
Command (First time)
10 10 * * 3 /usr/local/bin/python /home/uijun/script/Xtrabackup/Xtrabackup.py --s ${BACKUP_INSTANCE} --d {BACKUP_DIR} --comp y --mv N --remote N --interval 7
innobackupex --host=${BACKUP_HOST} --port=${BACKUP_PORT} --user=${BACKUP_USER} --password=${BACKUP_PASSWORD} –socket=/mysql/${BACKUP_SVR}.sock --defaults-file=${BACKUP_CNF} --ibbackup=xtrabackup --slave-info --safe-slave-backup --compress --rsync ${BACKUP_DIR}
(applylog)innobackupex --host=${RESTORE_HOST} --port=${RESTORE_PORT} --user=${RESTORE_USER} --password=${RESTORE_PASSWORD} –socket=/mysql/${BACKUP_SVR}.sock --defaults-file=${BACKUP_CNF} --ibbackup=xtrabackup --apply-log ${RESTORE_DIR}
(restore)innobackupex --host=${RESTORE_HOST} --port=${RESTORE_PORT} --user=${RESTORE_USER} --password=${RESTORE_PASSWORD} –socket=/mysql/${RESTORE_SVR}.sock --defaults-file=${RESTORE_CNF} --copy-back ${RESTORE_DIR}
Long Command!
37
Command (Now)
One
Command !
38
Locking Issue
やっぱり一番気になるのは “ lock” 周り
39
Backup Options (locking time)
[ --rsync ]
すべての non-innoDB files をコピーする代わりに rsync を使って
backup
--stream option とは一緒に使えない
実際に、使う前には 9秒から 2秒に改善
9秒 2秒
40
Backup Options (locking time)
[ --lock-wait-timeout ] Innobackupex はこの値まで FTWRL の実行を待つ
その時間まで long-query が存在すると Innobackupex がエラー終了す
る
Default は “0”で、この設定だと待たずにすぐ FTWRL を実行する
Rbackup では default “3600” にしてある
[ --lock-wait-threshold ] FTWRL を獲得する前に流れている long-query のランニングタイム
それ以上の query が流れている場合は FTWRL を実行しない
Lock−wait−timeout が “ 0” だと、このオプションは使えない
Default は “ 60”
Rbackup では default “10” にしてある
41
Lock-wait-timeout & Lock-wait-threshold
(the present)
5秒
7秒Xtrabackup FTWR
L
3秒2秒
1秒
Lock-wait-threshold
Check “process list”
waiting
Lock-wait-timeout
42
Backup Options (locking time)
[ --no-lock ]
FLUSH TABLES WITH READ LOCK を無効化
全てのテーブルが InnoDB の場合、
かつ、 Binary−log の position を気にしない場合は使える
DDL 実行がなく、 non-InnoDB テーブルの変更がない場合は使える
Xtrabackup_binlog_info が作成されない
Rbackup では使っていない (整合性のため)
[ --lock-wait-query-type ]
Innobackupex がグローバル Lock を発行する前、
どちら (all, update) の query を待つのかを選択出来る
Default は “ all”
43
Installation Forecast
VMs (only our team)
Size (Gbyte, only our team)
年内250 VM以上!
年内300 TB以上!(binary backup とデータの自然増加を含む)
44
Backup Options (disk size)
[ --compress ]
InnoDB file を圧縮して backup するため
Backup 速度が上がる可能性がある
ディスクサイズを節約出来る
Decompress 時は時間かかる
[ --compact]
Secondary Index のコピーをしない
Secondary Index 分のディスク節約ができる
Rbackup での使用を検討中
45
Backup Options (disk size)
[ --rebuild-indexes]
--compact オプションを使った場合 Secondary Index を再作成する
--apply-log の時に実行出来る
[ --rebuild-threads]
Secondary Index の再作成を並行で処理出来る
46
Backup Options (slave)
[ --slave-info ]
Slave server での backup の時有効
Binary−log position と master サーバ名が出力
Change master 情報がファイル “ xtrabackup_slave_info” に出力
[ --safe-slave-backup ]
FTWRL の実行前に SQL thread を止める
”Slave_open_temp_tables” が ” 0” になるまで backup を待つ
[ --safe-slave-backup-timeout ]
”Slave_open_temp_tables” が ” 0” になるまでどれくらい待つのかを設
定
Default は “ 300”
47
Backup Options (other)
[ --parallel ] 多数の ibd file がある場合、複数の child process で backup 出来る
Rbackup では、 CPU数の半分で設定される
48
Structure
Web
Rbackup Web
ManageDB
Rbackup Storage
Rbackup Batch
CloudDB
Xtrabackup
49
Rbackup Demo
1. Rbackup-Client install (pip install with Git)
pip install git+https://git.com/juni/rbackup_client.git
50
Rbackup Demo
2. /etc/init.d/rbackupd [ start | stop | status ]
51
Rbackup Demo
3. Rbackup check
tailf ${rbackup_check_log}
52
Rbackup Demo
53
Rbackup Demo
4. Web login
5. Backup 予約
6. Restore 予約
54
Storage Is Main For Backup
Backup データをどう保存するのか重要な Issue で、ストレージの決定は重要ポイントである
1. Dedup 機能があるストレージ
2. シンプル構成
3. DR 対策
4. 効率的なネットワークトラフィック
5. より簡単な管理、運用
6. 負荷分散BACKUP
STORAGE(BIG)
BACKUPSTORAGE
(BIG)
BACKUPSTORAGE(SMALL)
BACKUPSTORAGE(SMALL)
55
Deduplication function
5.5x (81.7%) 削減!
実際のサイズ
保存サイズ
(2016.07.04 時点 )
56
Public Cloud Object Storage
どのサービスをするのか検討中
AWS, Azure, Oracle Cloud
どんな構成で飛ばすのか検討中
Merit Storage の運用負担が減る
データ管理がしやすい
Demerit ネットワーク issue
Security issue
運用、管理が難しくなる
AWS
Azure
Google Cloud
Oracle Cloud
.
.
.
Future
58
Rbackup Improvement
Rbackup-client の re-design (API 化 )
ストレージ選択機能 (local storage, cloud 等)
Error handling の改善、 restore の改善
Xtrabackup バージョンアップ
Deploy まで自動化
様々なアプリケーションがお互い API で通信
「 DBaaS 実現に繋げる!」
59
Future
Monitoring Design / Development ( ~ 2014 年 )
Backup Design / Development
Deploy, Alert Design / Development
DBaaS / DB Platform
Other DBs (No-SQL, and so on)
60
PR
楽天に興味のある方いらっしゃいますか?
http://corp.rakuten.co.jp/careers/engineering/
10.22 Rakuten Technology Conference 2016
http://tech.rakuten.co.jp/
61
Contact me
ご静聴ありがとうございました
李 宜俊(イ ウイジュン)
FB https://www.facebook.com/uijun.lee.1
Linkedin https://www.linkedin.com/in/uijun-lee-542b0561
Email [email protected]