Scaling your App with MySQL Replication2. MySQL
• MySQL - the M in the LAMP stack
• open source
• flexible
• multi-user
• multi-engine
• I’m going to talk primarily about 5.0.50ish
3. What are you trying to
solve?
• bottle neck?
• read or write?
• location
• availability?
4. MySQL Replication
• Increase select query capacity
• Improve data localilty for multi-site
environments
• Categorise & Prioritise Queries
• Bring unknown weirdness
5. How?
• Queries get
• tagged with the origin server-id
• added to the bin-log
• Slave pulls bin-logs, executes queries
• also adds to local bin-log
6. Master/Slave
MySQL MySQL
MySQL
query replication MySQL
MySQL
Master Slave
Slave
Slave
Slave
Writes
Reads
App
7. Master/Master
query replication
MySQL MySQL
Master Master
query replication
read & write read & write
App
9. I have multiple database
servers, now what?
• select servers at app level
• proxy (MySQL Proxy, Zeus ZXTM)
• Round Robin DNS
11. Tools
• live topology diagram
(perl, GraphViz)
• server weighting
(memcached & app/proxy)
• scripted reseed
you’ll do this more often than you expect
also handy for building staging/sandboxes
12. each node
here is
You can
MySQL
get really
instance
crazy