Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Scaling MySQL in 2014? Przemysław Malkowski
Atmosphere 2014
www.percona.com
What is this talk about?
● Is MySQL still a good choice for today's web projects?
● Does it work on scale?● Does it work in cloud?● How MySQL is evolving to keep up with
changes?● What are the best practices to scale?● Improved replication and clustering
www.percona.com
Still right choice?
● MySQL first released in 1995● Open Source/GPL (3.23) since 2000/2001● Owner changes – MySQL AB, Sun, Oracle● Competition – Percona, MariaDB● NoSQL movement● Cloud boom
www.percona.com
Most popular database for web
● 'M' in LAMP● Default database for webhosting offers● Most popular CMS/blog/forum software supports
mainly MySQL● Top world biggest web sites use MySQL● OpenStack: default DBaaS provider
www.percona.com
Can you scale with MySQL?
● Do you plan to reach the scale of Facebook?● From Harrison Fisk talk in 2013:
– many petabytes of data (real time access)– 11M row changes /s – 60M selects /s– 2.5B rows read /s
● WebScaleSQL● Not IF but HOW
www.percona.com
Scaling for the web
● Stay fast and reliable as you grow● More visitors/users● More features/products● Continuous performance optimization
● How fast you can serve client request?● You may not know how bad your application or
configuration is until...
www.percona.com
Best practices
● Design your schema well● Primary key in each table!● Secondary keys designed with application
● Do the fancy stuff asynchronously! ● Advanced reports, statistics?
● Remember the OLTP principles
www.percona.com
Best practices
● Cache● Use the right tools!
● Percona XtraBackup● Percona Toolkit
~ 30 tools including pt-online-schema-change, pt-query-digest, pt-table-checksum, and more
● Percona Monitoring Plugins– Nagios, Cacti, Zabbix
www.percona.com
Do my queries scale?
● Percona Cloud Tools
cloud.percona.com
www.percona.com
Scalability areas
www.percona.com
Not quite that simple
● Number of connections● Total active● New connections per second
● Write conflicts (deadlocks)● Stale data● Large data management
● Backups● Node provisioning● Number of databases and tables
www.percona.com
Scale up
www.percona.com
Scale up
● More/faster CPU cores● More memory● Bigger disks● Faster disks● Application optimization/redesign● MySQL optimization!
● Default is not good
www.percona.com
Scale up – MySQL version matters!
http://dimitrik.free.fr/
http://mikaelronstrom.blogspot.com/
www.percona.com
Scale up – use the right engine
● Forget MyISAM!
https://blogs.oracle.com/MySQL/entry/comparing_innodb_to_myisam_performance
www.percona.com
Scale up – use right engine
● InnoDB - business standard● Hot backups (MEB, Percona XtraBackup)● Online schema change (pt-osc or in 5.6+)● Compression (Facebook++)
● TokuDB● Excellent compression● Impressive write throughput● Will be shipped with Percona Server 5.6 soon (beta
builds available)
www.percona.com
Data growth
● How fast can you make a full backup? No! How fast can you restore from backup!
● How fast can you provision number of nodes capable of handling the traffic (worst case scenario)?
● How fast can you alter table● Query performance (fit hot data in memory)
www.percona.com
Scale out
www.percona.com
Scaling out - replication
● Cons
● Complexity – application and DBA
● Data consistency issues
● Slave lag
● Writes are a bottleneck
writ
es
reads
replication
master
slaves
MySQL replication (async)● Pros
● Easy to deploy
● Flexible replication topology
● Unlimited slaves
● No write latency on master
www.percona.com
Scaling out – MySQL replication
● Replication improvements:● GTID (5.6, MariaDB 10)● Semi-sync replication (5.5+)● Multi-threaded slaves per-database (5.6+) ● Multi-threaded slaves intra-database (5.7)● Multi-Source replication (MySQL 5.7, Maria 5.5)
● Still master -> slave(s)
www.percona.com
Make it simple
● Does complexity scale? ;)● Team experience● How fast can you make changes?● Humans make errors● Demand for HA increases as you grow● Simpler management -> higher availability
www.percona.com
Scaling out made easy – Percona XtraDB Cluster
● Complete HA solution:● Percona Server (5.5 or 5.6)● Galera library from Codership● Percona XtraBackup
● Core features● Synchronous replication● Multi-master replication● Parallel replication● Automatic node provisioning● No need for application change - keep using InnoDB
www.percona.com
PXC – how does it work
GALERAREPLICATION
node1 node2
node3
ReadsWrites
ReadsWrites
ReadsWrites
● No SPOF - availability
● Data consistency
● No partitioning tolerance
● Reasonable overhead
● Transactions pass certification test before
returning to the client but applying is done
asynchronously
● Row based, parallel replication
● No slave lag
www.percona.com
PXC - Data consistency is priority
Node partitioned from the cluster
www.percona.com
PXC - Syncing nodes
● Incremental State Transfer (IST)● Gcache (Writeset Cache)
● State Snapshot Transfer (SST)● Adding a new node● Rebuilding failed node● Node's consistency was compromised
www.percona.com
GALERAREPLICATION
PXC - Automatic node provisioning
Fast and non-blockingwith Percona XtraBackup
node1
node2
JOINER
node4
DONOR
node3
SST
www.percona.com
GALERA
PXC – replication flexibility
Async master
Async slave
GTID
www.percona.com
PXC – WAN awareness
● WAN segments (Galera 3+)
DC1
DC2
DC3 DC3
DC2
DC1
● Smart donor selection● Less network traffic
www.percona.com
Scaling out (writes)
● Functional Partitioning
● Sharding
Cluster A
Cluster B
ID 1-1000
ID 1001-2000
www.percona.com
Sharding/partitioning – solutions
● Make your application shard aware (design your own logic)
● Use existing solutions● MySQL Fabric● Shard-Query
www.percona.com
Cloud
● Scaling on demand, unlimited● “MySQLaaS”
● Amazon RDS● Google Cloud SQL (MySQL only)● Rackspace Cloud Databases (MySQL only)● HP Cloud Relational Database (MySQL only)
www.percona.com
References
Benchmarkshttp://mikaelronstrom.blogspot.com/2013/09/mysql-57-improves-cpu-scaling-further.htmlhttp://dimitrik.free.fr/blog/Large scalehttps://www.youtube.com/watch?v=kbYdvHB-l0sNew cool stuffhttp://www.mysqlperformanceblog.com/2014/03/27/percona-server-5-6-16-64-2-tokudb-engine-beta-now-available/http://www.mysqlperformanceblog.com/2014/01/16/analyzing-wordpress-mysql-queries-query-analytics/http://geek.rohitkalhans.com/2013/09/enhancedMTS-deepdive.htmlCloudhttp://www.percona.com/live/mysql-conference-2013/sessions/using-percona-server-database-service-openstackhttp://www.hpcloud.com/products-services/relational-databasehttp://www.rackspace.com/cloud/databases/https://cloud.google.com/products/cloud-sql/https://aws.amazon.com/rds/mysql/http://www.hastexo.com/resources/presentations/hands-trove-database-service-openstackShardinghttp://www.percona.com/live/mysql-conference-2014/sessions/sharding-and-scale-out-using-mysql-fabrichttps://github.com/greenlion/swanhart-tools/tree/master/shard-queryPXC use caseshttp://capttofu.livejournal.com/29380.htmlhttp://www.acquia.com/resources/case-study/kpn-corporate-markethttp://marketplace.redhat.com/openstack/21615-Percona-XtraDB-Cluster-5-6
[email protected]@mysqlmaniac.com
We're Hiring! www.percona.com/about-us/careers/