SlideShare a Scribd company logo
1 of 44
MySQL Cluster (NDB) vs Galera for MySQL 
Confidential 
December 11, 2014 
Alex Yu 
alex@severalnines.com
Copyright Severalnines AB 
Webinar Housekeeping 
!This webinar is being recorded 
!A link to the recording & slides will be posted on severalnines.com 
!We welcome questions: enter questions into the chat box and we 
will respond at the end of the presentation 
!Think of something later? 
!Email Severalnines at info@severalnines.com 
2
Copyright Severalnines AB 
Agenda 
!MySQL Cluster (NDB) and Galera Architecture Overview 
!Read and write workloads 
!Deployment scenarios 
!WAN/Geographical replication 
!Data migration & Schema changes 
!Management and performance monitoring 
3
Copyright Severalnines AB 
MySQL Cluster (NDB Storage Engine) 
!Distributed shared nothing realtime database cluster 
!Multi-master, auto sharding, in-memory & disk-data storage 
!Near linear scalability with transparent load balancing 
!SQL and NoSQL interfaces 
!Local and Geographical Replication 
!Synchronous and Asynchronous replication 
!99.999% availability, no single point of failure 
!Telecom “Carrier Grade” legacy 
4
Copyright Severalnines AB 
MySQL Cluster Applications Example 
!Subscriber Databases (Telecom HLR/HSS systems) 
!Massive volume of write traffic (location and updates) 
!Response time < 3ms 
!eCommerce 
!Payment processing and fulfilment 
!High batch and realtime loads 
!Service Delivery Platforms 
!High volume of traffic 
!Mixed read/write loads 
5
Copyright Severalnines AB 
MySQL Cluster Architecture 
6 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node Data Node Data Node Data Node 
Mgmt 
MgmNt ode 
Node 
Web App Clients 
NDB API (C++) 
SQL based clients 
MySQL Client/Server protocol 
MGM C API 
Management 
Client 
SQL Nodes 
Data Nodes 
Management Nodes 
(default arbitrator) 
Synchronous replication 
within a Node group
Copyright Severalnines AB 
Automatic Sharding 
7 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node Data Node Data Node Data Node
Copyright Severalnines AB 
Automatic Sharding (cont.) 
8 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node 1 Data Node 2 Data Node 3 Data Node 4 
• Sharding based on hashing the primary key or a user defined key 
• Each node stores primary fragment for 1 partition and back-up fragment for another 
• # of node groups == # of data nodes / # of replicas
Copyright Severalnines AB 
Automatic Sharding (cont.) 
9 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node 1 Data Node 2 Data Node 3 Data Node 4 
• Sharding based on hashing the primary key or a user defined key 
• Each node stores primary fragment for 1 partition and back-up fragment for another 
• # of node groups == # of data nodes / # of replicas
Copyright Severalnines AB 
Automatic Sharding (cont.) 
10 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node 1 Data Node 2 Data Node 3 Data Node 4 
• Sharding based on hashing the primary key or a user defined key 
• Each node stores primary fragment for 1 partition and back-up fragment for another 
• # of node groups == # of data nodes / # of replicas
Copyright Severalnines AB 
Automatic Sharding (cont.) 
11 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node 1 Data Node 2 Data Node 3 Data Node 4 
• Sharding based on hashing the primary key or a user defined key 
• Each node stores primary fragment for 1 partition and back-up fragment for another 
• # of node groups == # of data nodes / # of replicas
Copyright Severalnines AB 
Automatic Sharding (cont.) 
12 
Table T with 8 rows 
4 Data Nodes - 2 Node Groups 
Data Node Data Node Data Node Data Node 
• Sharding based on hashing the primary key or a user defined key 
• Each node stores primary fragment for 1 partition and back-up fragment for another 
• # of node groups == # of data nodes / # of replicas
Copyright Severalnines AB 
Automatic Sharding (cont.) 
13 
Data Node Data Node Data Node Data Node 
4 partitions 
Secondary Fragments 
4 Data Nodes - 2 Node Groups 
Primary Fragments 
1 
2 
3 
4 
• The cluster is fully operational as long as we have 1 node up in each node group! 
• If all nodes in a single node group is gone then the cluster will gracefully shutdown
Copyright Severalnines AB 
Automatic Sharding (cont.) 
14 
Data Node Data Node Data Node Data Node 
4 partitions 
Secondary Fragments 
4 Data Nodes - 2 Node Groups 
Primary Fragments 
1 
2 
3 
4 
• The cluster is fully operational as long as we have 1 node up in each node group! 
• If all nodes in a single node group is gone then the cluster will gracefully shutdown
Copyright Severalnines AB 
Primary Key Requests 
15 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node Data Node Data Node Data Node 
Mgmt 
MgmNt ode 
Node 
Web Web Web 
• PK lookup goes directly to the node with the primary fragment 
• Parallel operations, Transparent load balancing
Copyright Severalnines AB 
Joins, index and table scans 
16 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node Data Node Data Node Data Node 
Mgmt 
MgmNt ode 
Node 
Web Web Web 
• Table and Index Scans parallel on all nodes 
• Joins executes on data nodes, merged results sent back to SQL node
Copyright Severalnines AB 
Migration to MySQL Cluster 
!Limitations 
!14K row size, 512 attributes (columns + indexes) / table 
!32 attributes / key, only first 3072 bytes of column can be used for index 
!No fulltext or spatial indexes, temporary tables cannot be created using the NDB storage engine 
!Every table must have a Primary Key 
!Hidden PK is automatically created if not defined 
!In-Memory or disk-based tables 
!Dataset exceeds available system memory for the cluster? 
!Network, Local and Global Checkpoint 
!Write intensive, dimension disk subsystem 
!Dedicated >= 1Gb/s networking 
!ALTER TABLE … ENGINE NDB 
!Alt. MySQL Replication, Backup & Restore 
17
Copyright Severalnines AB 
Deployment Scenarios 
18 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
… 
Data Node Data Node Data Node Data Node 
… 
• Scale up to 48 Data Nodes 
• Limit of 255 number of nodes (regardless of type)
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
19 
Master Slave/Standby 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
MySQL Asynchronous Replication 
Single Point of Failure 
• Multiple replication topologies available 
• Master - Master (Bi-directional) 
West East 
• Conflict detection and resolution 
• Master - Slave(s) 
• Circular 
• etc 
Synchronous replication 
within a Node group
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
20 
Master Slave/Standby 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
Primary 
START SLAVE only on Primary! 
Secondary/Standby 
West East 
• Master - Slave(s) 
• Standby replication channel 
• Manual failover
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
21 
Master Master 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
MySQL 
[SQL Node] 
MySQL 
[SQL Node] 
Data Node 
Data Node 
Data Node 
Data Node 
Primary 
Secondary/Standby 
• Master - Master (Bi-directional) 
• Conflict detection and resolution 
West East 
• “timestamp based” 
• row by row not transaction based
Copyright Severalnines AB 
Galera Cluster for MySQL 
22 
!Synchronous (Virtually) Multi-Master Replication 
!Read and Write on any Node 
!No Master Failover! No Slave Lag! 
!Guaranteed write consistency 
!Cluster wide conflicts resolution (certification) 
!Automatic Node Provisioning 
!Highly Available and Scalable 
Client Client Client 
R/W R/W R/W 
MySQL 
[WSREP] 
!No SPOF 
!Read and Write (Parallel Applier threads) scalability 
!Geographical Replication (Mix MySQL Async & Galera Sync) 
Galera Replication (Synchronous) 
!Codership, Percona XtraDB Cluster, MariaDB Galera Cluster 
LB 
MySQL 
[WSREP] 
MySQL 
[WSREP]
Copyright Severalnines AB 
Galera Cluster for MySQL (cont.) 
!Recommended minimum 3 nodes 
!Network partition/split-brain 
!Blocking SST (rsync, mysqldump) 
!Higher probability for “deadlocks” 
!Cluster wide optimistic locking 
!Locking conflicts detected at commit 
!First to commit succeeds 
!Replication performance dependent on 
!Network latency 
!Performance of the “slowest” or the farthest Node (RTT) 
!Number of deployed nodes 
23 
Client Client Client 
R/W R/W R/W 
MySQL 
[WSREP] 
LB 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Galera Replication (Synchronous)
Copyright Severalnines AB 
Galera Concepts 
!Primary Component - PC 
!The whole cluster is a PC during normal operation 
!Node and network failures 
! Splits clusters into several components 
!Only PC can continue to modify state 
!Quorum algorithm invoked to select a PC during cluster 
partitioning 
!Majority rules 
!Minority tries to reconnect with PC 
24 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Primary Component
Copyright Severalnines AB 
Galera Concepts (cont.) 
!State Snapshot Transfer - SST 
!A transfer of a consistent snapshot of a node state corresponding to a certain GTID 
!Initialize the state of a newly joining cluster node from an already initialized node (donor) 
!Incremental State Transfer - IST 
!Catch up with the cluster by replaying missing transactions 
! Known initial node state 
! Enough transactions cached at the donor 
! gcache.size < database size 
25
Copyright Severalnines AB 
High Latency Network 
!Galera 2.x WAN replication (MySQL 5.5) 
!Point to point connection for all nodes! 
!Transaction latency dependent on the slowest link 
26 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
DC1 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
DC2
Copyright Severalnines AB 
High Latency Network (cont.) 
!Galera 3.x WAN optimization (MySQL 5.6) 
!“Cluster” Segment ID to group nodes by location 
!Replication between segments go over a single connection 
!Replication writesets distributed within each segment peer to peer 
!Segment connection/gateway can change per transaction 
27 
gmcast.segment = 1 gmcast.segment = 2 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
segment gateway 
DC1 DC2
Copyright Severalnines AB 
High Latency Network (cont.) 
!Galera 3.x WAN optimization (MySQL 5.6) 
!“Cluster” Segment ID to group nodes by location 
!Replication between segments go over a single connection 
!Replication writesets distributed within each segment peer to peer 
!Segment connection/gateway can change per transaction 
28 
gmcast.segment = 1 segment gateway gmcast.segment = 2 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
DC1 DC2
Copyright Severalnines AB 
Network Partition/Split Brain 
!Quorum based system 
!“Majority >50%” partition continues operation 
!“Minority” partition blocks operations 
! Until reconnected with Primary Component 
!Use odd number of nodes 
!Minimum 3 (5, 7, 9 etc) 
!Galera Arbitrator (garbd) 
!Useful if you have even number of nodes 
!Nodes across DCs 
!Replication relay 
29 
Galera 
Arbitrator 
DC3 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
DC1 
MySQL 
[WSREP] 
DC2 
Client Client Client 
Load balancer 
Replication 
Relay
Copyright Severalnines AB 
Migration to Galera Cluster 
!Only InnoDB storage engine 
!Limited MyISAM support - not recommended 
!Every Table should have a Primary Key 
!DELETE operations are unsupported on tables without a primary key 
!Rows in tables without a primary key may appear in a different order on 
different nodes. (for cert. md5sum pseudo key from full row) 
!Transaction size 
! A writeset is processed as a single memory-resident buffer 
! Extremely large transactions e.g. LOAD DATA can affect performance 
! wsrep_load_data_splitting = ON | OFF # 10K inserts/transaction 
! wsrep_max_ws_rows (128K), wsrep_max_ws_size (1GB) 
30
Copyright Severalnines AB 
Migration to Galera Cluster (cont.) 
!Auto Increments 
!Managed automatically 
! Node-1: 1, 4, 7 
! Node-2: 2, 5, 8 
! Node-3: 3, 6, 9 
!Auto increment sequence gaps if inserts hit different nodes randomly 
!Triggers fire only in the Galera node which executes the 
transaction 
!Events fire on all nodes 
31
Copyright Severalnines AB 
Schema Changes 
!DDLs replicated in statement format 
!Two main methods 
!TOI - Total Order Isolation 
!RSU - Rolling Schema Upgrade 
!wsrep_osu_method = TOI | RSU 
!wsrep_desync=ON + wsrep_on=OFF 
!Disconnect from cluster and stop writeset replication (standalone MySQL server) 
!Dropping Node 
!Set global wsrep_cluster_address=gcomm:// 
!Joining must be through IST 
!Percona Toolkit 
!pt-online-schema-change 
32
Copyright Severalnines AB 
Schema Changes (cont.) 
!TOI - Total Order Isolation 
!Default DDL replication method 
!Strict consistency, all nodes get the same change 
!No schema backwards compatibility 
!Strict commit order force every transactions to wait until DDL is completed 
!Cluster performance degradation 
33
Copyright Severalnines AB 
Schema Changes (cont.) 
!RSU - Rolling Schema Upgrade 
!Desynchronize node from replication until DDL completes 
!Incoming replication is buffered, nothing is replicated out of the node 
!After the DDL completes the node will automatically join the cluster and catch up missed transactions from 
the writeset cache (gcache.size) 
!Potential no cluster performance degradation 
!Schema changes need to be backwards compatible 
! Applications should be able to use old and new schemas 
!Only one RSU operation at a time 
!Rolling operation of the cluster is manual 
34
Copyright Severalnines AB 
Deployment Scenarios 
35 
Users Users Users 
HAProxy Load Balancer 
hthtpttp http http 
HAProxy Load Balancer 
R/W R/W R/W 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Galera Replication (Synchronous) 
ClusterControl 
hthtpttp 
Admin 
VIP 
http://support.severalnines.com/entries/23612682-Install-HAProxy-and-Keepalived-Virtual-IP- subnet
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
36 
Galera as MySQL Slave 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Slave 
MySQL 
[Master] 
MySQL Replication 
wsrep_mysql_replication_bundle=N 
• Replication events can be bundled to commit as a single group 
• Less waits for replication synchronization 
• wsrep_mysql_replication_bundle=n 
• Groups n mysql replication transactions in one large transaction
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
37 
Galera as MySQL replication Master 
MySQL 
[WSREP] 
Master 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Master 
MySQL 
[Slave] 
MySQL Replication 
MySQL 
[Slave] 
DC1 
DC2 
• Backups & Reports 
• Disaster Recovery
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
38 
MySQL 
[WSREP] 
Disaster Recovery 
Master Standby 
MySQL Replication 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Master 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
MySQL 
[WSREP] 
Master 
DC1 DC2 
• “Manual” replication failover 
• Slave lag
Copyright Severalnines AB 
Deployment Scenarios (cont.) 
39 
MySQL 
[WSREP] 
Master 
MySQL 
[WSREP] 
Slave 
MySQL 
[WSREP] 
Slave 
MySQL 
[Master] 
MySQL Replication 
Multi-Source Sink 
MySQL 
[Master] 
MySQL 
[Slave] 
http://www.severalnines.com/blog/multi-source-replication-galera-cluster-mysql
Copyright Severalnines AB 
Severalnines - ClusterControl 
!Monitor and Manage Heterogeneous Database Cluster 
!MySQL Cluster, Galera Cluster for MySQL, MongoDB 
!Automatic 
!Node and Cluster Recovery 
!Scheduled Backups 
!Add/Remove Nodes 
!Create single DB Node and Cluster 
!Alerts/Email 
!Host and DB Metrics 
40
Copyright Severalnines AB 
41
Copyright Severalnines AB 
42
Copyright Severalnines AB 
43
Copyright Severalnines AB 
Thank You! 
!Severalnines recorded webinars 
!http://www.severalnines.com/resources/webinars 
!Severalnines Blog 
!www.severalnines.com/blog 
!Galera Cluster for MySQL Intro 
!http://www.severalnines.com/clustercontrol-mysql-galera-tutorial 
!MySQL Cluster Training 
!http://www.severalnines.com/mysql-cluster-training 
!More Questions? Contact us at: 
!info@severalnines.com 
44

