MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · –...

78
MySQL 5.7 レプリケーション新機能 日本オラクル株式会社 MySQL Global Business Unit

Transcript of MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · –...

Page 1: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

MySQL  5.7  レプリケーション新機能

日本オラクル株式会社  MySQL  Global  Business  Unit  

Page 2: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Safe  Harbor  Statement  The  following  is  intended  to  outline  our  general  product  direcNon.  It  is  intended  for  informaNon  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  commitment  to  deliver  any  material,  code,  or  funcNonality,  and  should  not  be  relied  upon  in  making  purchasing  decisions.  The  development,  release,  and  Nming  of  any  features  or  funcNonality  described  for  Oracle’s  products  remains  at  the  sole  discreNon  of  Oracle.  

2  

Page 3: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   3

Program  Agenda MySQL  レプリケーション概要

MySQL  5.7  レプリケーション新機能

MySQL  Fabric

MySQL  Router  GA

Labsで開発中の機能

ロードマップ

まとめ

1  

2  

3  

4  

5  

6  

7  

Page 4: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  レプリケーション概要

4

Page 5: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   5  

概要:  レプリケーションアーキテクチャ  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 6: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

概要:  レプリケーションアーキテクチャ

• 各スレッドの役割

6

スレッド名 本資料での名称 役割

Binlogダンプスレッド Senderスレッド バイナリログの内容をスレーブに送信

ACK  Receiverスレッド ACK  Receiverスレッド スレーブからのACKを受信

スレーブI/Oスレッド Receiverスレッド バイナリログの内容を受信しリレーログに記録

スレーブSQLスレッド Applierスレッド リレーログの内容をデータに反映

Page 7: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

概要:  レプリケーションアーキテクチャ  • バイナリログ  

– マスターでの変更点を記録するログファイル  – 文(STATEMENT)ベースまたは行(ROW)ベース、またはMIXED  – 各トランザクションはイベントのグループに分割される  – 主な操作:  ローテーション、内容の表示、GITD,  ...  

 

7  

バイナリログのレイアウト

BEGIN   ...  E1   E2   COMMIT   BEGIN   ...  E1   E2   COMMIT  

Page 8: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

M   S  

S  

S  

S  

M  

更新処理   参照処理  参照処理  

更新処理  

参照増加?  スレーブ  追加!  

8  

参照性能のスケールアウト  概要:  レプリケーションの用途  

Page 9: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

M   M?  

更新処理   更新処理  

更新増加? マスター 追加?

M?  

M?  

MySQL  Fabric  によるシャーディング構成...  9  

更新処理のスケールアウトは?  

Page 10: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

C  

B  

A  

C  

B  

A  障害発生  

C  

B  

A  

Bが新しい  マスターに昇格  

障害発生   切り替え  

10  

耐障害性:  マスターの障害時に、スレーブをマスターに昇格    

概要:  レプリケーションの用途  

Page 11: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

M  

S  

更新処理  

BI(ビジネスインテリジェンス)や  レポート生成アプリ、  データ分析アプリなど  

11  

オンラインバックアップやレポート生成  概要:  レプリケーションの用途  

Page 12: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

C  B  

B  A  A  C  

Image  from  www.ginkgomaps.com  

12  

概要:レプリケーションの用途  

Page 13: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能

13

Page 14: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能 運用効率 /  オンライン

14

Page 15: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   15  

GTID(Global  TransacNon  IdenNfiers)のオンラインでの設定  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 16: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Master

GTID=123456

GTID=123456

GTID=123456 GTID=123456

グローバルトランザクションID  (GTID) • レプリケーション環境でのトランザクションの追跡/比較が容易に可能

– トランザクションを一意に識別できる識別子をバイナリログに記録  – GTIDの書式 サーバUUID:トランザクションID  [-­‐トランザクションID]  

例)  3E11FA47-­‐71CA-­‐11E1-­‐9E33-­‐C80AA9429562:1-­‐5 • フェイルオーバーのために 新のスレーブを自動認識 • 多段構成のレプリケーションの管理が容易に

