34
Scaling MySQL in 2014? Przemysław Malkowski Atmosphere 2014

Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

  • 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

Page 1: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

Scaling MySQL in 2014? Przemysław Malkowski

Atmosphere 2014

Page 2: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 3: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 4: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 5: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 6: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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...

Page 7: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 8: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 9: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Do my queries scale?

● Percona Cloud Tools

cloud.percona.com

Page 10: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scalability areas

Page 11: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 12: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scale up

Page 13: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scale up

● More/faster CPU cores● More memory● Bigger disks● Faster disks● Application optimization/redesign● MySQL optimization!

● Default is not good

Page 14: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scale up – MySQL version matters!

http://dimitrik.free.fr/

http://mikaelronstrom.blogspot.com/

Page 15: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scale up – use the right engine

● Forget MyISAM!

https://blogs.oracle.com/MySQL/entry/comparing_innodb_to_myisam_performance

Page 16: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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)

Page 17: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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)

Page 18: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scale out

Page 19: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 20: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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)

Page 21: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 22: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 23: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 24: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

PXC - Data consistency is priority

Node partitioned from the cluster

Page 25: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 26: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

GALERAREPLICATION

PXC - Automatic node provisioning

Fast and non-blockingwith Percona XtraBackup

node1

node2

JOINER

node4

DONOR

node3

SST

Page 27: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

GALERA

PXC – replication flexibility

Async master

Async slave

GTID

Page 28: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

PXC – WAN awareness

● WAN segments (Galera 3+)

DC1

DC2

DC3 DC3

DC2

DC1

● Smart donor selection● Less network traffic

Page 29: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Scaling out (writes)

● Functional Partitioning

● Sharding

Cluster A

Cluster B

ID 1-1000

ID 1001-2000

Page 30: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Sharding/partitioning – solutions

● Make your application shard aware (design your own logic)

● Use existing solutions● MySQL Fabric● Shard-Query

Page 31: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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)

Page 32: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

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

Page 33: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

www.percona.com

Learn from MySQL Community

Page 34: Atmosphere 2014: Scaling MySQL in 2014? - Przemyslaw Malkowski

[email protected]@mysqlmaniac.com

We're Hiring! www.percona.com/about-us/careers/