61
Rakuten New MySQL Backup System With Xtrabackup Vol.01 Jul/14/2016 Uijun Lee Global Operations Department, Rakuten Inc. http://www.rakuten.co.jp/

Rakuten New MySQL Backup System With Xtrabackup

Embed Size (px)

Citation preview

Page 1: Rakuten New MySQL Backup System With Xtrabackup

Rakuten New MySQL Backup System With XtrabackupVol.01   Jul/14/2016Uijun LeeGlobal Operations Department, Rakuten Inc.http://www.rakuten.co.jp/

Page 2: Rakuten New MySQL Backup System With Xtrabackup

2

Table of Contents

0. Introduction

1. Current MySQL Backup

2. Xtrabackup

3. New MySQL Backup System

4. Future

Page 3: Rakuten New MySQL Backup System With Xtrabackup

Introduction

Page 4: Rakuten New MySQL Backup System With Xtrabackup

4

Who am I?

2008 ~ 2010, 名古屋大学情報科学研究科、修士卒業

2010 ~, 新卒で楽天入社

MySQL DB EngineerDB Application, DB platform  設計、開発、構築

Python , Ruby, Java, Shell-script, Coffee-script 等でプログラミング

~ 2008, 韓国で大学まで

??

Page 5: Rakuten New MySQL Backup System With Xtrabackup

5

History in Rakuten (~2014 年 )

権限付与、スキーマ変更等

スキーマ & SQL review, DB 構築 , migration

DB consulting, Online-schema 導入 , bench-mark with YCSB & TPCC, 自動化 script

Monitoring design (Almond) / development

Page 6: Rakuten New MySQL Backup System With Xtrabackup

6

MySQL Monitoring System (Almond)

Page 7: Rakuten New MySQL Backup System With Xtrabackup

7

In Progress

USER DB (Prod)

「 Almond は進行中」

Page 8: Rakuten New MySQL Backup System With Xtrabackup

8

[Improvement] Almond Bot System

Hipchat, Hubot, Cloud Storage を使って対話ができるように実現!いつでもアプリを使って status の確認、閾値変更などができる

Page 9: Rakuten New MySQL Backup System With Xtrabackup

9

Next Mission

What is Next?

Page 10: Rakuten New MySQL Backup System With Xtrabackup

10

My Goal

DBaaS?DBPlatform?

Page 11: Rakuten New MySQL Backup System With Xtrabackup

11

Cloud Database Design

Monitor はある程度安定しているので、次は backup?

3PAR, Pure Storage

Vmware ESX

Cent OS

MySQL 5.5 , 5.6 , 5.7

Monitor AlertBackup Operation

Page 12: Rakuten New MySQL Backup System With Xtrabackup

12

My Strategy

Monitoring Design / Development ( ~ 2014 年 )

Backup Design / Development

Deploy, Alert Design / Development

DBaaS / DB Platform

Other DBs (No-SQL, and so on)

Page 13: Rakuten New MySQL Backup System With Xtrabackup

Current MySQL Backup

Page 14: Rakuten New MySQL Backup System With Xtrabackup

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

Page 15: Rakuten New MySQL Backup System With Xtrabackup

15

The Features Of Current Backup

重複排除により効率的な backup

backup size を節約できるので、ストレージ容量を削減できる

Job の実行サーバと管理用のサーバが独立している

負荷分散ができる

SnapShot での backup

Page 16: Rakuten New MySQL Backup System With Xtrabackup

16

Merits

VM 単位で backup がとれる

「 Copy 構築」が簡単にできる

OS 領域まで含めた backup が出来る

簡単な画面操作

GUI で操作するので、簡単に backup 、 restore ができる

Restore 用の本番から独立した環境が選択できる

自由なテストが可能になる

Page 17: Rakuten New MySQL Backup System With Xtrabackup

17

[Demerit] Using Remote-desktop

Remote-Desktop で Windows server に接続して作業する

不便で、誰かが接続すると場合によってはセッションが切れる

Running 中の job が多いと、画面操作が重くなる

Page 18: Rakuten New MySQL Backup System With Xtrabackup

18

[Demerit] Dangerous

間違った選択で、本番稼動中のサーバに上書きしてしまう!

Page 19: Rakuten New MySQL Backup System With Xtrabackup