Page 17: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

GTID(Global  TransacNon  IdenNfiers)のオンラインでの設定  • GTIDの設定変更がオンラインに  

– GTIDの設定変更(onまたはoff)の変更中も参照更新可能  

• サーバ間でのデータ同期不要  • サーバ再起動不要  • レプリケーション構成の変更不要  

– 任意のレプリケーション構成で利用可能  

• 運用中にGITDの利用開始または停止が可能  

17  

Page 18: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

GTID(Global  TransacNon  IdenNfiers)のオンラインでの設定  • GTIDを有効にする作業をよりシンプルに  

h=p://dev.mysql.com/doc/refman/5.7/en/replicaHon-­‐mode-­‐change-­‐online-­‐enable-­‐gHds.html  

18  

1)   SET  @@GLOBAL.GTID_MODE  =  OFF_PERMISSIVE;  (全サーバ上)  2)   SET  @@GLOBAL.GTID_MODE  =  ON_PERMISSIVE;  (全サーバ上)  3)   レプリケーションの遅延以上の時間待機する  4)   SET  @@GLOBAL.GTID_MODE  =  ON;  (全サーバ上)  

Page 19: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   19  

レプリケーションのフィルタをオンラインで変更  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 20: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

レプリケーションのフィルタをオンラインで変更  • スレーブのレプリケーションフィルタを動的に変更  

– スレーブサーバの再起動不要  – 全てのスレーブでのフィルタをサポート  – 各種の文字コードによる値の設定が可能  

20  

mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB= (db1, db2)

Page 21: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   21  

新マスターへの切り替え/フェールオーバーをオンラインで  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 22: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   22  

マスターをAからBへの切り替える際にApplierスレッドの停止不要  新マスターへの切り替え/フェールオーバーをオンラインで  

C  

B  

A  

C  

B  

A  障害発生  

C  

B  

A  

Bが新しい  マスターに昇格  

障害発生   構成変更  

Page 23: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   23  

マスターをAからBへの切り替える際にApplierスレッドの停止不要  新マスターへの切り替え/フェールオーバーをオンラインで  

C  

B  

A  

C  

B  

A  障害発生  

C  

B  

A  障害発生   構成変更  

マスターをAからBに切り替えるために  DBAをCのリレーログの内容をデータに  反映する処理を停止する必要はない  

Page 24: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

新マスターへの切り替え/フェールオーバーをオンラインで  • フェールオーバー中もオンラインで処理を継続:  

• Receiverスレッドの停止、マスター変更、再開の間もApplierスレッドは処理を継続  

• Applierスレッドの設定変更中もReceiverスレッドは処理を継続  

24  

mysql> STOP SLAVE IO_THREAD; mysql> CHANGE MASTER TO MASTER_HOST='master2', …; mysql> START SLAVE IO_THREAD;

mysql> STOP SLAVE SQL_THREAD; mysql> CHANGE MASTER TO MASTER_DELAY=3600, …; mysql> START SLAVE SQL_THREAD;

Page 25: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   25  

レプリケーション監視の改善  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

DBA  

Page 26: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

レプリケーション監視の改善  

•  SQL文にて監視  • 意味の異なる情報は別々の場所に格納  • 拡張可能,  新しい機能との連携  • より正確で一貫性のある識別子の名称  • マスター/スレーブ、マルチソース、グループレプリケーション対応  

26  

Performance  SchemaのReplicaHon関連テーブル  

Page 27: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   27  

レプリケーション監視の改善  

ConnecHon    ConfiguraHon  

ConnecHon    Status  

   Applier    ConfiguraHon  

       Applier          Status  

(Slave)  Receiver  and  Applier  Status  

Applier  /  Coordinator  Status  

Workers  Status  

Page 28: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

レプリケーション監視の改善  

28  