More Related Content

What's hot

What's hot (20)

MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social Games
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
MariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly AvailableMariaDB Galera Cluster - Simple, Transparent, Highly Available
MariaDB Galera Cluster - Simple, Transparent, Highly Available
 
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdfProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
ProxySQL and the Tricks Up Its Sleeve - Percona Live 2022.pdf
 
ProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management OverviewProxySQL High Avalability and Configuration Management Overview
ProxySQL High Avalability and Configuration Management Overview
 
Using galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wanUsing galera replication to create geo distributed clusters on the wan
Using galera replication to create geo distributed clusters on the wan
 
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & ClusterMySQL Database Architectures - InnoDB ReplicaSet & Cluster
MySQL Database Architectures - InnoDB ReplicaSet & Cluster
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
 
What is new in MariaDB 10.6?
What is new in MariaDB 10.6?What is new in MariaDB 10.6?
What is new in MariaDB 10.6?
 
MySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & OperationsMySQL InnoDB Cluster - Advanced Configuration & Operations
MySQL InnoDB Cluster - Advanced Configuration & Operations
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
 
MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication Tutorial
 
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
MySQL Parallel Replication (LOGICAL_CLOCK): all the 5.7 (and some of the 8.0)...
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestrator
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
MariaDB: in-depth (hands on training in Seoul)
MariaDB: in-depth (hands on training in Seoul)MariaDB: in-depth (hands on training in Seoul)
MariaDB: in-depth (hands on training in Seoul)
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0Upgrade from MySQL 5.7 to MySQL 8.0
Upgrade from MySQL 5.7 to MySQL 8.0
 