19

[Demerit] Must Change Network Values

必ず network 設定を直さないと本番サーバと IP 衝突 するので危険!

Operation が危ないので必ず作業チェック者が必要

作業 cost が高い

Page 20: Rakuten New MySQL Backup System With Xtrabackup

20

Many Restore Operations

様々なサービスが DB を使っているので、 restore 作業が比較的に多い

テスト環境構築

データ取得のため

slave 構築( copy 構築)

Page 21: Rakuten New MySQL Backup System With Xtrabackup

21

Nothing Solutions ?

Backup は今のレベルを「維持」しながら、Restore がより「簡単」でより「安全」に出来て、Platform を「自由」に作れるのは無いのか?

Page 22: Rakuten New MySQL Backup System With Xtrabackup

Xtrabackup

Page 23: Rakuten New MySQL Backup System With 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 で書かれている

Page 24: Rakuten New MySQL Backup System With Xtrabackup

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

Page 25: Rakuten New MySQL Backup System With Xtrabackup

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

Page 26: Rakuten New MySQL Backup System With Xtrabackup

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 で必要なデータが格納されている

Page 27: Rakuten New MySQL Backup System With Xtrabackup

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 等は何時対応するのか?

Page 28: Rakuten New MySQL Backup System With Xtrabackup

28

Strengths

Backup を速く安定して取れる

Backup 中に トランザクション処理を干渉しない

ディスクやネットワークを効率良く使える

ストリーム機能でリモートにも飛ばせる

オープンソースである

STABILITY & FREEDOM

Page 29: Rakuten New MySQL Backup System With Xtrabackup

29

Weaknesses

差分 backup は管理等が難しい

オプションを付けるとコマンドが長くなる

MyISAM だと lock が必要

Xtrabackup と MySQL 間でバージョン依存がある

Linux のみ対応、 Solaris,Windows他には対応していない

COMPATIBILITY & DIFFICULTY

Page 30: Rakuten New MySQL Backup System With Xtrabackup

New MySQL Backup System (Rbackup)

Page 31: Rakuten New MySQL Backup System With Xtrabackup

31

NewBackup

& RestoreService

What is Rbackup?

Page 32: Rakuten New MySQL Backup System With Xtrabackup

32

Goals

Service Cloud Storage

DBaaS Automation

Simple Open Source

Page 33: Rakuten New MySQL Backup System With Xtrabackup

33

Conditions

DB 構成を標準化している

• OS (Linux) , MySQL バージョン等

Recovery はほとんど無い

• Restore はほとんどテスト用 (検証、データ取得等)• 過去のデータでの restore はほとんどない

DB 稼働状況

• 専用の Backup サーバが無いサービスも多い• Single master で動いている DB サーバも多数

DB運用ポリシー

• 短期、中期、長期の保存 policy がある• Security level が存在する

Page 34: Rakuten New MySQL Backup System With Xtrabackup

34

Concept

短期保存は storage 、中長期は cloud に転送

Client-daemon は予約情報を確認

Binary−log で差分 backup

Backup 情報の中央管理• ( storage 情報、 backup option 情報、保存期間等 )

Auto-mount

Page 35: Rakuten New MySQL Backup System With Xtrabackup

35

CLI 化

まず、スクリプトをシンプルにしないと!

SIMPLE

Page 36: Rakuten New MySQL Backup System With Xtrabackup

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!

Page 37: Rakuten New MySQL Backup System With Xtrabackup

37

Command (Now)

One

Command !

Page 38: Rakuten New MySQL Backup System With Xtrabackup

38

Locking Issue

やっぱり一番気になるのは “ lock” 周り

Page 39: Rakuten New MySQL Backup System With Xtrabackup

39

Backup Options (locking time)

[ --rsync ]

すべての non-innoDB files をコピーする代わりに rsync を使って

backup

--stream option とは一緒に使えない

実際に、使う前には 9秒から 2秒に改善

9秒 2秒

Page 40: Rakuten New MySQL Backup System With Xtrabackup

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” にしてある

Page 41: Rakuten New MySQL Backup System With Xtrabackup

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

Page 42: Rakuten New MySQL Backup System With Xtrabackup

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”

Page 43: Rakuten New MySQL Backup System With Xtrabackup

43

