73
Successful MySQL Scalability Ronald Bradford 2010.08 www.RonaldBradford.com @RonaldBradford #mysql

Successful MySQL Scalability

Embed Size (px)

Citation preview

Page 1: Successful MySQL Scalability

SuccessfulMySQL

Scalability

Ronald Bradford

2010.08

www.RonaldBradford.com @RonaldBradford #mysql

Page 2: Successful MySQL Scalability

The one hourversion

Page 3: Successful MySQL Scalability

Successful MySQL Scalability

Necessary PrinciplesSystem ArchitectureData AvailabilityBest PracticesBeing proactive

OUTLINE

Page 4: Successful MySQL Scalability

Successful MySQL Scalability

1

Page 5: Successful MySQL Scalability

Successful MySQL Scalability

Integrated monitoring and instrumentation

Action

Page 6: Successful MySQL Scalability

Successful MySQL Scalability

Question:

How do you know when your server is down or not accessible?

Answer:

The users will let us know.

EXAMPLE

Page 7: Successful MySQL Scalability

Successful MySQL Scalability

Monitoring/AlertingGraphicalHistoricalNecessaryGenerally missing/incompleteUseless for real-time analysis

How

Page 8: Successful MySQL Scalability

Successful MySQL Scalability

Monitoring/AlertingGraphicalHistoricalNecessaryGenerally missing/incompleteUseless for real-time analysis

How

REACTIVE

Page 9: Successful MySQL Scalability

Successful MySQL Scalability

DashboardThe state of NOW

Sampling at 1s/3s/5s

e.g. 0.1% of throughput

How

http://rb42.com/monitoring-needs

Page 10: Successful MySQL Scalability

Successful MySQL Scalability

DashboardThe state of NOW

Sampling at 1s/3s/5s

e.g. 0.1% of throughput

How

PROACTIVE

http://rb42.com/monitoring-needs

Page 11: Successful MySQL Scalability

Successful MySQL Scalability

InstrumentationImportant to business viability

e.g. orders per minute (KPI)

page load time

Seamless implementationi.e. no code changes to view real-time

extensible

How

1

Page 12: Successful MySQL Scalability

Successful MySQL Scalability

InstrumentationImportant to business viability

e.g. orders per minute (KPI)

page load time

Seamless implementationi.e. no code changes to view real-time

extensible

How

1PROACTIVE

Page 13: Successful MySQL Scalability

Successful MySQL Scalability

Monitoring + Instrumentation = Preemptive Analysis

WHY

Page 14: Successful MySQL Scalability

Successful MySQL Scalability

How

1✘

Page 15: Successful MySQL Scalability

Successful MySQL Scalability

How

1✔

< 1 second

Page 16: Successful MySQL Scalability

Successful MySQL Scalability

Preemptive Analysis

Fail early

Faster user response

Less physical resource impact

WHY

Page 17: Successful MySQL Scalability

Successful MySQL Scalability

Have a status websiteallow for comments (e.g. blog)

Have a public dashboard website

Host them somewhere else!

TIP

Page 18: Successful MySQL Scalability

Successful MySQL Scalability

2

Page 19: Successful MySQL Scalability

Successful MySQL Scalability

Seamless automated server

deployment

Action

Page 20: Successful MySQL Scalability

Successful MySQL Scalability

Actual Client

100+ production database servers

Full-time DBAs

No automated software installation

No single documented installation process

No version control

No auditing/verification

Example

Page 21: Successful MySQL Scalability

Successful MySQL Scalability

Basics

Version Control

Automated Build & Release

Integrated Monitoring

How

Page 22: Successful MySQL Scalability

Successful MySQL Scalability

Intermediate

Health Checks

Runtime config file management

Benchmarking

How

Page 23: Successful MySQL Scalability

Successful MySQL Scalability

Advanced

Server request queue

Automated discovery

Proactive scaling (up & down)

How

Page 24: Successful MySQL Scalability

Successful MySQL Scalability

Consistent and timely provisioning

Unattended installation with correct and reproducible configuration

Automated discovery

GOAL

Page 25: Successful MySQL Scalability

Successful MySQL Scalability

3

Page 26: Successful MySQL Scalability

Successful MySQL Scalability

Disaster is

inevitable

Action

Page 27: Successful MySQL Scalability

Successful MySQL Scalability

Question:Have you ever performed a database recovery?

Answer:No, why?

Example

Page 28: Successful MySQL Scalability

Successful MySQL Scalability

Consultant:Do you know that your daily backups only recover the data up to that time (e.g. 1 am). You know you have lost all your sales and data changes since then.

Customer:No, I didn’t know that.

Example

Page 29: Successful MySQL Scalability

Successful MySQL Scalability

Have a DR plan

Documented

Tested

Timed

Verified

HOW

Page 30: Successful MySQL Scalability

Successful MySQL Scalability

Test under production conditionsSystem Load

Database Size

End to End

HOW

Page 31: Successful MySQL Scalability

Successful MySQL Scalability

Know and practice for disaster

Provide confidence to management

Be as confident about your recovery as your scalability

GOAL

Page 32: Successful MySQL Scalability

Successful MySQL Scalability

What does your website look like when it’s down?

SIDEBAR!

Page 33: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!

Google Picasa

Page 34: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!✘

Page 35: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!

Mozilla

Page 36: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!✔

Page 37: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!✔

Page 38: Successful MySQL Scalability

Successful MySQL Scalability

4

Page 39: Successful MySQL Scalability

