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.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL InnoDB Clusterによる高可用性の実現
日本オラクル株式会社
MySQL Glo...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
Safe Harbor Statement
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明する...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
3
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、お...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
4
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、お...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
InnoDB Cluster
5
“安定したサービスレベル、機会損失を避ける為に、
高可用性は、MyS...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 6
MySQL InnoDB Cluster: ビジョン
• 統合製品:MySQL
-全てのコンポーネ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Connector
Application
MySQL Router
MySQL Conn...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
M
M M
MySQL Connector
Application
MySQL Router
MySQ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
9
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、お...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
コンポーネント# 1
MySQL Group Replication
MySQLに標準実装された、高可...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 11
asynchronous (native)
Since 3.23 (2001-01)
semi-...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
MySQL Group Replicationとは?
• レプリケーション機能をベースとした、MySQLの...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
• シングルプライマリーモード (デフォルト)
– グループ内の1ノードだけが読み書き可能な状態
– 通常...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
参考:シングルプライマリーモード
• プライマリサーバーのメンバーは、SQL文を実行することによって確認可...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
GTIDをフルサポート
• 全グループメンバーは同じUUID、グループ名を持つ
15
M M M M M
...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
GTIDをフルサポート
• グループ外のサーバーからグループにレプリケート可能
• グローバル識別子を維持...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.
GTIDをフルサポート
• グループからグループ外のサーバーにレプリケート可能
• グローバル識別子は維持...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
グループレプリケーションステータス
• プラグインをロードし、レプリケーションをスタート
• グループ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
参考: MEMBER_STATE
19
フィールド値 概要 グループの同期状態
ONLINE メンバは...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
グループレプリケーションステータス
• グループによってコミットされたトランザクション、キューの増加状...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
• MySQL Enterprise MonitorにてInnoDB clustersを包括的に監視
...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
必要要件
• 現状では、IPv4のみサポート
• 低レイテンシ、広帯域の安定したネットワーク
• In...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
制限事項
• グループ内の最大メンバー数は9メンバー
• バイナリログのチェックサムは未サポート(bi...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
追加制限事項
マルチマスターモードの場合
–スキーマ変更処理中は別のサーバーから同じオブジェクトに対し...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
その他の考慮事項
• スプリットブレイン等を考慮して、3台以上の奇数でのグループ構成を推奨
– 現時点...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
コンポーネント# 2
MySQL Router
透過的にアプリケーション接続をルーティング
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Router
• 透過的にクライアント接続をルーティング
– ロードバランシング (R/O...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Router: 2.1
• InnoDBクラスタをネイティブサポート
– グループレプリケ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
補足:MySQL Router設定ファイル
29
-bash-4.2$ mysqlrouter --b...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
コンポーネント# 3
MySQL Shell
開発、セットアップ、管理、オーケストレーション、
および...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell
31
全ての運用管理タスクの為に、統一された単一クライアント
App Serv...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell:管理用API
• mysql-js> dba.help()
• グローバル変数...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 33
mysql-js> dba.help()
The global variable 'dba' i...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
34
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell: MySQLインスタンスの設定確認
shell> mysqlsh root@l...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell: InnoDB Clusterの設定
mysql-js> cluster = ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell: MySQL Routerの設定
shell> mysqlrouter --b...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell: InnoDB Clusterの設定確認
shell> mysqlsh roo...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
MySQL Shell: InnoDB Clusterのステータス確認
mysql-js> clust...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
DEMO:シングルマスターモード
40
PORT: 3310
PORT: 3320
PORT: 333...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
DEMO:マルチマスターモード
41
PORT: 3350
PORT: 3360
PORT: 3370...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
42
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
シングルデータセンター構成
43
Application Servers
MySQL Router i...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
マルチデータセンター構成 (シングルグループ)
44
MySQL Database Service
G...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
局地災害対応構成
45
Async Replication
Active Data Center Ba...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
アクティブ/アクティブ マルチデータセンター構成
46
Async Replication
Regio...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
47
InnoDBクラスタのご紹介
コンポーネント
セットアップ、監視、...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 48
MySQL HA
Out-Of-Box HA
Read Scale-Out
Async Repl...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
S1 S2 S3 S4 S…
M
M M
MySQL Connector
Application
My...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
S1 S2 S3 S4 S…
M
M M
MySQL Connector
Application
My...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Summary
可用性
管理工数
拡張性
InnoDB Clusterは、データベースの可用性をGro...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 52
30日間トライアル
MySQL Enterprise Edition & Cluster CGE...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Oracle Cloud: MySQL Cloud Service
• MySQL Enterpris...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 54
有難うございました
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 55
Appendix:
Enterprise Edition
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 56
MySQLのコミュニティ版と商用版
MySQL はデュアルライセンスソフトウェアです。ビジネスの...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 57
MySQL Enterprise Edition のサービスカテゴリー
管理ツール拡張機能 サポ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 58
MySQL Editions
Standard Edition Enterprise Editi...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 59
MySQL Editions
Standard Edition Enterprise Editi...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 60
MySQL Enterprise Edition管理ツールと拡張機能概要
目的 MySQL En...
MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)
Upcoming SlideShare
Loading in …5
×

MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)

