SlideShare a Scribd company logo
ゆるふわMySQLフェイルオーバー
クラスターコンピューティング株式会社
高橋 公俊
2015/11/20 MySQL Casual Talks vol.8
自己紹介
サーバ販売
インフラ構築/コンサルティング
冗長化、負荷分散クラスタ
IT勉強会初登壇 ( ;゚Д゚)ガクブル
仲間募集中
twitter: @ktaka
http://ccmp.jp
本日の内容
● 今回のフェイルオーバー構成
○ VRRPって何?
○ レプリケーション
○ デモ
● バックアップ、リカバリー
○ デモ
● まとめ
フェイルオーバー構成
フェイルオーバー構成
keepalived
mysqld(5.6)
keepalived
mysqld(5.6)
VRRP
Rep.
クライアント
db1 db2VIP
readonly=1
ヘルスチェック
readonly=0
フェイルオーバー構成
keepalived
mysqld(5.6)
keepalived
mysqld(5.6)
VRRP
Rep.
クライアント
db1 db2VIP
ヘルスチェック
X readonly=0readonly=1
VRRP
VRRP2 (RFC3768)
Master Backup
Advertise
Master Backup -> Master
Advertise
X
keepalived 1.2.17以降はVRRPv3(RFC5798)対応
ヘルスチェック
vrrp.conf
vrrp_script mysqlchk {
script "/etc/keepalived/vrrp/mysqlchk.sh"
interval 1 ← 1秒ごとにチェック
fall 2 ← 2回失敗したらFAULT
rise 2 ← 2回成功でBACKUP or MASTER
}
mysqlchk.sh
mysql -S $SOCK --connect-timeout=$TIMEOUT
-e "show variables like 'server_id';"
VRRP切り替え時間
mysqldのみ死んだら
● ヘルスチェック失敗しMasterステップダウン。2秒。
● 即座にVIPが移動する。
Masterがサーバごと突然死
● (3 * Advertisement_Interval) + ( (256 - Priority) / 256 )
●      が1なら最長で4秒でVIP移動
レプリケーション
レプリケーション(おさらい)
Master
Client
binlog
Slave
Network relaylog binlog
レプリケーション(やばい)
Master
Client
binlog
Slave
Network relaylog binlog
X
DBの状態チェック
‘show slave status’の一部と、UUID表示
UUID= 8c3905b3-8de2-11e5-b06d-525400110001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
Slave_SQL_Running_State: Slave has read all relay log; waiting for more
updates
Retrieved_Gtid_Set: 8bfdfa5e-8de2-11e5-b068-525400110002:1
Executed_Gtid_Set: 8bfdfa5e-8de2-11e5-b068-525400110002:1,8c3905b3-
8de2-11e5-b06d-525400110001:1-58442
フェイルオーバーデモ
フェイルオーバー構成
keepalived
mysqld(5.6)
keepalived
mysqld(5.6)
VRRP
Rep.
クライアント
v001 v002VIP readonly=1
ヘルスチェック
readonly=1readonly=0
フェイルオーバー構成
keepalived
mysqld(5.6)
keepalived
mysqld(5.6)
VRRP
Rep.
クライアント
v001 v002VIP
ヘルスチェック
X readonly=0readonly=1
デモ環境が小規模
https://github.com/ktaka-ccmp/mysql-casual-20151220/tree/mysql56
Intel Pentium N3700
(2M Cache, up to 2.40 GHz, Quad Core)
8GB mem, 120GB SSD
Debian Jessie , kvm
フェイルオーバーデモ
バックアップ・リカバリー
Percona Xtrabackup
ほぼオンラインバックアップ可能らしい*
● InnoDBだけを先にバックアップ
● ‘FLUSH TABLES WITH READ LOCK’ ->
MyISAMをバックアップ
mysqldumpより全然速い
*http://d.hatena.ne.jp/interdb/20140922/1411378571
Percona Xtrabackup
デイリーバックアップ
● innobackupexでxtrabackup.{日時}.tgzに保存
リカバリー
● data_dirを退避
● innobackupexでバックアップから新しいdata_dir
● skip-slave-start でmysqld起動
● レプリケーション設定
● "start slave;"
バックアップデモ
おさらい
いいところ
● ほぼ瞬時にフェイルオーバー
● バックアップ、リカバリー速い
課題
● マルチマスターなので不整合に気をつける
● repが遅いとなかなか昇格できない
● バックアップファイルの正しさチェックどうする?
ご清聴ありがとうございましたm(__)m
DBのMaster確認
mysql --host $VIP -e
'select @@report_host, @@report_port, @@read_only¥G;'
*************************** 1. row *******************
@@report_host: v001
@@report_port: 3306
@@read_only: 0
GTIDって何?
Global Transaction ID
トランザクションに一意のID
binlog内のどこまでが適用されたかがわかる。
5721623-be74-11e4-a21c-40a8f0333378:2681128
UUID シーケンス番号

More Related Content

ゆるふわMySQLフェイルオーバー