introduction into percona xtradb cluster · introduction into percona xtradb cluster vadim...
TRANSCRIPT
Introduction into Percona XtraDB Cluster
Vadim Tkachenko Percona Inc, co-founder, CTO
www.percona.com www.MySQLPerformanceBlog.com
This talk online
• PowerPoint • http://bit.ly/PXC-cloud-2013
• PDF • http://bit.ly/PXC-cloud-2013-pdf
• Contacts • [email protected] • Twitter @VadimTk
Percona XtraDB Cluster
This talk
High Availability
Replication
Cluster
Percona XtraDB Cluster
What is HA
Availability
Avail ~ Ability
Ability to Avail
Percona XtraDB Cluster
Availability by redundancy
Percona XtraDB Cluster
Duplicate resources
Percona XtraDB Cluster
Failover
Percona XtraDB Cluster
Probability of failure
Single server: P
Two servers: P/2
X servers: P/X
Percona XtraDB Cluster
Probability of failure
1 2 3 4 5 6 7 8 9 10
Pro
babi
lity
of fa
ilure
N of servers
Percona XtraDB Cluster
Easy ? Not if we deal with databases
Percona XtraDB Cluster
Database
Percona XtraDB Cluster
Redundancy ?
Percona XtraDB Cluster
Database availability is hard
Service availability
Data availability
Percona XtraDB Cluster
Replication
Percona XtraDB Cluster
Percona XtraDB Cluster
What is wrong with MySQL replication ?
async
Percona XtraDB Cluster
What is wrong with MySQL replication ?
“async”
vs
“sync”
Percona XtraDB Cluster
Async
Percona XtraDB Cluster
Async
Percona XtraDB Cluster
sync
Percona XtraDB Cluster
Didn’t we just reinvent DRBD ?
Percona XtraDB Cluster
DRBD
Percona XtraDB Cluster
Clustering
Percona XtraDB Cluster
Percona XtraDB Cluster Free and Open Source
Percona XtraDB Cluster
Percona XtraDB Cluster
Percona XtraDB Cluster
Virtually synchronous http://en.wikipedia.org/wiki/Virtual_synchrony
Percona XtraDB Cluster
Virtually synchronous
Percona XtraDB Cluster
synchronous replication
multi-master replication
parallel applying on
slaves
data consistency
automatic node
provisioning
Percona XtraDB Cluster
synchronous replication
multi-master replication
parallel applying on
slaves
data consistency
automatic node
provisioning
Percona XtraDB Cluster
Multi-master: MySQL
Percona XtraDB Cluster
Multi-master: XtraDB Cluster
Percona XtraDB Cluster
synchronous replication
multi-master replication
parallel applying on
slaves
data consistency
automatic node
provisioning
Percona XtraDB Cluster
Parallel apply: MySQL
Percona XtraDB Cluster
Parallel apply: XtraDB Cluster
Percona XtraDB Cluster
synchronous replication
multi-master replication
parallel applying on
slaves
data consistency
automatic node
provisioning
Percona XtraDB Cluster
XtraDB Cluster data consistency
Percona XtraDB Cluster
synchronous replication
multi-master replication
parallel applying on
slaves
data consistency
automatic node
provisioning
Percona XtraDB Cluster
Node provisioning
Percona XtraDB Cluster
CAP theorem http://en.wikipedia.org/wiki/CAP_theorem
Percona XtraDB Cluster
Pick only TWO
Consistency Node availability
Partition Tolerance
Percona XtraDB Cluster
Network failure
Percona XtraDB Cluster
MySQL Replication
Percona XtraDB Cluster
Access to all systems - YES
Data consistency - NO
XtraDB Cluster
Percona XtraDB Cluster
Access to all systems - NO
Data consistency - YES
3 nodes is the minimal recommended configuration
Percona XtraDB Cluster
Split brain
Percona XtraDB Cluster
Which system to make available ?
Split brain
Percona XtraDB Cluster
But you deal with consequences You still can have this setup
Choice
Percona XtraDB Cluster
MySQL Replication: Access to all systems
Data consistency XtraDB Cluster:
MySQL replication based
MMM
MHA
Flipper
PRM
Percona XtraDB Cluster
Percona XtraDB Cluster details
Percona XtraDB Cluster
Percona XtraDB Cluster
Percona Server
WSREP patches
Galera library
Percona XtraDB Cluster
Full compatibility with existing
systems
Percona XtraDB Cluster
Minimal efforts to migrate
Percona XtraDB Cluster
Minimal efforts to return back
to MySQL
Percona XtraDB Cluster
So, is this a perfect solution?
Percona XtraDB Cluster
Limitations
Percona XtraDB Cluster
Only InnoDB tables are fully supported MyISAM support is very basic
Percona XtraDB Cluster
OPTIMISTIC locking for transactions on different servers http://en.wikipedia.org/wiki/Optimistic_concurrency_control
Percona XtraDB Cluster
Traditional locking
Percona XtraDB Cluster
Optimistic locking
Percona XtraDB Cluster
The write performance is limited by weakest node
Percona XtraDB Cluster
Write performance
Percona XtraDB Cluster
For write intensive applications there could be datasize limit per node Not physical but logical
Percona XtraDB Cluster
Join process. Step 1
Percona XtraDB Cluster
Join process. Step 2
Percona XtraDB Cluster
Join process: step 3
Percona XtraDB Cluster
This is software + hardware solution
Percona XtraDB Cluster
InnoDB write performance
Percona XtraDB Cluster
InnoDB performance + ACID
Percona XtraDB Cluster
Cluster performance
• 10 GigE • Infiniband
Network
• SSD • PCI-e Flash
Storage
Percona XtraDB Cluster
Join process
Percona XtraDB Cluster
State Transfer
Percona XtraDB Cluster
Full data SST
New node
Node long time
disconnected
Incremental IST
Node disconnected short time
Snapshot State Transfer
Percona XtraDB Cluster
Mysqldump
Small databases
Rsync
Donor disconnected for copy time
faster
XtraBackup
Donor disconnected for short time
slower
Incremental State Transfer
Percona XtraDB Cluster
Node was in cluster
Disconnected for
maintenance
Node Crashed
Scaleability
Percona XtraDB Cluster
Scaleability
Scale ~ Ability
Ability to Scale
Percona XtraDB Cluster
Scaleability is similar to availability
Percona XtraDB Cluster
XtraDB Cluster: Reads scalability is easy
Percona XtraDB Cluster
Write scalability is complicated
Percona XtraDB Cluster
N servers scale to :
Percona XtraDB Cluster
• N factor 100% reads
• … …
• N/2 factor 50/50
• … …
• 1 or const 100% writes
10 servers scale to :
Percona XtraDB Cluster
• 1 server: 100 q/s • 10 servers: 1000 q/s
100% reads
• 1 server: 100 q/s • 10 servers: 500 q/s 50/50
• 1 server: 100 q/s • 10 servers: 100 q/s (can
be more)
100% writes
Load Balancing HAProxy
Percona XtraDB Cluster
HAProxy on application side
Percona XtraDB Cluster
Credits for the picture: taken from Patrick Galbraith http://capttofu.livejournal.com/29380.html
Deployment in WAN Quite possible http://www.mysqlperformanceblog.com/2012/01/11/making-the-impossible-3-nodes-intercontinental-replication/
Percona XtraDB Cluster
Beware of latencies • Within EUROPE EC2
• INSERT INTO table : 0.005100 sec
• EUROPE <-> Japan EC2 • INSERT INTO table : 0.275642 sec
Percona XtraDB Cluster
On bright side • Throughput is less affected
• Communication is done in parallel
• Combine short query into transactions • BEGIN <- fast • INSERT <- fast • INSERT <- fast • UPDATE <- fast • … • COMMIT; <- slow
Percona XtraDB Cluster
Use cases
Percona XtraDB Cluster
DNSaaS application MySQL HA solution with Percona XtraDB Cluster (Galera) http://capttofu.livejournal.com/29380.html CloudDNS from HP cloud is to use XtraDB cluster as a backend
Percona XtraDB Cluster
HA for OpenStack http://thoughtsoncloud.com/index.php/2013/04/high-availability-in-the-cloud-an-openstack-approach/ XtraDB Cluster/Galera is a good fit for HA of database components of OpenStack
Percona XtraDB Cluster
FAQ Questions I am asked
Percona XtraDB Cluster
• What happens if one node temporary unreachable ? • How ALTER tables are handled • What happens if someone runs update of 1000000 rows ? • Show numbers on latency and throughput • How connect node to a cluster ? Just show an example • How cluster decides what nodes to keep in cluster and what to
throw away • Can I select a specific node as DONOR • Load balancing ? • XtraBackup SST – locking for short period • How auto_increment is handled ? • What is use case for XtraDB Cluster ?
Percona XtraDB Cluster
How fast is it? Reasonably fast.
Percona XtraDB Cluster
2-nodes overhead ~20%
Percona XtraDB Cluster
Can I replicate XtraDB Cluster to MySQL Replication? Yes
Percona XtraDB Cluster
Production system? gutefrage.net Germany’s No. 3 Web Destination http://www.percona.com/about-us/pressreleases/gutefragenet-standardizes-percona-xtradb-cluster 95% reads
Percona XtraDB Cluster
How it is compared to MySQL Cluster? It is different
Percona XtraDB Cluster
XtraDB Cluster
MySQL Cluster
Easy to migrate Easy to use Cloud / EC2 Changes in an application Write scaling 99.999%
Percona XtraDB Cluster
More questions
• What happens if one node temporary unreachable ? • How ALTER tables are handled • What happens if someone runs update of 1000000 rows ? • How cluster decides what nodes to keep in cluster and what to
throw away • Can I select a specific node as DONOR • Load balancing ? • How auto_increment is handled ?
Percona XtraDB Cluster
Resources • http://www.percona.com/software/percona-xtradb-cluster/ • http://www.codership.com/wiki/doku.php • Virtual synchrony
• http://en.wikipedia.org/wiki/Virtual_synchrony
• CAP Theorem • http://en.wikipedia.org/wiki/CAP_theorem
• Optimistic locking • http://en.wikipedia.org/wiki/Optimistic_concurrency_control
• Percona XtraDB Cluster with HAProxy • http://www.mysqlperformanceblog.com/2012/06/20/percona-xtradb-
cluster-reference-architecture-with-haproxy/
Percona XtraDB Cluster
Credits • WSREP patches and Galera library is developed by Codership
Oy
• Both Percona and Codership will present on Percona Live MySQL Conference and Expo, Apr 22-25
Percona XtraDB Cluster
This talk online
• PowerPoint • http://bit.ly/PXC-cloud-2013
• PDF • http://bit.ly/PXC-cloud-2013-pdf
• Contacts • [email protected] • Twitter @VadimTk
Percona XtraDB Cluster
Thank you!
Questions ?
You can try Percona XtraDB Cluster today!
Percona XtraDB Cluster