mysql> select * from performance_schema.replication_applier_status_by_worker\G *************************** 1. row *************************** CHANNEL_NAME: WORKER_ID: 1 THREAD_ID: 35 SERVICE_STATE: ON LAST_SEEN_TRANSACTION: 4ba0eb86-63c3-11e4-92ba-28b2bd168d07:2368 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 *************************** 2. row *************************** CHANNEL_NAME: WORKER_ID: 2 THREAD_ID: 36 SERVICE_STATE: ON LAST_SEEN_TRANSACTION: 4ba0eb86-63c3-11e4-92ba-28b2bd168d07:2367 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 2 rows in set (0,00 sec)

Page 29: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能 パフォーマンス

29

Page 30: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   30  

Applierスレッドの性能向上  –  ロックベースの並列処理  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 31: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   31  

Applierスレッドの性能向上 –  ロックベースの並列処理  

S ingle  Threaded  Apply 8  Threads  Applier 24  Threads  Applier 48  Threads  Applier 96  Threads  Applier0%

50%

100%

150%

200%

250%

F as t  and  S c alable  Multi-­‐threaded  Replic ation  Applier

(s tatement-­‐bas ed  replication,  durable  s ettings ,  S S D  s torage)

Slav

e  ap

ply  tim

e  (S

ysbe

nch  RW

 on  the  mas

ter  w

ith  96  thread

s  =  10

0%)

10X  

Page 32: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Applierスレッドの性能向上 –  ロックベースの並列処理  • マスターでの実行状況の情報をもとに並列処理:  

– マスター上で相互にブロックしない同時実行トランザクションは、  「競合しないトランザクション」としてバイナリログに記録  

• スレーブ上では:  – 「競合しないトランザクション」は並列実行される;  – 同時実行トランザクションは個別にコミットされ、相互に待つことはない  

32  

Page 33: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Applierスレッドの性能向上 –  ロックベースの並列処理  

•  T2はT1と並列実行されるようにスケジュールされる  

•  T3はT1の終了後に実行されるようにスケジュールされる  

33  

T1  

T2  

T3  

Time  

コミット終了  

後のロック獲得  

マスター上での  処理の同時実行状況  

実行処理  

コミット  

T1とT2はスレーブ上で  並列実行される  

T2とT3はスレーブ上で  並列実行される  

Page 34: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Applierスレッドの性能向上 –  ロックベースの並列処理  • 文(STATEMENT)ベースおよび行(ROW)ベースの両フォーマット対応  • スケジュールのポリシーは下記コマンドで制御:    

– logical_clock  –  ロックのタイムスタンプを通じてスケジューリング  – database  –  5.6と同様のスケジューリング  (データベースが異なれば並列実行)  

• スレーブの性能拡張性は引き続き改良!    

34  

mysql> SET slave_parallel_type= [logical_clock|database]

Page 35: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   35  

ユーザスレッドとSenderスレッドの同期の改善  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 36: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

ユーザスレッドとSenderスレッドの同期の改善  • バイナリログに対するユーザスレッドでの書き込みと  Senderスレッドでの読み込みを並列化  – Senderスレッドによるユーザセッション処理のブロックを 小化  – ユーザセッションとSenderスレッドのスループットを向上  

36  

Sender Thread Reads Binary Log User Thread Writes to Binary Log

Sender Thread Reads Binary Log

User Thread Writes to Binary Log

5.7.2以前

5.7.2+  

Page 37: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   37  

Senderスレッドの高速化  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 38: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Senderスレッドの高速化  • アロケートされた送信バッファを毎回解放しないように変更  • より大きな送信バッファが必要な場合は、その際に拡張  • 拡張された送信バッファが使われなくなると動的に縮小  • MySQL  5.7.2でのSenderスレッドの改良:  

– マスターの性能拡張性の向上;  – リソース消費の削減 (CPU);  – 負荷のピーク時のマスター特にDumpスレッドの処理負荷の軽減  

38  

Page 39: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Senderスレッドの高速化  •  mysqlslapを使ったマイクロベンチ

マーク  

•  100万クエリ,  concurrency=200,  commit=1  

