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

Post on 15-Jan-2015

4.170 views 0 download

description

 

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

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

作り方 ~あれから~

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

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

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

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

do_aki ( どぅーあき )

http://do-aki.net/

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

おさらい

カジュアルなマスタ分割

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

JOIN 不可

カジュアルなマスタ分割

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

JOIN 不可マスタ分割でも

JOIN がした

い!

カジュアルなマスタ併合

MasterA

SlaveA1

SlaveA2

SlaveB1

MasterB

SlaveB2

SlaveA+B

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

CHANGE MATER TO でマスタを

定期切替

n:1 レプリケーション

MasterA

SlaveA+B

MasterB

CHANGE MATER TO でマスタを

定期切替

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

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

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

稼働歴

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

エラーログ膨らむ

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

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

pt-online-schema-change

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

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

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

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

まとめ

ネタ切れ

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

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

で動いてるんだぜ、これ

ありがとうございました