Similar to Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison

NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
Steve Min
 
No sql solutions - 공개용
No sql solutions - 공개용No sql solutions - 공개용
No sql solutions - 공개용
Byeongweon Moon
 

Similar to Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison (20)

MYSQL
MYSQLMYSQL
MYSQL
 
Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2Scaling with sync_replication using Galera and EC2
Scaling with sync_replication using Galera and EC2
 
MySQL NDB Cluster 8.0
MySQL NDB Cluster 8.0MySQL NDB Cluster 8.0
MySQL NDB Cluster 8.0
 
MySQL NDB Cluster 8.0 SQL faster than NoSQL
MySQL NDB Cluster 8.0 SQL faster than NoSQL MySQL NDB Cluster 8.0 SQL faster than NoSQL
MySQL NDB Cluster 8.0 SQL faster than NoSQL
 
MySQL Cluster Scaling to a Billion Queries
MySQL Cluster Scaling to a Billion QueriesMySQL Cluster Scaling to a Billion Queries
MySQL Cluster Scaling to a Billion Queries
 
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalability
 
MySQL NDB Cluster 101
MySQL NDB Cluster 101MySQL NDB Cluster 101
MySQL NDB Cluster 101
 
Oss4b - pxc introduction
Oss4b   - pxc introductionOss4b   - pxc introduction
Oss4b - pxc introduction
 