Successful MySQL Scalability

ApplicationProgramming

Interface

Action

Page 40: Successful MySQL Scalability

Successful MySQL Scalability

Public APIApplication web siteBatch processes

3 access paths to same data with different business rules

Example

Page 41: Successful MySQL Scalability

Successful MySQL Scalability

One code path for business functionality

Implied business documentation

Enforced data exchange standard

Testability

Why

Page 42: Successful MySQL Scalability

Successful MySQL Scalability

Technology independence

Business specification dependence (API)

Stress testable

GOAL

Page 43: Successful MySQL Scalability

Successful MySQL Scalability

Testing is not about what works, it’s

about breaking your software

SIDEBAR!

Page 44: Successful MySQL Scalability

Successful MySQL Scalability

5

Page 45: Successful MySQL Scalability

Successful MySQL Scalability

Support different levels of data

availability

Action

Page 46: Successful MySQL Scalability

Successful MySQL Scalability

Data can be:

Read & Write

Read

No Access

Cached

HOW

Page 47: Successful MySQL Scalability

Successful MySQL Scalability

Development Team:

We need a maintenance window for software

upgrades and new releases.

EXAMPLE

Page 48: Successful MySQL Scalability

Successful MySQL Scalability

Management Team:

No Downtime

EXAMPLE

Page 49: Successful MySQL Scalability

Successful MySQL Scalability

Development Team:

But we need this to fix problems and improve

performance.

EXAMPLE

Page 50: Successful MySQL Scalability

Successful MySQL Scalability

Management Team:

No Downtime

EXAMPLE

Page 51: Successful MySQL Scalability

Successful MySQL Scalability

What is your definition of no

downtime?

EXAMPLE

Page 52: Successful MySQL Scalability

Successful MySQL Scalability

Support downtimeSoftware upgrades

Support disasters

Reduce high load

Support partial functionality

WHY

Page 53: Successful MySQL Scalability

Successful MySQL Scalability

Meet the business needs of availability

There are ways to give greater perception of availability

GOAL

Page 54: Successful MySQL Scalability

Successful MySQL Scalability

6

Page 55: Successful MySQL Scalability

Successful MySQL Scalability

Support different scalability principles

Action

Page 56: Successful MySQL Scalability

Successful MySQL Scalability

Read Scalability

Write Scalability

Caching

HOW

Page 57: Successful MySQL Scalability

Successful MySQL Scalability

Depends on your R/W ratio

Depends on your business needs

Depends on rate of data change (caching)

HOW

Page 58: Successful MySQL Scalability

Successful MySQL Scalability

Consistency

Data Interoperability

ISSUES

Page 59: Successful MySQL Scalability

Successful MySQL Scalability

Support large scale growth with appropriate software architecture

Minimize human interaction

Ongoing review and improvement

GOAL

Page 60: Successful MySQL Scalability

Successful MySQL Scalability

SIDEBAR!

Availability options & scalability principles = scalable datastore

Page 61: Successful MySQL Scalability

Successful MySQL Scalability

7

Page 62: Successful MySQL Scalability

Successful MySQL Scalability

I only had one hour!

What’s NEXT

Page 63: Successful MySQL Scalability

Successful MySQL Scalability

Reduce deployment time

The right business metrics

Team dynamics

Managing risk

Continual improvement

Data interoperability

...

What’s NEXT

Asynchronous

Write once data

Consistency

Page 64: Successful MySQL Scalability

Successful MySQL Scalability

R

Page 65: Successful MySQL Scalability

Successful MySQL Scalability

Monitoring. Before, during and after NOW.

You may not be able to predict the future but you can preempt the future.

Operate below 90%. That 10% is your insurance policy. Invest in insurance.

RECAP

Page 66: Successful MySQL Scalability

Successful MySQL Scalability

Does your business exist without your data?

How long can your site be unavailable before customers go elsewhere?

RECAP

Page 67: Successful MySQL Scalability

Successful MySQL Scalability

Support 3 levels of real time data accessRead/Write, Read and no access

Support 3 different aspects of scalabilityRead, Write and Caching

RECAP

Page 68: Successful MySQL Scalability

Successful MySQL Scalability

If you can’t drive without a mouse, find somebody that can.

RECAP

Page 69: Successful MySQL Scalability

Successful MySQL Scalability

The most common MySQL scalability mistakes, and how to avoid them.

Reference

http://omniti.com/surge

Page 70: Successful MySQL Scalability

Successful MySQL Scalability

‣ 1. My website is slow?

‣ 2. I want to add new H/W. How do I change my application to support this?

‣ 3. The database is slow. My webpage takes five seconds to load.

‣ 4. Why is my database executing so many qps?

Reference

Page 71: Successful MySQL Scalability

Successful MySQL Scalability

‣ 5. My server has crashed with a hard drive failure

‣ 6. My replication slave can't keep up?

‣ 7. I can't access my website?

‣ 8. Why is my database so large?

‣ 9. My website seems to freeze or responds randomly?

Reference

Page 72: Successful MySQL Scalability

Successful MySQL Scalability

MySQL Sunday

O'Reilly MySQL Conference 2011

Colloborate 2011

Kaleidoscope (KScope) 2011

CONFERENCES

http://ronaldbradford.com/blog/2011-mysql-conferences-2010-09-07/

Page 73: Successful MySQL Scalability

Successful MySQL Scalability

http://ronaldbradford.com

[email protected]

Successful MySQL Scalability

CONTACT