23
マママ n マママママ 1 マママ マママママママママ マママママ ~~ 2013/04/17 MySQL Casual Talks vol.4 do_aki

マスタN対スレーブ1レプリケーションの作り方 ~あれから~

  • Upload
    doaki

  • View
    4.170

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

マスタ n 対スレーブ 1レプリケーションの

作り方 ~あれから~

2013/04/17   MySQL Casual Talks vol.4   do_aki

Page 2: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

| 所属 | > 株式会社もしも    (ドロップシッピング・アフィリエイト ASP )

| 仕事 | > インフラ(サーバ管理)兼  Web アプリケーション開発

| 出現 | > 渋谷・山手線沿線| 特性 | > PHPer

do_aki ( どぅーあき )

http://do-aki.net/

Page 3: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

マスタ n 対スレーブ1 レプリケーション

おさらい

Page 4: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

カジュアルなマスタ分割

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

JOIN 不可

Page 5: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

カジュアルなマスタ分割

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

JOIN 不可マスタ分割でも

JOIN がした

い!

Page 6: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

カジュアルなマスタ併合

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

SlaveA+B

Page 7: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

Page 8: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

CHANGE MATER TO でマスタを

定期切替

Page 9: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

CHANGE MATER TO でマスタを

定期切替

Page 11: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

Page 12: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

発表者 do_akiからのメッセージをお読みください

Page 13: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

本トークの注意事項 真新しい話は一切無し このネタ正直もう飽きた ( ・ ω ・\ )SAN 値!        ( /・ ω ・ ) /ピンチ!想定以上に安定稼働しすぎネタ無いのに主催に半強制的に発

表させられてるなんて言えない

Page 14: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

稼働歴

Page 15: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

2011 年 7 月 稼働開始2011 年 8 月  MySQL Casual Talks Vol.22011 年 11 月 障害停止

(max_allowed_packet 不足 )2012 年 4 月  MySQL Casual Talks Vol.32012 年 10 月 計画停止 ( マスタ切替 )2012 年 12 月 計画停止 (Disk 拡張 )2013 年 4 月  MySQL Casual Talks Vol.4

Page 16: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

エラーログ膨らむ

Page 17: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

130415 20:55:11 [ERROR] Error reading packet from server: Lost connection to MySQL server during query ( server_errno=2013)130415 20:55:11 [Note] Slave I/O thread killed while reading event130415 20:55:11 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.003284', position 585650324130415 20:55:11 [Note] Error reading relay log event: slave SQL thread was killed130415 20:55:11 [Note] 'CHANGE MASTER TO executed'. Previous state master_host='master host1', master_port='3306', master_log_file='mysql-bin.003284', master_log_pos='585650324'. New state master_host='master host2', master_port='3306', master_log_file='mysql-bin.001770', master_log_pos='996447621'.130415 20:55:11 [Note] Slave SQL thread initialized, starting replication in log 'mysql-bin.0001770' at position 996447621, relay log './relay-bin.000001' position: 4130415 20:55:11 [Note] Slave I/O thread: connected to master 'slave user@master host2:3306',replication started in log 'mysql-bin.001770' at position 996447621

Page 18: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

pt-online-schema-change と相性悪い

Page 19: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

pt-online-schema-change

• オンラインでスキーマ変更

• 全スレーブをチェック ( 本実行時のみ )

• 遅延状況によって Wait ( 負荷低減 )

• マスタ切り替え中にチェックが走るとタイミングによっては待ち続ける

Page 20: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

まとめ

Page 21: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

ネタ切れ

Page 22: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

• ほんとに安定稼働中• 運用コストがほとんど無くてびっくり• 興味あるならコードはこちら• https://

github.com/do-aki/SwitchMaster• 信じられないだろ、こんな適当なコード

で動いてるんだぜ、これ

Page 23: マスタN対スレーブ1レプリケーションの作り方 ~あれから~

ありがとうございました