Installation Forecast

VMs (only our team)

Size (Gbyte, only our team)

年内250 VM以上!

年内300 TB以上!(binary backup とデータの自然増加を含む)

Page 44: Rakuten New MySQL Backup System With Xtrabackup

44

Backup Options (disk size)

[ --compress ]

InnoDB file を圧縮して backup するため

Backup 速度が上がる可能性がある

ディスクサイズを節約出来る

Decompress 時は時間かかる

[ --compact]

Secondary Index のコピーをしない

Secondary Index 分のディスク節約ができる

Rbackup での使用を検討中

Page 45: Rakuten New MySQL Backup System With Xtrabackup

45

Backup Options (disk size)

[ --rebuild-indexes]

--compact  オプションを使った場合 Secondary Index を再作成する

--apply-log  の時に実行出来る

[ --rebuild-threads]

Secondary Index の再作成を並行で処理出来る

Page 46: Rakuten New MySQL Backup System With Xtrabackup

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”

Page 47: Rakuten New MySQL Backup System With Xtrabackup

47

Backup Options (other)

[ --parallel ] 多数の ibd file がある場合、複数の child process で backup 出来る

Rbackup では、 CPU数の半分で設定される

Page 48: Rakuten New MySQL Backup System With Xtrabackup

48

Structure

Web

Rbackup Web

ManageDB

Rbackup Storage

Rbackup Batch

CloudDB

Xtrabackup

Page 49: Rakuten New MySQL Backup System With Xtrabackup

49

Rbackup Demo

1. Rbackup-Client install (pip install with Git)

pip install git+https://git.com/juni/rbackup_client.git

Page 50: Rakuten New MySQL Backup System With Xtrabackup

50

Rbackup Demo

2. /etc/init.d/rbackupd [ start | stop | status ]

Page 51: Rakuten New MySQL Backup System With Xtrabackup

51

Rbackup Demo

3. Rbackup check

tailf ${rbackup_check_log}

Page 52: Rakuten New MySQL Backup System With Xtrabackup

52

Rbackup Demo

Page 53: Rakuten New MySQL Backup System With Xtrabackup

53

Rbackup Demo

4. Web login

5. Backup 予約

6. Restore 予約

Page 54: Rakuten New MySQL Backup System With Xtrabackup

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)

Page 55: Rakuten New MySQL Backup System With Xtrabackup

55

Deduplication function

5.5x (81.7%)  削減!

実際のサイズ

保存サイズ

(2016.07.04 時点 )

Page 56: Rakuten New MySQL Backup System With Xtrabackup

56

Public Cloud Object Storage

どのサービスをするのか検討中

AWS, Azure, Oracle Cloud

どんな構成で飛ばすのか検討中

Merit Storage の運用負担が減る

データ管理がしやすい

Demerit ネットワーク issue

Security issue

運用、管理が難しくなる

AWS

Azure

Google Cloud

Oracle Cloud

.

.

.

Page 57: Rakuten New MySQL Backup System With Xtrabackup

Future

Page 58: Rakuten New MySQL Backup System With Xtrabackup

58

Rbackup Improvement

Rbackup-client の re-design (API 化 )

ストレージ選択機能 (local storage, cloud 等)

Error handling の改善、 restore の改善

Xtrabackup バージョンアップ

Deploy まで自動化

様々なアプリケーションがお互い API で通信

「 DBaaS 実現に繋げる!」

Page 59: Rakuten New MySQL Backup System With Xtrabackup

59

Future

Monitoring Design / Development ( ~ 2014 年 )

Backup Design / Development

Deploy, Alert Design / Development

DBaaS / DB Platform

Other DBs (No-SQL, and so on)

Page 60: Rakuten New MySQL Backup System With Xtrabackup

60

PR

楽天に興味のある方いらっしゃいますか?

http://corp.rakuten.co.jp/careers/engineering/

10.22   Rakuten Technology Conference 2016

http://tech.rakuten.co.jp/

Page 61: Rakuten New MySQL Backup System With Xtrabackup

61

Contact me

ご静聴ありがとうございました

李 宜俊(イ ウイジュン)

FB https://www.facebook.com/uijun.lee.1

Linkedin https://www.linkedin.com/in/uijun-lee-542b0561

Email [email protected]