4,664 views

Published on

InnoDB ClusterによるMySQLの高可用性構成
- MySQL Group Replication
- MySQL Router
- MySQL Shell

Published in: Software

MySQL InnoDB Clusterによる高可用性構成(DB Tech Showcase 2017)

  1. 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Clusterによる高可用性の実現 日本オラクル株式会社 MySQL Global Business Unit Master Principal Sales Consultant/Shinya Sugiyama Copyright © 2017, Oracle and/or its affiliates. All rights reserved. db tech showcase Tokyo 2017 / Session:B21 Date: 2017/09/06
  2. 2. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはでき ません。以下の事項は、マテリアルやコード、機能を提供することをコミットメントするも のではない為、購買決定を行う際の判断材料になさらないで下さい。 オラクル製品に関して記載されている機能の開発、リリースおよび時期については、 弊社の裁量により決定されます。 2
  3. 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 3 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  4. 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 4 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  5. 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | InnoDB Cluster 5 “安定したサービスレベル、機会損失を避ける為に、 高可用性は、MySQLにとっても最も重要な中核機能の一つです” 機会損失 顧客満足度低下 ダウンタイム $ InnoDB Clusterで更に高いレベルの可用性をサポートします!!
  6. 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 6 MySQL InnoDB Cluster: ビジョン • 統合製品:MySQL -全てのコンポーネントを同時開発 -全てのコンポーネントを同時検証 -一つのパッケージとして提供 • 使い易さ -統合クライアント:MySQLシェル -容易なパッケージング -統合オーケストレーション -同種サーバー群 • 新しい技術と柔軟性 - SQLとNoSQL処理が可能 -非同期API (mysqlx, protobuf) -開発フレンドリー • 参照/書き込みのスケールアウト -シャードされたクラスタ - N個のレプリカセットの連合システム クロスシャード操作のサポート -各レプリカセットは各シャードを管理 “高可用性とスケーリング機能を包括的に備えた単一製品として、 使い易いエンドツーエンドの統合ソリューションを提供”
  7. 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL InnoDB Cluster: 全体的アーキテクチャー MySQL InnoDB cluster MySQL Enterprise Monitor … 7 Group Replication MySQL Server 5.7.17 or higher MySQL Shell 1.0.9 or higher MySQL Router 2.1.3 or higher
  8. 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA Group Replication 8 アプリケーションは MySQL Routerに接続 Group Replicationによる高可用性 グループとメタデータの管理 +-------------------------------+ | Database | +-------------------------------+ | information_schema | | mysql | | mysql_innodb_cluster_metadata | | performance_schema | | sys | +-------------------------------+ MySQL InnoDB Cluster: 内部的アーキテクチャー mysql_innodb_cluster_metadata.* performance_schema.replication_group_members performance_schema.replication_group_member_stats mysql-js> cluster.status() { "clusterName": “NewAppCluster", "defaultReplicaSet": { "address": “hanode1:3306", "status": "ONLINE", MySQL Shellで設定管理 JavaScript, python
  9. 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 9 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  10. 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | コンポーネント# 1 MySQL Group Replication MySQLに標準実装された、高可用性のレプリカセット
  11. 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 11 asynchronous (native) Since 3.23 (2001-01) semi-synchronous (plugin) Since 5.5 (2010-12) Multi-Source (native) Since 5.7(2015-10) group replication (plugin) 5.7.17 (2016-12-12) MySQLレプリケーション M S transactions M S transactions M MM transactions, membership, coordination M S transactions MS 参考: https://dev.mysql.com/doc/refman/5.7/en/group-replication-primary-secondary-replication.html
  12. 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. MySQL Group Replicationとは? • レプリケーション機能をベースとした、MySQLのマニュアルフェイルオーバー 処理が不要な高可用性ソリューション • MySQL 5.7.17以降でプラグインとして追加インストール可能 sql> INSTALL PLUGIN group_replication SONAME 'group_replication.so'; • グループメンバーの管理と障害検知を自動化 – 自動的なサーバーのフェイルオーバー – 構成の拡張/縮小の柔軟性 – 単一障害点無し – 自動的にレプリケーションを再構成 • プラットフォーム対応(MySQL準拠) – Linux, Windows, Solaris, OSX, FreeBSD 12 Application MySQL Nodes
  13. 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. • シングルプライマリーモード (デフォルト) – グループ内の1ノードだけが読み書き可能な状態 – 通常のレプリケーション同様に利用する事が可能 https://dev.mysql.com/doc/refman/5.7/en/group-replication-single-primary-mode.html • マルチプライマリーモード (マルチマスター) – Active/Active構成でどのノードからでも更新可能 – COMMIT先勝ちによるトランザクション競合の自動解消 https://dev.mysql.com/doc/refman/5.7/en/group-replication-multi-primary-mode.html 13 MySQL Group Replicationとは?
  14. 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. 参考:シングルプライマリーモード • プライマリサーバーのメンバーは、SQL文を実行することによって確認可能 14 mysql> SELECT * FROM performance_schema.replication_group_members; +-------------------------+------------------------------------+-------------+-----------+------------+ |CHANNEL_NAME |MEMBER_ID |MEMBER_HOST |MEMBER_PORT|MEMBER_STATE| +-------------------------+------------------------------------+-------------+-----------+------------+ |group_replication_applier|919a7d77-9ff3-11e6-acb8-080027d65c57|replications | 3310|ONLINE | |group_replication_applier|9c8e6f77-9ff3-11e6-b1d1-080027d65c57|replications | 3320|ONLINE | |group_replication_applier|ac0ec52b-9ff3-11e6-b801-080027d65c57|replications | 3330|ONLINE | +-------------------------+------------------------------------+-------------+-----------+------------+ mysql> SELECT * FROM performance_schema.global_status WHERE VARIABLE_NAME='group_replication_primary_member'; +----------------------------------+--------------------------------------+ | VARIABLE_NAME | VARIABLE_VALUE | +----------------------------------+--------------------------------------+ | group_replication_primary_member | 919a7d77-9ff3-11e6-acb8-080027d65c57 | +----------------------------------+--------------------------------------+
  15. 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. GTIDをフルサポート • 全グループメンバーは同じUUID、グループ名を持つ 15 M M M M M INSERT y; Will have GTID: group_name:2 INSERT x; Will have GTID: group_name:1 mysql> SET GLOBAL group_replication_group_name= "00000000-1111-2222-3333-123456789ABC";
  16. 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. GTIDをフルサポート • グループ外のサーバーからグループにレプリケート可能 • グローバル識別子を維持 16 M M M M M 競合も検出される
  17. 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. GTIDをフルサポート • グループからグループ外のサーバーにレプリケート可能 • グローバル識別子は維持 17 M M M M M
  18. 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | グループレプリケーションステータス • プラグインをロードし、レプリケーションをスタート • グループ・レプリケーションのグループメンバーの状況を確認 18 mysql> SET GLOBAL group_replication_group_name= "00000000-1111-2222-3333-123456789abc"; mysql> START GROUP_REPLICATION; mysql> SELECT * FROM performance_schema.replication_group_members¥G *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier MEMBER_ID: 698f11c8-0397-11e7-aae1-080027d65c57 MEMBER_HOST: replications MEMBER_PORT: 63301 MEMBER_STATE: ONLINE *************************** 2. row *************************** CHANNEL_NAME: group_replication_applier MEMBER_ID: 713ad572-0397-11e7-aca3-080027d65c57 MEMBER_HOST: replications MEMBER_PORT: 63302 MEMBER_STATE: ONLINE ... https://dev.mysql.com/doc/refman/5.7/en/group-replication-replication-group-members.html
  19. 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 参考: MEMBER_STATE 19 フィールド値 概要 グループの同期状態 ONLINE メンバはグループメンバとして完全に機能する準備が整っています。 クライアントは接続してトランザクションの実行を開始できます。 Yes RECOVERING メンバーはアクティブなグループメンバーになる過程にあり、ドナーか らステータスの情報を受け取り、復旧プロセスを進めている状況です。 No OFFLINE プラグインはロードされていますが、メンバーはどのグループにも属し ていない状況。 No ERROR 回復フェーズ、または変更を適用している時にエラーが発生した状態。 No UNREACHABLE 特定のサーバーがクラッシュ若しくは切断されて、到達不能であると 疑われる時に、サーバーの状態を「到達不能」として示します。 No
  20. 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | グループレプリケーションステータス • グループによってコミットされたトランザクション、キューの増加状況、 競合の検出数、検査されたトランザクションの数等を確認出来ます。 20 mysql> SELECT * FROM performance_schema.replication_group_member_stats¥G *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier VIEW_ID: 14896410386000092:7 MEMBER_ID: 78b1d98a-0397-11e7-aef2-080027d65c57 COUNT_TRANSACTIONS_IN_QUEUE: 0 COUNT_TRANSACTIONS_CHECKED: 2 COUNT_CONFLICTS_DETECTED: 0 COUNT_TRANSACTIONS_ROWS_VALIDATING: 0 TRANSACTIONS_COMMITTED_ALL_MEMBERS: 00000000-1111-2222-3333-123456789abc:1-29 LAST_CONFLICT_FREE_TRANSACTION: 00000000-1111-2222-3333-123456789abc:29 1 row in set (0.00 sec) https://dev.mysql.com/doc/refman/5.7/en/group-replication-replication-group-member-stats.html
  21. 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | • MySQL Enterprise MonitorにてInnoDB clustersを包括的に監視 – トポロジビュー , 詳細なメトリックとグラフ, ベストプラクティスアドバイザー • Group Replicationのモニタリング 21 グループレプリケーションステータス
  22. 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 必要要件 • 現状では、IPv4のみサポート • 低レイテンシ、広帯域の安定したネットワーク • InnoDBストレージエンジン • 全てのテーブルに主キーが必要※ (Certification処理で必要) • バイナリログを出力し、フォーマットはROW • グローバルトランザクション識別子(GTID)有効 • その他、以下の設定 – master_info_repository=TABLE – relay_log_info_repository=TABLE – log_slave_updates=ON – transaction_write_set_extraction=XXHASH64 22 参考 : https://dev.mysql.com/doc/refman/5.7/en/group-replication-requirements.html ※ Non-null unique keyでも対応可能
  23. 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 制限事項 • グループ内の最大メンバー数は9メンバー • バイナリログのチェックサムは未サポート(binlog_checksum=NONE を設定) • セーブポイントは使用できない ( < MySQL5.7.19 ) • グループ内のサーバーとの連携処理において、LOCK TABLES、UNLOCK TABLES、GET_LOCK関数は考慮されない 23 参考 : https://dev.mysql.com/doc/refman/5.7/en/group-replication-limitations.html
  24. 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 追加制限事項 マルチマスターモードの場合 –スキーマ変更処理中は別のサーバーから同じオブジェクトに対して DML, DDLによりオブジェクトやデータを変更できない http://lefred.be/content/mysql-group-replication-videocast-1/ –カスケードオプション付きの外部キー制約は未サポート –SERIALIZABLE分離レベルは未サポート – 他のメンバーとトランザクションが競合した場合、COMMIT時にトランザクションが 破棄される可能性があることを考慮して、トランザクションを適切なサイズに保ち、 アプリケーションでリトライ処理等を実装 – グループ内のサーバーとの連携処理において、ギャップロックを考慮して READ COMMITED分離レベルを推奨(デフォルトはREPEATABLE READ) 24
  25. 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | その他の考慮事項 • スプリットブレイン等を考慮して、3台以上の奇数でのグループ構成を推奨 – 現時点では、スプリットブレイン発生時の少数グループは読み取り専用モードになる (3台で構成し、2台と1台のグループに分断された場合、2台のグループはグループ・ レプリケーションとして稼働し続け、1台のグループは読み取り専用モードになる) 25 https://dev.mysql.com/doc/refman/5.7/en/group-replication-network-partitioning.html Group Size Majority Instant Failures Tolerated 1 1 0 2 2 0 3 2 1 4 3 1 5 3 2 6 4 2 7 4 3 例) ネットワークパーティショニング
  26. 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | コンポーネント# 2 MySQL Router 透過的にアプリケーション接続をルーティング
  27. 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Router • 透過的にクライアント接続をルーティング – ロードバランシング (R/O) – アプリケーション接続フェイルオーバー (R/W) • ステートレスなデザインにより、容易にクライアント 接続のHAルーティングが可能 – ローカルルータはアプリスタックの一部として機能 27 透過的な接続ルーティング ” MySQL Routerを使用する事で、スタンドアロンのMySQLインスタンスを既存の アプリケーションに影響を与えずに、高可用性で分散処理可能なInnoDBクラスタ に容易に移行する事が可能!”
  28. 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Router: 2.1 • InnoDBクラスタをネイティブサポート – グループレプリケーションの構成を認識 – 各メンバーに格納されたメタデータスキーマを利用して、 自身をブートストラップし、InnoDBクラスタのクライアント ルーティングを設定 • InnoDBクラスタへのルーティングを動的にコントロール可能 – マルチマスター及びシングルマスターモードをサポート • Core improvements – 内蔵されたKeyringによる、簡単で安全なパスワード管理 28 App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate “新しいmetadata_cacheプラグインを備えたMySQL Router 2.1では、 透過的なクライアント接続のルーティングとInnoDBクラスタへのフェールオーバーをサポート!“
  29. 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 補足:MySQL Router設定ファイル 29 -bash-4.2$ mysqlrouter --bootstrap root@server1:3306 --user=mysql -bash-4.2$ cat /home/mysql/mysqlrouter/mysqlrouter.conf # File automatically generated during MySQL Router bootstrap [DEFAULT] name=system user=mysql keyring_path=/home/mysql/mysql-router/data/keyring master_key_path=/home/mysql/mysql-router/mysqlrouter.key [logger] level = INFO [metadata_cache:testCluster] router_id=5 bootstrap_server_addresses=mysql://server1:3306,mysql://server2:3306,mysql://server3:3306 user=mysql_router5_je3r5179e17p metadata_cluster=testCluster ttl=300 [routing:testCluster_default_rw] bind_address=0.0.0.0 bind_port=6446 destinations=metadata-cache://testCluster/default?role=PRIMARY mode=read-write protocol=classic [routing:testCluster_default_ro] bind_address=0.0.0.0 bind_port=6447 destinations=metadata-cache://testCluster/default?role=SECONDARY mode=read-only protocol=classic [routing:testCluster_default_x_rw] bind_address=0.0.0.0 bind_port=64460 destinations=metadata-cache://testCluster/default?role=PRIMARY mode=read-write protocol=x [routing:testCluster_default_x_ro] bind_address=0.0.0.0 bind_port=64470 destinations=metadata-cache://testCluster/default?role=SECONDARY mode=read-only protocol=x 起動時にbootstrap_server_addressesに リストアップされている、サーバーにアクセスし Group Replicationの構成情報を取得 書き込み処理の分散 読み込み処理の分散 Xプロトコルをサポート
  30. 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | コンポーネント# 3 MySQL Shell 開発、セットアップ、管理、オーケストレーション、 および監視用に対応した単一ツール
  31. 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell 31 全ての運用管理タスクの為に、統一された単一クライアント App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate • 多言語対応: JavaScript, Python, and SQL – 容易なスクリプト化 • ドキュメントとリレーショナルモデルの両方をサポート • 開発および管理用に完全なAPIを提供 ”MySQL Shell provides the developer and DBA with a single intuitive, flexible, and powerful interface for all MySQL related tasks!” [root@misc01 admin]# mysqlsh --help | egrep -i "Start in" --sql Start in SQL mode using a node session. --sqlc Start in SQL mode using a classic session. --js Start in JavaScript mode. --py Start in Python mode. [root@misc01 admin]# mysqlsh -f setup-innodb-cluster.js
  32. 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell:管理用API • mysql-js> dba.help() • グローバル変数 ‘dba’でMySQLの管理用APIにアクセス可能 • DBA管理オペレーション – Manage MySQL InnoDB clusters • クラスター作成 • MySQLインスタンスの検証 • MySQLインスタンスの構築 • クラスターの状況を確認 • MySQLインスタンスの開始・停止 • クラスタの構成変更 データベース管理者向けインターフェース App Servers with MySQL Router MySQL Group Replication MySQL Shell Setup, Manage, Orchestrate 32
  33. 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 33 mysql-js> dba.help() The global variable 'dba' is used to access the MySQL AdminAPI functionality and perform DBA operations.It is used for managing MySQL InnoDB clusters. The following properties are currently supported. - verbose Enables verbose mode on the Dba operations. The following functions are currently supported. - createCluster Creates a MySQL InnoDB cluster. - deleteLocalInstance Deletes an existing MySQL Server instance on localhost. - deployLocalInstance Creates a new MySQL Server instance on localhost. - dropMetadataSchema Drops the Metadata Schema. - getCluster Retrieves a cluster from the Metadata Store. - help Provides help about this class and it's members - killLocalInstance Kills a running MySQL Server instance on localhost. - resetSession Sets the session object to be used on the Dba operations. - startLocalInstance Starts an existing MySQL Server instance on localhost. - stopLocalInstance Stops a running MySQL Server instance on localhost. - validateInstance Validates an instance for usage in Group Replication. For more help on a specific function use dba.help('<functionName>') e.g. dba.help('deployLocalInstance') 1台のサーバーで検証する場合は、 Sandboxモードが利用可能。 dba.deploySandboxInstance(3310) 参照: https://dev.mysql.com/doc/dev/mysqlsh-api-javascript/1.0/annotated.html
  34. 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 34 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  35. 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: MySQLインスタンスの設定確認 shell> mysqlsh root@localhost mysql-js> dba.checkInstanceConfiguration(‘localhost:3306’) mysql-js> dba.configureLocalInstance(‘localhost:3306’) 35 参照: https://dev.mysql.com/doc/refman/5.7/en/mysql-innodb-cluster-working-with-production-deployment.html
  36. 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: InnoDB Clusterの設定 mysql-js> cluster = dba.createCluster(‘NewAppCluster') mysql-js> cluster.addInstance('root@hanode1:3306') mysql-js> cluster.addInstance('root@hanode2:3306') mysql-js> cluster.addInstance('root@hanode3:3306') # to persist the config changes on each machine shell> mysqlsh root@localhost mysql-js> dba.configureLocalInstance(‘localhost:3306’) 36
  37. 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: MySQL Routerの設定 shell> mysqlrouter --bootstrap hanode1:3306 shell> mysqlrouter & shell> mysqlsh root@localhost:6446 37
  38. 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: InnoDB Clusterの設定確認 shell> mysqlsh root@localhost:6446 mysql-js> cluster = dba.getCluster() mysql-js> cluster.status() 38
  39. 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | MySQL Shell: InnoDB Clusterのステータス確認 mysql-js> cluster.status() { "clusterName": "mylabcluster", "defaultReplicaSet": { "name": "default", "status": "OK", "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", "topology": { "hanode1:3306": { "address": "hanode1:3306", "mode": "R/W", "readReplicas": {}, "role": "HA", "status": "ONLINE" }, … 39
  40. 40. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | DEMO:シングルマスターモード 40 PORT: 3310 PORT: 3320 PORT: 3330 dba.deploySandboxInstance(3310, {password:'Welcome1'}) dba.deploySandboxInstance(3320, {password:'Welcome1'}) dba.deploySandboxInstance(3330, {password:'Welcome1'}) cluster = dba.createCluster('singleCluster') cluster.addInstance('root:Welcome1@localhost:3320') cluster.addInstance('root:Welcome1@localhost:3330') mysqlrouter --bootstrap root:Welcome1@localhost:3310 --force --user=mysql PORT: 3310 PORT: 3320 PORT: 3330 ① localhostに3つインスタンスを構築 ② グループレプリケーション設定 ③ MySQL Routerの初期設定 ④ MySQL Router経由の接続とPRIMARY障害発生時の挙動確認 mysql -u root -pWelcome1 -h 127.0.0.1 -P 6446 -e "select 'R-Port:6446',@@hostname,@@port;" mysql -u root -pWelcome1 -h 127.0.0.1 -P 6447 -e "select 'R-Port:6447',@@hostname,@@port;"
  41. 41. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | DEMO:マルチマスターモード 41 PORT: 3350 PORT: 3360 PORT: 3370 dba.deploySandboxInstance(3350, {password:'Welcome1'}) dba.deploySandboxInstance(3360, {password:'Welcome1'}) dba.deploySandboxInstance(3370, {password:'Welcome1'}) cluster = dba.createCluster('multiCluster', {multiMaster:true,force:true}) cluster.addInstance('root:Welcome1@localhost:3360') cluster.addInstance('root:Welcome1@localhost:3370') mysqlrouter --bootstrap root:Welcome1@localhost:3350 --force --user=mysql PORT: 3350 PORT: 3360 PORT: 3370 ① localhostに3つインスタンスを構築 ② グループレプリケーション設定 ③ MySQL Routerの初期設定 ④ MySQL Router経由の接続とPRIMARY障害発生時の挙動確認 mysql -u root -pWelcome1 -h 127.0.0.1 -P 6446 -e "select 'R-Port:6446',@@hostname,@@port;"
  42. 42. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 42 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  43. 43. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | シングルデータセンター構成 43 Application Servers MySQL Router in Stack MySQL Database Service Group Replication
  44. 44. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | マルチデータセンター構成 (シングルグループ) 44 MySQL Database Service Group Replication Data Center 1 Data Center 2 Clients データセンター間の ネットワークLatencyに依存
  45. 45. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 局地災害対応構成 45 Async Replication Active Data Center Backup Data Center Clients 局地災害発生時に、 アプリケーションの接続を 変更し対応
  46. 46. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | アクティブ/アクティブ マルチデータセンター構成 46 Async Replication Regional Data Center Regional Data Center Regional ClientsRegional Clients クライアントの接続は、 地域毎のAPサーバーに それぞれ接続する構成 mysql_innodb_cluster_metadata が同期されないようにレプリケー ション除外設定する必要あり ※ MySQL8.0以降推奨
  47. 47. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Program Agenda 47 InnoDBクラスタのご紹介 コンポーネント セットアップ、監視、および管理 アーキテクチャー 今後の機能拡張 1 2 3 4 5
  48. 48. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 48 MySQL HA Out-Of-Box HA Read Scale-Out Async Replication + Auto Failover Write Scale-Out ShardingStep1 Step2 Step3 * InnoDB Cluster GA!
  49. 49. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA MySQL InnoDB Cluster: Architecture – Step 2 Group Replication Read-Only Slaves 49 【現状】 グループレプリケーションをマスターとして参照して いるスレーブは、参照先のノードがダウンした場合、 マニュアルでCHANGE MASTERを実行し、 他のノードに参照先を変更する必要有り。 【機能拡張】 グループレプリケーションをマスターとして参照して いるスレーブは、参照先のノードがダウンした場合、 自動的に稼働中の他のノードに参照先を変更。
  50. 50. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA ReplicaSet1 S1 S2 S3 S4 S… M M M MySQL Connector Application MySQL Router HA ReplicaSet2 ReplicaSet3 MySQL Connector Application MySQL Router MySQL InnoDB Cluster: Architecture – Step 3 S1 S2 S3 S4 M M M HA 50 Groupを分ける事による、 書き込みのシャーディング
  51. 51. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Summary 可用性 管理工数 拡張性 InnoDB Clusterは、データベースの可用性をGroup Replication, アプリケーションの接続をMySQL Routerにより冗長化し、 高可用性を実現しサービスの安定稼働をサポートします。 管理面をサポートするMySQL Shellを利用する事で、InnoDB Cluster のコンポーネントである、Group Replicationの設定を容易に行う事 が出来ます。スクリプト化しやすい為、プロビジョニングの自動化等 でも活用する事が可能です。監視では、MEMも活用頂けます。 InnoDB Clusterは、参照処理と更新処理のスケールアウトの為に、 更なる機能拡張を進めています。現状では、MySQL Clusterが 書き込みに対する主なソリューションとなっていますが、 将来的には、InnoDB Clusterも対応可能になる予定です。
  52. 52. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 52 30日間トライアル MySQL Enterprise Edition & Cluster CGEの試使用 • Oracle Software Delivery Cloud http://edelivery.oracle.com/ • 製品パックを選択: "Product" にMySQLと入力し、 OSを選択し"Continue" • 製品マニュアル http://dev.mysql.com/doc/index- enterprise.html
  53. 53. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Oracle Cloud: MySQL Cloud Service • MySQL Enterprise Edition • MySQL Cloudインスタンスを管理するWebベースのコンソール • セルフサービスプロビジョニング • 柔軟なスケーラビリティ • 多層セキュリティ • 統一されたクラウド管理 • Oracle PaaSとIaaSの統合 • プレミアテクニカルサポートを包括 53 InnoDB clusters Option – coming soon! Oracle Cloud MySQL Serviceトライアル https://cloud.oracle.com/ja_JP/mysql 無償トライアルの申し込み方法 https://faq.oracle.co.jp/ci/fattach/get/2851/147684009 2/redirect/1/filename/PAAS_TrialGuide_20161014.pdf
  54. 54. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 54 有難うございました
  55. 55. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 55 Appendix: Enterprise Edition
  56. 56. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 56 MySQLのコミュニティ版と商用版 MySQL はデュアルライセンスソフトウェアです。ビジネスの変化や状況に応じて、 CommunityやCommercial Editionを使い分けて頂く事で,常に最適なソリューションを選択可能。 • MySQL Community Server • MySQL Cluster • MySQL GUI管理ツール • MySQLコネクタ (JDBC, ODBC, etc.) • ドキュメント • フォーラム Community Edition (GPL) •Standard Edition •Enterprise Edition •MySQL Cluster Carrier Grade Edition • 商用ライセンス (組み込み用) • プロフェッショナルサービス • トレーニング、コンサルティング、サポート Commercial Edition コミュニティ版ソフトウェアはGPLv2でソースコードも公開し提供 商用版は、付加価値として技術サポートや管理機能、拡張機能を有償で提供 参考:MySQL Downloads
  57. 57. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 57 MySQL Enterprise Edition のサービスカテゴリー 管理ツール拡張機能 サポート • 拡張性 • 高可用性 • 統合認証 • 監査 • 暗号化 • ファイヤーウオール • 透過的データ暗号化 • 監視 • バックアップ • 開発 • 管理 • マイグレーション • 技術サポート • コンサルティングサポート • オラクル製品との 動作保証
  58. 58. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 58 MySQL Editions Standard Edition Enterprise Edition Cluster CGE 機能概要 MySQL Database ✔ ✔ ✔ MySQL Connectors ✔ ✔ ✔ MySQL Replication ✔ ✔ ✔ MySQL Router ✔ ✔ MySQL Partitioning ✔ ✔ Storage Engine: MyISAM, InnoDB ✔ ✔ ✔ Storage Engine: NDB (ndbcluster) ✔ MySQL Workbench SE/EE* ✔ ✔ ✔ MySQL Enterprise Monitor* ✔ ✔ MySQL Enterprise Backup* ✔ ✔ MySQL Enterprise Authentication (外部認証サポート)* ✔ ✔ MySQL Enterprise TDE (Transparent Data Encryption)* ✔ ✔ MySQL Enterprise Encryption (非対称暗号化)* ✔ ✔ MySQL Enterprise Firewall (SQLインジェクション対策)* ✔ ✔ MySQL Enterprise Audit (ポリシーベース監査機能)* ✔ ✔ MySQL Enterprise Scalability (スレッドプール)* ✔ ✔ MySQL Enterprise High Availability (MySQL Group Replication)* ✔ ✔ Oracle Enterprise Manager for MySQL * ✔ ✔ MySQL Cluster Manager (MySQL Cluster管理)* ✔ MySQL Cluster Geo-Replication ✔
  59. 59. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 59 MySQL Editions Standard Edition Enterprise Edition Cluster CGE Oracle Premium Support 24時間365日サポート ✔ ✔ ✔ インシデント数無制限 ✔ ✔ ✔ ナレッジベース ✔ ✔ ✔ バグ修正&パッチ提供 ✔ ✔ ✔ コンサルティングサポート ✔ ✔ ✔ オラクル製品との動作保証 Oracle Linux、Oracle Solaris、Oracle VM ✔ ✔ ✔ Oracle Clusterware、Oracle Solaris Cluster ✔ ✔ Oracle Enterprise Manager ✔ ✔ Oracle GoldenGate ✔ ✔ Oracle Data Integrator ✔ ✔ Oracle Fusion Middleware ✔ ✔ Oracle Secure Backup ✔ ✔ Oracle Audit Vault and Database Firewall ✔ ✔ Oracle OpenStack for Oracle Linux/Oracle Solaris ✔ ✔ ※最新の対比表は、MySQL Editionsのサイトを参照下さい InnoDB Clusterの構成や設定 等も無制限で相談頂けます。
  60. 60. Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | 60 MySQL Enterprise Edition管理ツールと拡張機能概要 目的 MySQL Enterprise Edition 概要 TCO削減 MySQL Enterprise Monitor 複数サーバの一括管理、クエリ性能分析 TCO削減 Oracle Enterprise Manager for MySQL Oracle Enterprise ManagerからMySQLを統合管理可能 TCO削減と最適化 Oracle Premier Support 24x7, インシデント無制限、コンサルティングサポート 品質維持 MySQL Enterprise Scalability Thread Poolプラグインによる性能拡張性の向上 機会損失対策 MySQL Enterprise Backup 高速なオンラインバックアップ、ポイントインタイムリカバリ セキュリティ コンプライアンス MySQL Enterprise Authentication LDAPやWindows Active Directoryとの統合認証と管理 セキュリティ コンプライアンス MySQL Enterprise TDE データベースオブジェクトの透過的暗号化 セキュリティ コンプライアンス MySQL Enterprise Audit ユーザ処理の監査、Oracle DBと同じツールで管理可能 セキュリティ コンプライアンス MySQL Enterprise Encryption 非対称暗号化(公開鍵暗号)の業界標準機能を提供 セキュリティ コンプライアンス MySQL Enterprise Firewall SQLインジェクション対策

×