Cassandra training
Cassandra trainingCassandra training
Cassandra training
 
Introduction to ClustrixDB
Introduction to ClustrixDBIntroduction to ClustrixDB
Introduction to ClustrixDB
 
Repair & Recovery for your MySQL, MariaDB & MongoDB / TokuMX Clusters - Webin...
Repair & Recovery for your MySQL, MariaDB & MongoDB / TokuMX Clusters - Webin...Repair & Recovery for your MySQL, MariaDB & MongoDB / TokuMX Clusters - Webin...
Repair & Recovery for your MySQL, MariaDB & MongoDB / TokuMX Clusters - Webin...
 
Severalnines Training: MySQL® Cluster - Part IX
Severalnines Training: MySQL® Cluster - Part IXSeveralnines Training: MySQL® Cluster - Part IX
Severalnines Training: MySQL® Cluster - Part IX
 
The OSSCube MySQL High Availability Tutorial
The OSSCube MySQL High Availability TutorialThe OSSCube MySQL High Availability Tutorial
The OSSCube MySQL High Availability Tutorial
 
Best practices for Data warehousing with Amazon Redshift - AWS PS Summit Canb...
Best practices for Data warehousing with Amazon Redshift - AWS PS Summit Canb...Best practices for Data warehousing with Amazon Redshift - AWS PS Summit Canb...
Best practices for Data warehousing with Amazon Redshift - AWS PS Summit Canb...
 
