Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
MySQL Principal Solution Engineer
Yoshiaki Yamasaki / 山﨑由章
2020/05/30 OSC2020 Online Nagoya
NoSQLとしても使える高可用性インメモリDBMySQL NDB Clusterのご紹介
2
Safe harbor statement
Copyright © 2020, Oracle and/or its affiliates
3
祝!!MyNA20周年&MySQL25周年!!
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
4
YouTubeのMyNAチャンネル、MySQL Casualチャンネル
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
5
MySQL NDB Clusterとは?
Copyright © 2020, Oracle and/or its affiliates
6
MySQL NDB Clusterとは?
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
7
MySQL ”NDB” Clusterの歴史
90年代後期
Ericsson (Alzato) にて設計/開発
2003年
MySQL ABが NDB Cluster ProjectをEricssonから引き継ぎ開発 (MySQL 4.1)
2008年
SunがNDB Cluster Projectを引き継ぎ開発(MySQL 5.1/Cluster 6.x~ )
2010年
OracleがNDB Cluster Projectを引き継ぎ開発(MySQL 5.1 / Cluster 7.x~)
Original design paper: Design and Modelling of a Parallel Data Server for Telecom Application
MySQL Clusterの基礎となっている技術は、通信機器ベンダのエリクソンで携帯通信網の加入者データベース向けに開発されたEricsson Network Data Base(NDB)と呼ばれていた技術が起源
Copyright © 2020, Oracle and/or its affiliates
Copyright © 2020, Oracle and/or its affiliates8
MySQL NDB Clusterの特徴
Cluster
分散イン・メモリ・データ管理リアルタイム・パフォーマンス、自動パーティショニング、データ分散、ビルトインのレプリケーション
99.9999%の可用性ミッション・クリティカル・システム向けの設計、自律型、単一障害点のないシェアード・ナッシング構成
一貫性のあるトランザクション分散かつ分割配置されたデータセットに対するトランザクションの一貫性
オープン・ソースリアルタイム・パフォーマンス、自動パーティショニング、データ分散、ビルトインのレプリケーション
ハイブリッド・データストアキー・バリュー型 NoSQL+複雑なリレーショナルな処理 RDBMS
高い拡張性と堅牢性の両立マルチ・マスター、スケール・アウト可能、テラバイト級データへの対応、ACID準拠トランザクション
9
新しいタイプのデータベース利用要件に対応
インメモリデータベースとしてのリアルタイム性能と高い堅牢性の両立
お客様ビジネスの成長を支える拡張性のあるデータ管理
RDBMSとNoSQLのハイブリッド構成による柔軟性とビジネスの展開に対応したアジリティ
運用管理を自動化させたことによる運用コストの低減
MySQL NDB Cluster導入メリット
In-Memory Real-Time
Performance
Extreme Read & Write
Scalability
Rock Solid Availability
Rapid Service
Innovation
Copyright © 2020, Oracle and/or its affiliates
10
MySQL NDB Cluster が向いているシステム
⚫
⚫
⚫
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
Copyright © 2020, Oracle and/or its affiliates11
• YCSB : Yahoo Cloud Serving Benchmark
• Yahooが開発したNoSQL(KVS)やクラウドサービスストア向けのベンチマークツール
• NoSQL(KVS)データベース、(耐久性の無い)インメモリデータグリッド、スケールアウトデータベースの比較に広く使用されている
• NoSQLワークロードで比較した際の前提:
• Workload A: 50% 読込み, 50% 書込み
• YCSBクライアントの変更不可
• DBベンダーが実装したJDBCクライアントを使用
•バージョンと正確な設定が重要
YCSB ベンチマークScaling and Elasticity.
Product Nodes TPS/OPS
32 227k
2 275k
3 715k
6 1.6M
8 1.6M
4 2.8MCluster
Copyright © 2020, Oracle and/or its affiliates12
[検証環境]
YCSB 0.15.0 with JDBC / SQL
• レコード数1kB (デフォルト)
• requestdistribution: uniform (均一分布)
• データノード数:2、4、8
• NoOfReplicas:2
• strong consistency
• ACID (read committed)
※データノード数8の検証は2つのAD(Availability Domain)にまたがって環境を構築
• AD間のネットワークレイテンシは約400us
データノード数増加による拡張性Online Scaling and Elasticity. Repartitioning
1M
2M
3M
4M
2 4 8(2 ADs)
1.4M
2.8M
3.7M
トランザクション数
/秒
Nodes
Copyright © 2020, Oracle and/or its affiliates13
[検証環境]
・4 データノード
・データ量:3億行、6億行
・JDBC使用
[結果]
99% SQL reads < 1ms
• 95% < 0.9ms
99% SQL writes < 2ms
• 95% < 1.7ms
Real-time low latency SQL YCSBOnline Scaling and Elasticity. Repartitioning
1M
トランザクション数
/秒
2 ms
同じスループットと遅延時間
3億行 6億行
1.2
5M
TP
S
1.2
5M
TP
S
Re
ad
s
Re
ad
s
Wri
tes
Wri
tes 1 ms
14
MySQL NDB Cluster 導入事例
Copyright © 2020, Oracle and/or its affiliates
15
MySQL NDB Cluster 導入事例:携帯電話ネットワーク
HLR / HSS
課金, 認証, VLR
認証, 追跡接続サービス, 課金
位置情報の更新
プリペイ&ポストペイ課金
• 大量の書き込みトランザクション
• 3ms未満のデータベースレスポンス
• 停止時間 & トランザクション消失 = ビジネスの損失
Copyright © 2020, Oracle and/or its affiliates
16
MySQL NDB Cluster 導入事例:航空機管制システム
• 米国海軍航空母艦
• 包括的航空機運用管制システム
• メンテナンス記録
• 燃料搭載量管理
• 気象状況
• 飛行甲板管理
• システム要件
• 単一障害点無し
• 完全な冗長性
• 小さなフットプリント & 過酷な利用環境での利用
• 4台のMySQL Clusterノード LinuxおよびWindows
ノード・グループ1
F1
F1
F3
F3
ノード
1ノード
2
ノード・グループ2
F2
F2
F4
F4
ノード
1ノード
2
データ・ノード
Copyright © 2020, Oracle and/or its affiliates
17
MySQL NDB Cluster 導入事例:ビットキャッシュ株式会社
• 対象システム
• 電子マネー関連のシステム
• 課題
• データの取り込み処理と集計処理の高速化を低コストで実現
• データベースの可用性と拡張性の向上
• ディザスタリカバリ―サイトの構築
"MySQL Cluster Carrier Grade Editionを導入したことで、高い処理能力をシステム基盤に構築できました。また、高可用性を持ったインメモリデータベースであるMySQL Clusterを導入したことにより、加盟店に関する膨大なデータの取り込み時間を1週間から30分程度まで短縮できました。"
• お客様の声
Copyright © 2020, Oracle and/or its affiliates
18
MySQL NDB Clusterの仕組み
Copyright © 2020, Oracle and/or its affiliates
Copyright © 2020, Oracle and/or its affiliates19
MySQL NDB Clusterは複数台のサーバーでDBを構成する(推奨最低構成は4台)
MySQL Server
SQLノード兼
管理ノード
SQLノード兼
管理ノード
データノードデータノード
MySQL NDB Cluster
冗長化
冗長化
20
データノード
• データ、インデックスを管理し、トランザクションを制御するノード
• データのレプリカを別のノードで持つことで冗長性を確保
• MySQL NDB Clusterの中核となるノード
アプリケーションノード(SQLノード)
• アプリケーションとデータノードをつなぐインターフェースとなるノード
• SQLで処理する場合は、MySQL Serverが稼働する
• NoSQLで処理する場合は、MySQL Serverは不要
管理ノード
• MySQL NDB Cluster全体を管理するノード
• 各ノードの設定管理、クラスタ全体の起動/停止、オンラインバックアップ、など
MySQL NDB Clusterを構成する3種類のノード
Copyright © 2020, Oracle and/or its affiliates
21
データ・シャーディングデータノードでのデータ保持方法
データ・ノード
ノード・グループ1
F1
F3
F3
F1
ノード
1ノード
2ノード・グールプ 2
F2
F4
F4
F2
ノード
3ノード
4
・主キーのハッシュ値で水平分割して、各データノードにデータを保持
⇒負荷分散による性能向上(台数追加によりスケールアウト可能)
・レプリカを別のデータノードと持ち合う
⇒冗長化による耐障害性Copyright © 2020, Oracle and/or its affiliates
Copyright © 2020, Oracle and/or its affiliates22
データノードへのアクセスは、NDB API経由で行われる
Clients
Data Nodes
NDB API Common NDB API
MySQL Server& Custom Applications
SQLで処理する場合でも、
その他のAPI経由で処理する場合でも、
バックグラウンドでNDB API経由の
処理に変換されている
23
データノードへのアクセスイメージ
Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps Apps
JPA
Cluster JPA
PHP Perl Python Ruby JDBC Cluster J JS Memcached
MySQL JNI Node.JS ndb_eng
NDB API (C++)
MySQL Cluster Data Nodes
Copyright © 2020, Oracle and/or its affiliates
24
MySQL NDB Cluster 8.0
Copyright © 2020, Oracle and/or its affiliates
25
MySQL NDB Cluster 8.0: What’s New
MySQL 7.4 / 7.5
MySQL 7.6
MySQL 8.0
The world’s highest throughputreal-time datastore
- MySQL Server 5.7- 5x faster restarts- JSON Support- 50% faster reads- 40% faster read/write
MySQL Server 5.7Redesigned for hundreds of terabyteRedesigned for modern hardware50% faster joins2x faster scans10x faster restarts
More data nodes3 - 4 replicasDynamic Memory ManagementLarger rowsFaster SQLFaster disk data
Copyright © 2020, Oracle and/or its affiliates
26
MySQL NDB Cluster 8.0での主要な強化点
⚫
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
27
MySQL 8.0との統合
⚫
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
28
レプリカ数3、4の公式サポート
⚫
⚫
ノード・グループ1
F5
F1
F3
ノード
1
データ・ノード
F5
F1
F3
ノード
2
F5
F1
F3
ノード
3ノード・グループ2
F6
F2
F4
ノード
1
F6
F2
F4
ノード
2
F6
F2
F4
ノード
3
Copyright © 2020, Oracle and/or its affiliates
29
扱えるデータサイズの拡張(数百TBクラスへの対応)
⚫
⚫
⚫
⚫
DataMemory
Copyright © 2020, Oracle and/or its affiliates
30
トランザクション関連パラメーターの動的管理
⚫
⚫
•
•
•
•
•
•
•
•
•
⚫
•
•
•
•
Copyright © 2020, Oracle and/or its affiliates
31
より高速で堅牢なディスクテーブル
⚫
⚫
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
32
SQLパフォーマンス、パラレルバックアップのパフォーマンス向上
⚫
⚫
Node 2Node 1
Copyright © 2020, Oracle and/or its affiliates
33
SQLパフォーマンス、パラレルバックアップのパフォーマンス向上
⚫
Node 2Node 1Node 2Node 1
Copyright © 2020, Oracle and/or its affiliates
34
まとめ
⚫
⚫
⚫
⚫
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates
35
MySQL NDB Cluster CGE(商用版)
Copyright © 2020, Oracle and/or its affiliates
36
MySQL商用版を購入する理由
技術サポート
商用版MySQL
知財補償
追加機能
商用ライセンス
Copyright © 2020, Oracle and/or its affiliates
37
MySQLサポート
•
•
•
•
•
•
•
•
•
Copyright © 2020, Oracle and/or its affiliates
38
MySQL Cluster CGE:サポートに加え追加機能も提供
Copyright © 2020, Oracle and/or its affiliates
40
お知らせ
Copyright © 2020, Oracle and/or its affiliates
41
今後のWebセミナー開催予定
⚫
⚫
⚫
⚫
Copyright © 2020, Oracle and/or its affiliates