•  スレーブ台数を増加させる  (mysqlbinlogをリモートから接続してスレーブのように振る舞わせる)  

•  48  cores  HT  /  512  GB  RAM  /  HDD  

39  

   

0  2000  4000  6000  8000  

10000  12000  14000  16000  

1   2   3   4   5   6   7   8   9  

QpS  

Number  of  Connected    Sender  Threads  

Master’s  Throughput  

MySQL  5.6.16   MySQL  5.7.4  

Page 40: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   40  

準同期レプリケーションの高速化  –  ACK  Receiverスレッド  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  

ACK  Receiver  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Sender  thread  

Page 41: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

準同期レプリケーションの高速化  –  ACK  Receiverスレッド  • 連続したトランザクションがスレーブからのACKをお互いに待たない  

– トランザクションt1とt2を同時にSenderスレッドがスレーブに送る  – それぞれのACKを別のスレッドが受け取る  – t2の準同期のレイテンシにはt1の処理によるレイテンシは含まれない  

• 準同期レプリケーション有効時にスレッドが開始される  

• 準同期レプリケーション無効時にスレッドが停止される

41  

mysql> SET GLOBAL rpl_semi_master_enabled= ON

mysql> SET GLOBAL rpl_semi_master_enabled= OFF

Page 42: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   42  

準同期レプリケーションの高速化:  性能拡張性向上  

Page 43: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能 信頼性

43

Page 44: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   44  

Loss-­‐less準同期レプリケーション  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 45: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   45  

Loss-­‐less準同期レプリケーション  

Master  

Slave  

T1:  INSERT  INTO  t1  VALUES  (1000)  

ACK  

Time  

T2:  SELECT  *  FROM  t1;   empty  set  

execute   prepare   binlog  

relay  log  

commit  execute  

Page 46: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Loss-­‐less準同期レプリケーション  • マスターはスレーブからのACKを受け取ってからコミット  (5.6まではコミット後にスレーブに処理を転送)  – 他のトランザクションはACK待ちの間は該当トランザクションによる変更は見えない  

• マスターに障害が発生した際でも、スレーブに転送されたトランザクションのみが他のトランザクションから見える状態  

• MySQL  5.6までの挙動か新しいLoss-­‐lessを選択可能  

46  

mysql>  SET  rpl_semi_sync_master_wait_point=  [AFTER_SYNC|AFTER_COMMIT]  

Page 47: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   47  

準同期レプリケーション –  複数ACKを待つ  

Insert...  

         

Insert...      

B  

binary  log  

Insert...      

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 48: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

準同期レプリケーション  –  複数ACKを待つ  • 指定したN台のスレーブからACKを受信するまでコミットを行わない  • 動的に設定可能:  

48  

mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count= N

Page 49: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

準同期レプリケーション  –  複数ACKを待つ  • 指定したN台のスレーブからACKを受信するまでコミットを行わない  • 動的に設定可能:  

49  

mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count= N

Master  

Slave  2  

T1:  COMMIT  

ACK  Slave  1  

ACK  

T1:  COMMIT  succeeds  

mysql>  SET  GLOBAL  rpl_semi_sync_master_wait_for_slave_count=  2  

Slave  3  Time

relay  log  

relay  log  

relay  log  ACK  

Page 50: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能 柔軟性

50

Page 51: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   51  

GTIDをテーブルに格納  

Insert...  

         

B  Insert...  

   

relay  log            

Insert...      

A  

binary  log  

Client  Sender  thread  

Receiver  thread  

Applier  Threads  

 Receiver  Meta-­‐data  Update  

 

Applier  Meta-­‐data  Update  

Network  

Page 52: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

GTIDをテーブルに格納  

• バイナリログを有効にしていないスレーブでもGTIDを利用可能  – マスターに昇格する予定のないスレーブでもGTIDを利用した  auto  posiNoning(自動的にトランザクションの進捗を見つける仕組み)を利用可能  

52  

利用例  

Page 53: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

GTIDをテーブルに格納  