Clustering van IT-componenten
Clustering van IT-componentenClustering van IT-componenten
Clustering van IT-componenten
 
NewSQL Database Overview
NewSQL Database OverviewNewSQL Database Overview
NewSQL Database Overview
 
MySQL HA
MySQL HAMySQL HA
MySQL HA
 
No sql solutions - 공개용
No sql solutions - 공개용No sql solutions - 공개용
No sql solutions - 공개용
 
How and when to use NoSQL
How and when to use NoSQLHow and when to use NoSQL
How and when to use NoSQL
 

More from Severalnines

Webinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDBWebinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDB
Severalnines
 
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControlWebinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Severalnines
 
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Severalnines
 
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Severalnines
 
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Severalnines
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Severalnines
 
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDBWebinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Severalnines
 
Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?
Severalnines
 
Webinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High AvailabilityWebinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High Availability
Severalnines
 

More from Severalnines (20)

Cloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaSCloud's future runs through Sovereign DBaaS
Cloud's future runs through Sovereign DBaaS
 
Tips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloudTips to drive maria db cluster performance for nextcloud
Tips to drive maria db cluster performance for nextcloud
 
Working with the Moodle Database: The Basics
Working with the Moodle Database: The BasicsWorking with the Moodle Database: The Basics
Working with the Moodle Database: The Basics
 
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDBSysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
SysAdmin Working from Home? Tips to Automate MySQL, MariaDB, Postgres & MongoDB
 
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
(slides) Polyglot persistence: utilizing open source databases as a Swiss poc...
 
Webinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDBWebinar slides: How to Migrate from Oracle DB to MariaDB
Webinar slides: How to Migrate from Oracle DB to MariaDB
 
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControlWebinar slides: How to Automate & Manage PostgreSQL with ClusterControl
Webinar slides: How to Automate & Manage PostgreSQL with ClusterControl
 
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
Webinar slides: How to Manage Replication Failover Processes for MySQL, Maria...
 
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
Webinar slides: Backup Management for MySQL, MariaDB, PostgreSQL & MongoDB wi...
 
Disaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDBDisaster Recovery Planning for MySQL & MariaDB
Disaster Recovery Planning for MySQL & MariaDB
 
MariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash CourseMariaDB Performance Tuning Crash Course
MariaDB Performance Tuning Crash Course
 
Performance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDBPerformance Tuning Cheat Sheet for MongoDB
Performance Tuning Cheat Sheet for MongoDB
 
Advanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona ServerAdvanced MySql Data-at-Rest Encryption in Percona Server
Advanced MySql Data-at-Rest Encryption in Percona Server
 
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket KnifePolyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
Polyglot Persistence Utilizing Open Source Databases as a Swiss Pocket Knife
 
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
Webinar slides: Free Monitoring (on Steroids) for MySQL, MariaDB, PostgreSQL ...
 
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQLWebinar slides: An Introduction to Performance Monitoring for PostgreSQL
Webinar slides: An Introduction to Performance Monitoring for PostgreSQL
 
Webinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance TuningWebinar slides: Our Guide to MySQL & MariaDB Performance Tuning
Webinar slides: Our Guide to MySQL & MariaDB Performance Tuning
 
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDBWebinar slides: Migrating to Galera Cluster for MySQL and MariaDB
Webinar slides: Migrating to Galera Cluster for MySQL and MariaDB
 
Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?Webinar slides: How to Measure Database Availability?
Webinar slides: How to Measure Database Availability?
 
Webinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High AvailabilityWebinar slides: Designing Open Source Databases for High Availability
Webinar slides: Designing Open Source Databases for High Availability
 

