Upload
proidea
View
2.286
Download
2
Embed Size (px)
DESCRIPTION
MySQL was the first database system developed particularly with web applications use in mind. But it made a long way since 1995. How is it keeping up with today's internet demands? How to scale the most popular database for the web these days? What are the best practices to scale MySQL and keep it fast, without headaches? Are there any good examples of large scale use cases? In this talk I will try to answer to those questions. I will try to focus on new features in recent MySQL versions, but also to present an open source, fast growing clustering solution making MySQL for the cloud really easy and flexible. Przemyslaw Malkowski - Przemek's job is to help using MySQL optimally in many various scenarios. He works in Support Team at Percona since 2012. Before that he spent over five years working for Wikia.com (Quantcast Top 50) as System Administrator where he was a key person responsible for seamless building up MySQL powered database infrastructure. Besides MySQL he worked on maintaining all other parts of LAMP stack, with main focus on automation, monitoring and backups.
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/