Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ゆるふわ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回失敗したら...
VRRP切り替え時間
mysqldのみ死んだら
● ヘルスチェック失敗しMasterステップダウン。2秒。
● 即座にVIPが移動する。
Masterがサーバごと突然死
● (3 * Advertisement_Interval) + ( (2...
レプリケーション
レプリケーション(おさらい)
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_Runnin...
フェイルオーバーデモ
フェイルオーバー構成
keepalived
mysqld(5.6)
keepalived
mysqld(5.6)
VRRP
Rep.
クライアント
v001 v002VIP readonly=1
ヘルスチェック
readonly=1readon...
フェイルオーバー構成
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, Q...
フェイルオーバーデモ
バックアップ・リカバリー
Percona Xtrabackup
ほぼオンラインバックアップ可能らしい*
● InnoDBだけを先にバックアップ
● ‘FLUSH TABLES WITH READ LOCK’ ->
MyISAMをバックアップ
mysqldumpより全然速...
Percona Xtrabackup
デイリーバックアップ
● innobackupexでxtrabackup.{日時}.tgzに保存
リカバリー
● data_dirを退避
● innobackupexでバックアップから新しいdata_dir...
バックアップデモ
おさらい
いいところ
● ほぼ瞬時にフェイルオーバー
● バックアップ、リカバリー速い
課題
● マルチマスターなので不整合に気をつける
● repが遅いとなかなか昇格できない
● バックアップファイルの正しさチェックどうする?
ご清聴ありがとうございましたm(__)m
DBのMaster確認
mysql --host $VIP -e
'select @@report_host, @@report_port, @@read_only¥G;'
*************************** 1. row ...
GTIDって何?
Global Transaction ID
トランザクションに一意のID
binlog内のどこまでが適用されたかがわかる。
5721623-be74-11e4-a21c-40a8f0333378:2681128
UUID シー...
Upcoming SlideShare
Loading in …5
×

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

3,663 views

Published on

マルチマスターレプリケーション+VRRPでMySQLサーバを冗長化させます。MySQL Casual Talk 2015/11/20

Published in: Technology
  • Be the first to comment

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

  1. 1. ゆるふわMySQLフェイルオーバー クラスターコンピューティング株式会社 高橋 公俊 2015/11/20 MySQL Casual Talks vol.8
  2. 2. 自己紹介 サーバ販売 インフラ構築/コンサルティング 冗長化、負荷分散クラスタ IT勉強会初登壇 ( ;゚Д゚)ガクブル 仲間募集中 twitter: @ktaka http://ccmp.jp
  3. 3. 本日の内容 ● 今回のフェイルオーバー構成 ○ VRRPって何? ○ レプリケーション ○ デモ ● バックアップ、リカバリー ○ デモ ● まとめ
  4. 4. フェイルオーバー構成
  5. 5. フェイルオーバー構成 keepalived mysqld(5.6) keepalived mysqld(5.6) VRRP Rep. クライアント db1 db2VIP readonly=1 ヘルスチェック readonly=0
  6. 6. フェイルオーバー構成 keepalived mysqld(5.6) keepalived mysqld(5.6) VRRP Rep. クライアント db1 db2VIP ヘルスチェック X readonly=0readonly=1
  7. 7. VRRP
  8. 8. VRRP2 (RFC3768) Master Backup Advertise Master Backup -> Master Advertise X keepalived 1.2.17以降はVRRPv3(RFC5798)対応
  9. 9. ヘルスチェック 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';"
  10. 10. VRRP切り替え時間 mysqldのみ死んだら ● ヘルスチェック失敗しMasterステップダウン。2秒。 ● 即座にVIPが移動する。 Masterがサーバごと突然死 ● (3 * Advertisement_Interval) + ( (256 - Priority) / 256 ) ●      が1なら最長で4秒でVIP移動
  11. 11. レプリケーション
  12. 12. レプリケーション(おさらい) Master Client binlog Slave Network relaylog binlog
  13. 13. レプリケーション(やばい) Master Client binlog Slave Network relaylog binlog X
  14. 14. 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
  15. 15. フェイルオーバーデモ
  16. 16. フェイルオーバー構成 keepalived mysqld(5.6) keepalived mysqld(5.6) VRRP Rep. クライアント v001 v002VIP readonly=1 ヘルスチェック readonly=1readonly=0
  17. 17. フェイルオーバー構成 keepalived mysqld(5.6) keepalived mysqld(5.6) VRRP Rep. クライアント v001 v002VIP ヘルスチェック X readonly=0readonly=1
  18. 18. デモ環境が小規模 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
  19. 19. フェイルオーバーデモ
  20. 20. バックアップ・リカバリー
  21. 21. Percona Xtrabackup ほぼオンラインバックアップ可能らしい* ● InnoDBだけを先にバックアップ ● ‘FLUSH TABLES WITH READ LOCK’ -> MyISAMをバックアップ mysqldumpより全然速い *http://d.hatena.ne.jp/interdb/20140922/1411378571
  22. 22. Percona Xtrabackup デイリーバックアップ ● innobackupexでxtrabackup.{日時}.tgzに保存 リカバリー ● data_dirを退避 ● innobackupexでバックアップから新しいdata_dir ● skip-slave-start でmysqld起動 ● レプリケーション設定 ● "start slave;"
  23. 23. バックアップデモ
  24. 24. おさらい いいところ ● ほぼ瞬時にフェイルオーバー ● バックアップ、リカバリー速い 課題 ● マルチマスターなので不整合に気をつける ● repが遅いとなかなか昇格できない ● バックアップファイルの正しさチェックどうする?
  25. 25. ご清聴ありがとうございましたm(__)m
  26. 26. 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
  27. 27. GTIDって何? Global Transaction ID トランザクションに一意のID binlog内のどこまでが適用されたかがわかる。 5721623-be74-11e4-a21c-40a8f0333378:2681128 UUID シーケンス番号

×