• バイナリログ有効時  – GTIDをバイナリログのみに格納  (トランザクション処理の一部として)  – バイナリログのローテーション時にそれまでに実行済みのGTIDを  

• 新しいバイナリログに記録  •  gNd_executedテーブルに記録  

• バイナリログ無効時  – GTIDをgNd_executedテーブルに格納  (トランザクション処理の一部として)  – gNd_executed_compression_periodで設定したトランザクション数毎に「圧縮」  

• GTIDは常に一連のトランザクション処理の一部として格納される  

53  

実装方式  

Page 54: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

GTIDをテーブルに格納  

• GTIDをMySQLのシステムテーブルに格納 (値の範囲を格納)  

• トランザクションのコミット時に各GTIDがテーブルにも格納される  • GTID個別の値から一定間隔毎に値の範囲に「圧縮」する  

– 新しいサーバ変数で間隔を制御可能:  gNd_executed_compression_period  

54  

実装方式  

CREATE TABLE gtid_executed( source_uuid CHAR(36) NOT NULL, interval_start BIGINT NOT NULL, interval_end BIGINT NOT NULL, PRIMARY KEY(source_uuid, interval_start) );

mysql> SET GLOBAL gtid_executed_compression_period= N;(N – トランザクション数)

Page 55: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   55  

マルチソースレプリケーション  

S  

M   M   1台のスレーブが複数のマスターを持つ構成  M   M  

1台のサーバにデータを集約する構成:  •  バックアップを1台で実行;  •  分析用途の複雑なクエリの実行;  •  クラスタ間レプリケーションのデータハブ  

Page 56: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

マルチソースレプリケーション  •  1台のサーバ(スレーブ)が複数のソース(マスター)からレプリケーション  • 複数のチャネル(チャネル:  接続スレッド、リレーログ、Applierスレッド)は  

個別に稼働/停止可能  • マルチスレッドスレーブとの統合  

– 各チャネルがそれぞれのマルチスレッドApplierスレッドの管理  

• パフォーマンススキーマの新しいテーブルにて稼働監視可能  – replicaNon_applier_status_by_coordinator  テーブルにて  

チャネル毎のApplierスレッドが複数あることが確認可能  – replicaNon_connecNon_statusテーブルにて  

ソース毎のマスターへの接続スレッドが複数あることが確認可能  

56  

Page 57: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

マルチソースレプリケーション

• CHANGE MASTER TO実行時にFOR CHANNELでチャネルを指定  

• 指定したチャネルだけレプリケーションを開始/停止することも可能  

• 指定したチャネルだけレプリケーション設定をリセットすることも可能  

57

CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD='', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

START SLAVE thread_types FOR CHANNEL 'master-1'; START SLAVE thread_types FOR CHANNEL 'master-1';

RESET SLAVE thread_types FOR CHANNEL 'master-1';

Page 58: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

マルチソースレプリケーション  • GTIDとの統合  • クラッシュセーフスレーブとの統合  

– 障害復旧時にレプリケーションの進捗関連のメタデータをテーブルからリカバリ  – --master-info-repository=TABLE – --relay-log-info-repository=TABLE

• ソースの数には事実上上限はない  (標準バイナリでは256,  ソースからビルドすれば変更可能)  

• 各ソースを個別に設定可能  

58  

Page 59: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  5.7  レプリケーション新機能 その他の改良点

59

Page 60: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

“細かな改良”,  でも実践で役立つ数多くの改良点!  •  マルチスレッドのApplierスレッドで、失敗したトランザクションの再試行が可能  •  マルチスレッドのApplierスレッドのコミット順を維持するオプション  

•  mysqlbinlogツールにSSLオプション  

•  mysqlbinlogにデータベース名のリライトルール適用可能  

•  指定されたGTIDになるまでApplierスレッドの処理を一時的に停止する関数  –  WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(gtid_set[, timeout][,channel]) –  WAIT_FOR_EXECUTED_GTID_SET(gtid_set[, timeout])