Recently uploaded

Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024Long journey of Ruby Standard library at RubyKaigi 2024
Long journey of Ruby Standard library at RubyKaigi 2024
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Event-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream ProcessingEvent-Driven Architecture Masterclass: Challenges in Stream Processing
Event-Driven Architecture Masterclass: Challenges in Stream Processing
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties ReimaginedEasier, Faster, and More Powerful – Notes Document Properties Reimagined
Easier, Faster, and More Powerful – Notes Document Properties Reimagined
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 

Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison

  • 1. MySQL Cluster (NDB) vs Galera for MySQL Confidential December 11, 2014 Alex Yu alex@severalnines.com
  • 2. Copyright Severalnines AB Webinar Housekeeping !This webinar is being recorded !A link to the recording & slides will be posted on severalnines.com !We welcome questions: enter questions into the chat box and we will respond at the end of the presentation !Think of something later? !Email Severalnines at info@severalnines.com 2
  • 3. Copyright Severalnines AB Agenda !MySQL Cluster (NDB) and Galera Architecture Overview !Read and write workloads !Deployment scenarios !WAN/Geographical replication !Data migration & Schema changes !Management and performance monitoring 3
  • 4. Copyright Severalnines AB MySQL Cluster (NDB Storage Engine) !Distributed shared nothing realtime database cluster !Multi-master, auto sharding, in-memory & disk-data storage !Near linear scalability with transparent load balancing !SQL and NoSQL interfaces !Local and Geographical Replication !Synchronous and Asynchronous replication !99.999% availability, no single point of failure !Telecom “Carrier Grade” legacy 4
  • 5. Copyright Severalnines AB MySQL Cluster Applications Example !Subscriber Databases (Telecom HLR/HSS systems) !Massive volume of write traffic (location and updates) !Response time < 3ms !eCommerce !Payment processing and fulfilment !High batch and realtime loads !Service Delivery Platforms !High volume of traffic !Mixed read/write loads 5
  • 6. Copyright Severalnines AB MySQL Cluster Architecture 6 MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node Mgmt MgmNt ode Node Web App Clients NDB API (C++) SQL based clients MySQL Client/Server protocol MGM C API Management Client SQL Nodes Data Nodes Management Nodes (default arbitrator) Synchronous replication within a Node group
  • 7. Copyright Severalnines AB Automatic Sharding 7 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node Data Node Data Node Data Node
  • 8. Copyright Severalnines AB Automatic Sharding (cont.) 8 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node 1 Data Node 2 Data Node 3 Data Node 4 • Sharding based on hashing the primary key or a user defined key • Each node stores primary fragment for 1 partition and back-up fragment for another • # of node groups == # of data nodes / # of replicas
  • 9. Copyright Severalnines AB Automatic Sharding (cont.) 9 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node 1 Data Node 2 Data Node 3 Data Node 4 • Sharding based on hashing the primary key or a user defined key • Each node stores primary fragment for 1 partition and back-up fragment for another • # of node groups == # of data nodes / # of replicas
  • 10. Copyright Severalnines AB Automatic Sharding (cont.) 10 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node 1 Data Node 2 Data Node 3 Data Node 4 • Sharding based on hashing the primary key or a user defined key • Each node stores primary fragment for 1 partition and back-up fragment for another • # of node groups == # of data nodes / # of replicas
  • 11. Copyright Severalnines AB Automatic Sharding (cont.) 11 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node 1 Data Node 2 Data Node 3 Data Node 4 • Sharding based on hashing the primary key or a user defined key • Each node stores primary fragment for 1 partition and back-up fragment for another • # of node groups == # of data nodes / # of replicas
  • 12. Copyright Severalnines AB Automatic Sharding (cont.) 12 Table T with 8 rows 4 Data Nodes - 2 Node Groups Data Node Data Node Data Node Data Node • Sharding based on hashing the primary key or a user defined key • Each node stores primary fragment for 1 partition and back-up fragment for another • # of node groups == # of data nodes / # of replicas
  • 13. Copyright Severalnines AB Automatic Sharding (cont.) 13 Data Node Data Node Data Node Data Node 4 partitions Secondary Fragments 4 Data Nodes - 2 Node Groups Primary Fragments 1 2 3 4 • The cluster is fully operational as long as we have 1 node up in each node group! • If all nodes in a single node group is gone then the cluster will gracefully shutdown
  • 14. Copyright Severalnines AB Automatic Sharding (cont.) 14 Data Node Data Node Data Node Data Node 4 partitions Secondary Fragments 4 Data Nodes - 2 Node Groups Primary Fragments 1 2 3 4 • The cluster is fully operational as long as we have 1 node up in each node group! • If all nodes in a single node group is gone then the cluster will gracefully shutdown
  • 15. Copyright Severalnines AB Primary Key Requests 15 MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node Mgmt MgmNt ode Node Web Web Web • PK lookup goes directly to the node with the primary fragment • Parallel operations, Transparent load balancing
  • 16. Copyright Severalnines AB Joins, index and table scans 16 MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node Mgmt MgmNt ode Node Web Web Web • Table and Index Scans parallel on all nodes • Joins executes on data nodes, merged results sent back to SQL node
  • 17. Copyright Severalnines AB Migration to MySQL Cluster !Limitations !14K row size, 512 attributes (columns + indexes) / table !32 attributes / key, only first 3072 bytes of column can be used for index !No fulltext or spatial indexes, temporary tables cannot be created using the NDB storage engine !Every table must have a Primary Key !Hidden PK is automatically created if not defined !In-Memory or disk-based tables !Dataset exceeds available system memory for the cluster? !Network, Local and Global Checkpoint !Write intensive, dimension disk subsystem !Dedicated >= 1Gb/s networking !ALTER TABLE … ENGINE NDB !Alt. MySQL Replication, Backup & Restore 17
  • 18. Copyright Severalnines AB Deployment Scenarios 18 MySQL [SQL Node] MySQL [SQL Node] … Data Node Data Node Data Node Data Node … • Scale up to 48 Data Nodes • Limit of 255 number of nodes (regardless of type)
  • 19. Copyright Severalnines AB Deployment Scenarios (cont.) 19 Master Slave/Standby MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node MySQL Asynchronous Replication Single Point of Failure • Multiple replication topologies available • Master - Master (Bi-directional) West East • Conflict detection and resolution • Master - Slave(s) • Circular • etc Synchronous replication within a Node group
  • 20. Copyright Severalnines AB Deployment Scenarios (cont.) 20 Master Slave/Standby MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node Primary START SLAVE only on Primary! Secondary/Standby West East • Master - Slave(s) • Standby replication channel • Manual failover
  • 21. Copyright Severalnines AB Deployment Scenarios (cont.) 21 Master Master MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node MySQL [SQL Node] MySQL [SQL Node] Data Node Data Node Data Node Data Node Primary Secondary/Standby • Master - Master (Bi-directional) • Conflict detection and resolution West East • “timestamp based” • row by row not transaction based
  • 22. Copyright Severalnines AB Galera Cluster for MySQL 22 !Synchronous (Virtually) Multi-Master Replication !Read and Write on any Node !No Master Failover! No Slave Lag! !Guaranteed write consistency !Cluster wide conflicts resolution (certification) !Automatic Node Provisioning !Highly Available and Scalable Client Client Client R/W R/W R/W MySQL [WSREP] !No SPOF !Read and Write (Parallel Applier threads) scalability !Geographical Replication (Mix MySQL Async & Galera Sync) Galera Replication (Synchronous) !Codership, Percona XtraDB Cluster, MariaDB Galera Cluster LB MySQL [WSREP] MySQL [WSREP]
  • 23. Copyright Severalnines AB Galera Cluster for MySQL (cont.) !Recommended minimum 3 nodes !Network partition/split-brain !Blocking SST (rsync, mysqldump) !Higher probability for “deadlocks” !Cluster wide optimistic locking !Locking conflicts detected at commit !First to commit succeeds !Replication performance dependent on !Network latency !Performance of the “slowest” or the farthest Node (RTT) !Number of deployed nodes 23 Client Client Client R/W R/W R/W MySQL [WSREP] LB MySQL [WSREP] MySQL [WSREP] Galera Replication (Synchronous)
  • 24. Copyright Severalnines AB Galera Concepts !Primary Component - PC !The whole cluster is a PC during normal operation !Node and network failures ! Splits clusters into several components !Only PC can continue to modify state !Quorum algorithm invoked to select a PC during cluster partitioning !Majority rules !Minority tries to reconnect with PC 24 MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] Primary Component
  • 25. Copyright Severalnines AB Galera Concepts (cont.) !State Snapshot Transfer - SST !A transfer of a consistent snapshot of a node state corresponding to a certain GTID !Initialize the state of a newly joining cluster node from an already initialized node (donor) !Incremental State Transfer - IST !Catch up with the cluster by replaying missing transactions ! Known initial node state ! Enough transactions cached at the donor ! gcache.size < database size 25
  • 26. Copyright Severalnines AB High Latency Network !Galera 2.x WAN replication (MySQL 5.5) !Point to point connection for all nodes! !Transaction latency dependent on the slowest link 26 MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] DC1 MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] DC2
  • 27. Copyright Severalnines AB High Latency Network (cont.) !Galera 3.x WAN optimization (MySQL 5.6) !“Cluster” Segment ID to group nodes by location !Replication between segments go over a single connection !Replication writesets distributed within each segment peer to peer !Segment connection/gateway can change per transaction 27 gmcast.segment = 1 gmcast.segment = 2 MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] segment gateway DC1 DC2
  • 28. Copyright Severalnines AB High Latency Network (cont.) !Galera 3.x WAN optimization (MySQL 5.6) !“Cluster” Segment ID to group nodes by location !Replication between segments go over a single connection !Replication writesets distributed within each segment peer to peer !Segment connection/gateway can change per transaction 28 gmcast.segment = 1 segment gateway gmcast.segment = 2 MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] DC1 DC2
  • 29. Copyright Severalnines AB Network Partition/Split Brain !Quorum based system !“Majority >50%” partition continues operation !“Minority” partition blocks operations ! Until reconnected with Primary Component !Use odd number of nodes !Minimum 3 (5, 7, 9 etc) !Galera Arbitrator (garbd) !Useful if you have even number of nodes !Nodes across DCs !Replication relay 29 Galera Arbitrator DC3 MySQL [WSREP] MySQL [WSREP] DC1 MySQL [WSREP] DC2 Client Client Client Load balancer Replication Relay
  • 30. Copyright Severalnines AB Migration to Galera Cluster !Only InnoDB storage engine !Limited MyISAM support - not recommended !Every Table should have a Primary Key !DELETE operations are unsupported on tables without a primary key !Rows in tables without a primary key may appear in a different order on different nodes. (for cert. md5sum pseudo key from full row) !Transaction size ! A writeset is processed as a single memory-resident buffer ! Extremely large transactions e.g. LOAD DATA can affect performance ! wsrep_load_data_splitting = ON | OFF # 10K inserts/transaction ! wsrep_max_ws_rows (128K), wsrep_max_ws_size (1GB) 30
  • 31. Copyright Severalnines AB Migration to Galera Cluster (cont.) !Auto Increments !Managed automatically ! Node-1: 1, 4, 7 ! Node-2: 2, 5, 8 ! Node-3: 3, 6, 9 !Auto increment sequence gaps if inserts hit different nodes randomly !Triggers fire only in the Galera node which executes the transaction !Events fire on all nodes 31
  • 32. Copyright Severalnines AB Schema Changes !DDLs replicated in statement format !Two main methods !TOI - Total Order Isolation !RSU - Rolling Schema Upgrade !wsrep_osu_method = TOI | RSU !wsrep_desync=ON + wsrep_on=OFF !Disconnect from cluster and stop writeset replication (standalone MySQL server) !Dropping Node !Set global wsrep_cluster_address=gcomm:// !Joining must be through IST !Percona Toolkit !pt-online-schema-change 32
  • 33. Copyright Severalnines AB Schema Changes (cont.) !TOI - Total Order Isolation !Default DDL replication method !Strict consistency, all nodes get the same change !No schema backwards compatibility !Strict commit order force every transactions to wait until DDL is completed !Cluster performance degradation 33
  • 34. Copyright Severalnines AB Schema Changes (cont.) !RSU - Rolling Schema Upgrade !Desynchronize node from replication until DDL completes !Incoming replication is buffered, nothing is replicated out of the node !After the DDL completes the node will automatically join the cluster and catch up missed transactions from the writeset cache (gcache.size) !Potential no cluster performance degradation !Schema changes need to be backwards compatible ! Applications should be able to use old and new schemas !Only one RSU operation at a time !Rolling operation of the cluster is manual 34
  • 35. Copyright Severalnines AB Deployment Scenarios 35 Users Users Users HAProxy Load Balancer hthtpttp http http HAProxy Load Balancer R/W R/W R/W MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] Galera Replication (Synchronous) ClusterControl hthtpttp Admin VIP http://support.severalnines.com/entries/23612682-Install-HAProxy-and-Keepalived-Virtual-IP- subnet
  • 36. Copyright Severalnines AB Deployment Scenarios (cont.) 36 Galera as MySQL Slave MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] Slave MySQL [Master] MySQL Replication wsrep_mysql_replication_bundle=N • Replication events can be bundled to commit as a single group • Less waits for replication synchronization • wsrep_mysql_replication_bundle=n • Groups n mysql replication transactions in one large transaction
  • 37. Copyright Severalnines AB Deployment Scenarios (cont.) 37 Galera as MySQL replication Master MySQL [WSREP] Master MySQL [WSREP] MySQL [WSREP] Master MySQL [Slave] MySQL Replication MySQL [Slave] DC1 DC2 • Backups & Reports • Disaster Recovery
  • 38. Copyright Severalnines AB Deployment Scenarios (cont.) 38 MySQL [WSREP] Disaster Recovery Master Standby MySQL Replication MySQL [WSREP] MySQL [WSREP] Master MySQL [WSREP] MySQL [WSREP] MySQL [WSREP] Master DC1 DC2 • “Manual” replication failover • Slave lag
  • 39. Copyright Severalnines AB Deployment Scenarios (cont.) 39 MySQL [WSREP] Master MySQL [WSREP] Slave MySQL [WSREP] Slave MySQL [Master] MySQL Replication Multi-Source Sink MySQL [Master] MySQL [Slave] http://www.severalnines.com/blog/multi-source-replication-galera-cluster-mysql
  • 40. Copyright Severalnines AB Severalnines - ClusterControl !Monitor and Manage Heterogeneous Database Cluster !MySQL Cluster, Galera Cluster for MySQL, MongoDB !Automatic !Node and Cluster Recovery !Scheduled Backups !Add/Remove Nodes !Create single DB Node and Cluster !Alerts/Email !Host and DB Metrics 40
  • 44. Copyright Severalnines AB Thank You! !Severalnines recorded webinars !http://www.severalnines.com/resources/webinars !Severalnines Blog !www.severalnines.com/blog !Galera Cluster for MySQL Intro !http://www.severalnines.com/clustercontrol-mysql-galera-tutorial !MySQL Cluster Training !http://www.severalnines.com/mysql-cluster-training !More Questions? Contact us at: !info@severalnines.com 44