• MySQLのクライアントサーバ間プロトコルにGITDの情報を返す  •  バイナリログ利用時にもXAトランザクションをサポート  •  デフォルト値の変更 例)  binlog_format=ROW,  sync_binlog=1  

60  

Page 61: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Fabric シャーディングと高可用性

61

Page 62: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Fabric  1.5  

•  高可用性構成  – サーバ群を監視し、マスタへの自動昇格  – アプリケーションに影響を 小限に抑える

フェールオーバー  •  シャードによるスケールアウトも可能  

– アプリケーションはシャードキーを提供  –  Range  または Hash  – シャード管理ツール  – グローバルアップデート &  テーブル  

•  接続オプション    –  Fabric対応Connectors    – MySQL  Router  

•  OpenStackのサーバプロビジョニング  –  Nova  および Neutron  APIをサポート  

62  

高可用性構成とシャードによる拡張性  

MySQL  Fabric  

Router  

ApplicaNon  

Read-­‐slaves  

mappings  

SQL  

HA  group  

Read-­‐slaves  

HA  group  

Connector  

ApplicaNon  

Page 63: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Fabric  1.6  

•  高可用性構成  – サーバ群を監視し、マスタへの自動昇格  – アプリケーションに影響を 小限に抑える

フェールオーバー  – 単一障害点無し  (SPOF)  

•  シャードによるスケールアウトも可能  – アプリケーションはシャードキーを提供  –  Range  または  Hash  – シャード管理ツール  – グローバルアップデート  &  テーブル  

•  接続オプション    –  Fabric対応Connectors    – MySQL  Router  

•  OpenStackのサーバプロビジョニング  –  Nova  および  Neutron  APIをサポート  

63  

High  Availability  +  Sharding-­‐Based  Scale-­‐out  

Router  

ApplicaNon  

Read-­‐slaves  

mappings  

SQL  

HA  group  

Read-­‐slaves  

HA  group  

Connector  

ApplicaNon  

BETA  

Fabric    node  cluster  

Page 64: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Fabric  1.6  

•  高可用性構成  – サーバ群を監視し、マスタへの自動昇格  – アプリケーションに影響を 小限に抑える

フェールオーバー  – 単一障害点無し  (SPOF)  

•  シャードによるスケールアウトも可能  – アプリケーションはシャードキーを提供  –  Range  または  Hash  – シャード管理ツール  – グローバルアップデート  &  テーブル  

•  接続オプション    –  Fabric対応Connectors    – MySQL  Router  

•  OpenStackのサーバプロビジョニング  –  Nova  および  Neutron  APIをサポート  

64  

High  Availability  +  Sharding-­‐Based  Scale-­‐out  

Fabric    node  cluster  

Router  

ApplicaNon  

Read-­‐slaves  

mappings  

SQL  

HA  group  

HA  group  

Connector  

ApplicaNon  

BETA  

Page 65: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Router  GA 接続とトランザクションのルーティング

65

Page 66: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Router  • 開発の背景  

– MySQL  Fabricを透過的に利用したい  •  Connectorの変更不要  •  Fabric対応Connectorがない言語からの利用  (e.g.,  PHP,  Ruby,  Perl,  C).  

– 参照更新および参照のみの処理を配信  • どのサーバがマスターかを事前に知る必要がない  • 新しいマスターへの透過的なフェールオーバー  

• 必要となるソフトウェア  – 多機能かつ純正ツール:  MySQL  Router    

66  

M  

Router  

App  

M   M  

Fabric  

Page 67: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

New!  MySQL  Router  • 接続とトランザクションのルーティング  • MySQLアプリケーションからのアクセスをシンプルに  

– MySQL  Fabricサポートを簡単に  • 高可用性構成  • シャーディング  

– MySQL  グループレプリケーション  – 各種クラスタリング構成や高可用性構成  

• プラグインAPIによる拡張性  • さらなるプラグインの追加  –  データ集約、バイナリログ、ロードバランス  …  

– ご要望お待ちしております  

67  

Page 68: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQL  Router  • 特徴  

– 高性能  – プラグインアーキテクチャ  – 簡単なセットアップ、設定、実装  

• 機能  – 接続の転送とシンプルなロードバランス  – FabricのHAグループのシームレスな  

フェールオーバー  – Fabric無しでのフェールオーバー    (サードパーティ製のツール利用).  

– グループレプリケーション利用時の競合削減  

68  

M  

Router  

App  

M   M  

Fabric  

Page 69: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Labsで開発中の機能 MySQL  Group  ReplicaHon  Plugin

69

Page 70: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |   70  

MySQLグループレプリケーションプラグイン  

M   M   M   M   M  

レプリケーショングループ  

•  マルチマスター型構成  •  グループメンバーの自動管理と障

害検知  

•  サーバのフェールオーバー不要  

•  自動再構成  

•  単一障害点無し  

•  シェアードナッシング型  

•  「ステートマシン」レプリケーション  

•  InnoDB互換、特殊なハードウェア不要  

Page 71: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQLグループレプリケーションプラグイン  • クラウドベースの環境にて、「ElasNc」な要件に適合  

– API経由でMySQLサーバのコア機能と統合  – GTIDおよび行ベースレプリケーションとの統合  – performance  schemaのテーブルにて稼働監視  – 「ElasNc」かつ自動復旧型:  サーバの追加や削除を可能な限り自動化  

71  

Page 72: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

MySQLグループレプリケーション  • コミュニティからのフィードバックをより取り入れるために  labs.mysql.com  でより高い頻度でリリース  

72  

2014-­‐Sep-­‐29  Labs  release:  0.2.0  

2015-­‐Apr-­‐06  Labs  release:  0.3.0  

2015-­‐Aug-­‐06  Labs  release:  0.4.0  

2015-­‐Sep-­‐14  Labs  release:  0.5.0  

独立したプラグインに変更し  独自のリリースサイクルに  

Page 73: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

ロードマップ  

73

Page 74: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

What  is  Next? • MySQL  Group  ReplicaHon  

– より高頻度でリリース

– パフォーマンスの向上、安定性と使いやすさ

• MySQLレプリケーションの使いやすさ

– より詳細な稼働統計情報とレプリケーション関連パフォーマンススキーマの拡張

– よりシンプルな管理コマンド

• MySQLレプリケーションの性能

– マルチスレッドスレーブの性能改善

– 準同期レプリケーションの改善

• MySQL  FabricとMySQL  Routerの互換性向上

74

Page 75: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

Focus  

75  

MySQL  ReplicaHon  

Performance   High  Availability  

Ease  of  Use   IntegraHon  

Recoverability

Automation of Fail-over and crash recovery

Configurability

GTIDs

HPC optimizations

MySQL Router Integration

More Modularization Pluggability

Modernization Of Replication Interfaces

MySQL Fabric Integration

Multi-threaded Applier

Address Contention Points

MySQL Group Replication

Leverage Consensus

Further P_S Instrumentation

Simplify UI

Page 76: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

まとめ

76

Page 77: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)

Copyright  ©  2015,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |  

まとめ  •  MySQL  5.7の主なレプリケーション関連の改善項目:  

– 準同期レプリケーションの柔軟性向上かつ性能改善  – バイナリログへのアクセス競合の削減  – スキーマ内のマルチスレッドスレーブによる性能改善  – オンラインでの設定変更:  GTID,  レプリケーションフィルタ,  各種設定項目  – 監視項目の増加とパフォーマンススキーマ  – マルチソースレプリケーションによるより柔軟な構成  – 全体的な改良:  トランザクションのリトライ、コミット順序の維持、XAサポートなど  

•  Labリリースにてさらなる新機能の開発:  グループレプリケーションプラグインなど  

77  

Page 78: MySQL&5.7& レプリケーション新機能 › presentations › 20151030_03...2015/10/30  · – database&–5.6と同様のスケジューリング(データベースが異なれば並列実行)