SlideShare a Scribd company logo
Using MySQL in a
web-scale environment
David Landgren (@dlandgren, david@landgren.net)
Percona Live Europe Amsterdam
September 21-23, 2015
Using MySQL in a web-scale environment
Some facts and figures
Video hosting platform
10 years old
300 billion+ video views per month
400 million+ unique visitors per month
34th largest site world wide (comScore)
Largest European site with global reach
Classic LAMP Architecture
Linux (1400 servers)
Apache (250 servers)
Mysql (70 servers)
PHP
12 clusters
Limited use of horizontal partitioning
Percona 5.6 used (nearly) everywhere
InnoDB used (nearly) everywhere
No foreign keys or referential integrity
Using MySQL in a web-scale environment
Primary cluster
2 master servers for writes
25 slaves for reads
Additional slaves for special purposes (backups, devs)
Vertical partitioning, no sharding
No query cache
Using MySQL in a web-scale environment
Managing the farm
Apache ZooKeeper / zkfarmer
Slaves announce their presence in the farm
PHP framework is automatically aware (on next request)
https://github.com/rs/zkfarmer	
  
Using MySQL in a web-scale environment
Performance
Memcache deflects 10x more queries
Nearly all reads on PK
Organic growth in "slow" queries
count(*) still hurts us
Blindly kill long running queries
Using MySQL in a web-scale environment
All your base are optimized
How do we avoid fragmentation?
Perform rolling optimize	
  table	
  <foo> across the
schema we care about
Take an ordinary slave out of production, copy the latest
backup over, and send it back into production
	
  
Perform regular backups on a dedicated slave (Percona
Xtrabackup)
Spread the love
Spread the love^Wload
Slaves have a nominal weight (probability to be selected for
a given HTTP connection)
0
50
0.25
lag
weight
p
0
50
0.25
0
50
0.25
0
50
0.25
∑=200
Spread the load
Reduce production pressure on slaves that are not keeping
up with the replication from master
0
50
0.3125
lag
weight
p
0
50
0.3125
0
50
0.3125
120
10
0.0625
∑=160
Slow queries
Percona has some interesting parameters for managing
slow logs
§  log_slow_filter
§  log_slow_rate_limit
pt-query-digest <logfile>
Read the results regularly
Worst. Query. Ever.
SELECT	
  foo.foo_id	
  AS	
  id	
  FROM	
  foo	
  
INNER	
  JOIN	
  (	
  
	
  	
  	
  	
  SELECT	
  foo.foo_id	
  
	
  	
  	
  	
  FROM	
  foo	
  
	
  	
  	
  	
  INNER	
  JOIN	
  bar_quux	
  bar_gonk	
  ON	
  (bar_gonk.label	
  =	
  'splak'	
  AND	
  bar_gonk.value	
  =	
  'skroom')	
  
	
  	
  	
  	
  INNER	
  JOIN	
  foo_quux	
  foo_gonk	
  ON	
  (foo_gonk.label	
  =	
  'fwask'	
  AND	
  foo_gonk.value	
  =	
  'florf')	
  
	
  	
  	
  	
  INNER	
  JOIN	
  bar_has_quux	
  is_bar_gonk	
  ON	
  
	
  	
  	
  	
  	
  	
  	
  	
  (is_bar_gonk.bar_quux_id	
  =	
  bar_gonk.bar_quux_id	
  AND	
  is_bar_gonk.bar_id	
  =	
  foo.bar_id)	
  
	
  	
  	
  	
  INNER	
  JOIN	
  foo_has_quux	
  is_foo_gonk	
  ON	
  
	
  	
  	
  	
  	
  	
  	
  	
  (is_foo_gonk.foo_quux_id	
  =	
  foo_gonk.foo_quux_id	
  AND	
  is_foo_gonk.foo_id	
  =	
  foo.foo_id)	
  
	
  	
  	
  	
  UNION	
  
	
  	
  	
  	
  	
  	
  	
  	
  SELECT	
  baz.foo_id	
  FROM	
  baz	
  WHERE	
  baz.value	
  >	
  0	
  
)	
  X	
  ON	
  (X.foo_id	
  =	
  foo.foo_id)	
  
LEFT	
  JOIN	
  foo_has_fliff	
  zwot	
  ON	
  (zwot.foo_id	
  =	
  foo.foo_id	
  AND	
  zwot.foo_fliff_id	
  =	
  246)	
  
INNER	
  JOIN	
  foo_quux	
  bleep	
  ON	
  (bleep.label	
  =	
  'blort-­‐allow'	
  AND	
  bleep.value	
  =	
  'thlip')	
  
LEFT	
  JOIN	
  foo_quux	
  bap	
  ON	
  (bap.label	
  =	
  'blort'	
  AND	
  bap.value	
  =	
  'ba')	
  
LEFT	
  JOIN	
  foo_has_quux	
  blif	
  ON	
  (blif.foo_id	
  =	
  foo.foo_id	
  AND	
  blif.foo_quux_id	
  =	
  bap.foo_quux_id)	
  
LEFT	
  JOIN	
  foo_has_quux	
  fweep	
  ON	
  (fweep.foo_id	
  =	
  foo.foo_id	
  AND	
  fweep.foo_quux_id	
  =	
  bleep.foo_quux_id)	
  
WHERE	
  foo.a	
  =	
  1	
  AND	
  foo.b	
  =	
  0	
  AND	
  foo.c	
  =	
  0	
  AND	
  foo.d	
  =	
  0	
  AND	
  foo.e	
  =	
  0	
  AND	
  foo.f	
  =	
  0	
  AND	
  foo.g	
  =	
  1	
  
	
  	
  	
  	
  AND	
  foo.bar_id	
  =	
  12345	
  
	
  	
  	
  	
  AND	
  zwot.foo_fliff_id	
  IS	
  NULL	
  
	
  	
  	
  	
  AND	
  NOT	
  (blif.foo_id	
  IS	
  NULL	
  XOR	
  fweep.foo_id	
  IS	
  NULL)	
  
ORDER	
  BY	
  foo.tink	
  DESC	
  
Slow queries
Keep an eye on their evolution
https://github.com/box/Anemometer	
  
Analyze slow query logs to identify problematic queries
Slow queries
REALLY slow queries
REALLY slow queries
Save your platform, kill them
github.com/dailymotion/mysql-­‐genocide	
  
Graph the effects
Using MySQL in a web-scale environment
Watching technical debt
Information_schema.table_statistics
SELECT	
  t.table_name,	
  s.rows_read	
  
FROM	
  information_schema.tables	
  t	
  
LEFT	
  JOIN	
  information_schema.table_statistics	
  s	
  
	
  	
  	
  ON	
  (t.table_schema	
  =	
  s.table_schema	
  
	
  	
  	
  	
  	
  	
  	
  	
  and	
  t.table_name	
  =	
  s.table_name)	
  
WHERE	
  
	
  	
  	
  	
  t.table_schema	
  =	
  'myschema'	
  
	
  	
  	
  	
  AND	
  coalesce(rows_read,	
  0)	
  =	
  0	
  
ORDER	
  BY	
  1;	
  
Watching technical debt
Unused indices
SELECT	
  DISTINCT	
  t.table_name,	
  t.index_name,	
  s.rows_read	
  
FROM	
  statistics	
  t	
  
LEFT	
  JOIN	
  index_statistics	
  s	
  
	
  	
  	
  	
  USING	
  (table_schema,	
  table_name,	
  index_name)	
  
WHERE	
  t.table_schema	
  =	
  'myschema'	
  
	
  	
  	
  	
  AND	
  coalesce(s.rows_read,	
  0)	
  =	
  0	
  
ORDER	
  BY	
  1,	
  2;	
  
	
  
Using MySQL in a web-scale environment
Managing change
https://github.com/outbrain/propagator	
  
All schema changes are logged (and recorded in git)
Managing change (2)
Percona Online Schema Change
https://www.percona.com/doc/percona-­‐toolkit/2.1/
pt-­‐online-­‐schema-­‐change.html	
  
Future Directions
Global Transaction ID (GTID)
Parallel replication
Multiple source replication
Thank you!
David Landgren
(dland@github, @dlandgren)
david@landgren.net
Acknowledgements
All photos by Gézelin Grée
gezelingree.com / 10000lux.blogspot.com	
  
Comic drawn by Randall Munroe / xkcd.com	
  

More Related Content

What's hot (8)

PDF
2013 april gruff webinar san diego copy
BarbaraStarr2009
 
PDF
PHPTAL with CakePHP
Takashi Nojima
 
PDF
Development and practical use of CLI in perl 6
risou
 
PDF
Files in c
TanujaA3
 
ODP
CompilersAndLibraries
Staffan Tjernström
 
PDF
Duug - Ttypescript
Jan van Helvoort
 
PDF
Building custom sections in Umbraco
dawoe
 
PDF
Missing kids on you
guest3fa681
 
2013 april gruff webinar san diego copy
BarbaraStarr2009
 
PHPTAL with CakePHP
Takashi Nojima
 
Development and practical use of CLI in perl 6
risou
 
Files in c
TanujaA3
 
CompilersAndLibraries
Staffan Tjernström
 
Duug - Ttypescript
Jan van Helvoort
 
Building custom sections in Umbraco
dawoe
 
Missing kids on you
guest3fa681
 

Viewers also liked (20)

PDF
MySQL Cluster Scaling to a Billion Queries
Bernd Ocklin
 
PDF
E.B.M. Diploma
Nshoa Mba Andeme
 
PDF
Jupa_SolidCitric_products
Endre Birkeland
 
PDF
nift some work
Anupam Sawan
 
PPTX
DCHQ
luqman_dchq
 
DOC
folasade resume 3
Folasade Akintan
 
PDF
MetLife reaches settlement in lawsuit over alleged improper sales | CJOnline.com
Paula Story
 
PPTX
LLM - Developing Your Network
Greg Cohen
 
PPTX
Trabajo practico n° 3
Jessy Lopez
 
DOCX
NONDUMISO PORTIA MSELEKU
Nondumiso Portia Mseleku
 
PDF
500225_AWC Newsletter_Volume 3_FINAL_7-1-14
Shawn Groth
 
PDF
Portfolio_2015
James Blood
 
DOCX
статья ПРИЗМА сверкает гранями
Рома Алексеев
 
DOCX
Sales Manager-Chippy Simumba
Chippy Simumba
 
PDF
evaluation and outline of key changes and implementations
cseerussell
 
PDF
Master mx 55a edicion
Master Mx
 
DOCX
Video worksheet
kddickson17
 
PPTX
Audience Research
JacobDMBird
 
PDF
Master mx 28ª edicion
Master Mx
 
PDF
ENG3305_Adv_Essay_Writing_gay_men_and_barebacking
Eric Roberson
 
MySQL Cluster Scaling to a Billion Queries
Bernd Ocklin
 
E.B.M. Diploma
Nshoa Mba Andeme
 
Jupa_SolidCitric_products
Endre Birkeland
 
nift some work
Anupam Sawan
 
folasade resume 3
Folasade Akintan
 
MetLife reaches settlement in lawsuit over alleged improper sales | CJOnline.com
Paula Story
 
LLM - Developing Your Network
Greg Cohen
 
Trabajo practico n° 3
Jessy Lopez
 
NONDUMISO PORTIA MSELEKU
Nondumiso Portia Mseleku
 
500225_AWC Newsletter_Volume 3_FINAL_7-1-14
Shawn Groth
 
Portfolio_2015
James Blood
 
статья ПРИЗМА сверкает гранями
Рома Алексеев
 
Sales Manager-Chippy Simumba
Chippy Simumba
 
evaluation and outline of key changes and implementations
cseerussell
 
Master mx 55a edicion
Master Mx
 
Video worksheet
kddickson17
 
Audience Research
JacobDMBird
 
Master mx 28ª edicion
Master Mx
 
ENG3305_Adv_Essay_Writing_gay_men_and_barebacking
Eric Roberson
 
Ad

Similar to Using MySQL in a web-scale environment (20)

PDF
Introduction into MySQL Query Tuning for Dev[Op]s
Sveta Smirnova
 
PDF
Quick Wins
HighLoad2009
 
ODP
Beyond php - it's not (just) about the code
Wim Godden
 
PDF
Troubleshooting MySQL Performance
Sveta Smirnova
 
PDF
Query Optimization with MySQL 5.6: Old and New Tricks
MYXPLAIN
 
PPTX
Работа с индексами - лучшие практики для MySQL 5.6, Петр Зайцев (Percona)
Ontico
 
PDF
Beyond php - it's not (just) about the code
Wim Godden
 
PDF
Percona Live 2012PPT: MySQL Query optimization
mysqlops
 
PDF
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Jaime Crespo
 
PPTX
Mysql query optimization best practices and indexing
Alkin Tezuysal
 
PDF
Scaling MySQL Strategies for Developers
Jonathan Levin
 
PPTX
Alkin Tezuysal "MySQL Query Optimization Best Practices and Indexing"
Fwdays
 
ODP
Beyond php it's not (just) about the code
Wim Godden
 
ODP
Beyond php - it's not (just) about the code
Wim Godden
 
ODP
Beyond php - it's not (just) about the code
Wim Godden
 
PPTX
MySQL performance tuning
Anurag Srivastava
 
PDF
MySQL Query Optimisation 101
Federico Razzoli
 
PDF
MySQL Database Monitoring: Must, Good and Nice to Have
Sveta Smirnova
 
ODP
Beyond PHP - It's not (just) about the code
Wim Godden
 
PDF
Percona toolkit
Karwin Software Solutions LLC
 
Introduction into MySQL Query Tuning for Dev[Op]s
Sveta Smirnova
 
Quick Wins
HighLoad2009
 
Beyond php - it's not (just) about the code
Wim Godden
 
Troubleshooting MySQL Performance
Sveta Smirnova
 
Query Optimization with MySQL 5.6: Old and New Tricks
MYXPLAIN
 
Работа с индексами - лучшие практики для MySQL 5.6, Петр Зайцев (Percona)
Ontico
 
Beyond php - it's not (just) about the code
Wim Godden
 
Percona Live 2012PPT: MySQL Query optimization
mysqlops
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Jaime Crespo
 
Mysql query optimization best practices and indexing
Alkin Tezuysal
 
Scaling MySQL Strategies for Developers
Jonathan Levin
 
Alkin Tezuysal "MySQL Query Optimization Best Practices and Indexing"
Fwdays
 
Beyond php it's not (just) about the code
Wim Godden
 
Beyond php - it's not (just) about the code
Wim Godden
 
Beyond php - it's not (just) about the code
Wim Godden
 
MySQL performance tuning
Anurag Srivastava
 
MySQL Query Optimisation 101
Federico Razzoli
 
MySQL Database Monitoring: Must, Good and Nice to Have
Sveta Smirnova
 
Beyond PHP - It's not (just) about the code
Wim Godden
 
Ad

Recently uploaded (20)

PPTX
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
PPTX
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
PDF
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
PPTX
Research Design - Report on seminar in thesis writing. PPTX
arvielobos1
 
PPTX
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
PPTX
Orchestrating things in Angular application
Peter Abraham
 
PDF
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
PPTX
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
PPT
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
PDF
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
PPTX
西班牙武康大学毕业证书{UCAMOfferUCAM成绩单水印}原版制作
Taqyea
 
PPT
Computer Securityyyyyyyy - Chapter 1.ppt
SolomonSB
 
PPT
introductio to computers by arthur janry
RamananMuthukrishnan
 
PPTX
本科硕士学历佛罗里达大学毕业证(UF毕业证书)24小时在线办理
Taqyea
 
PPTX
unit 2_2 copy right fdrgfdgfai and sm.pptx
nepmithibai2024
 
PPTX
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
PDF
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
PPTX
ZARA-Case.pptx djdkkdjnddkdoodkdxjidjdnhdjjdjx
RonnelPineda2
 
PPTX
INTEGRATION OF ICT IN LEARNING AND INCORPORATIING TECHNOLOGY
kvshardwork1235
 
PPTX
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 
Optimization_Techniques_ML_Presentation.pptx
farispalayi
 
Lec15_Mutability Immutability-converted.pptx
khanjahanzaib1
 
𝐁𝐔𝐊𝐓𝐈 𝐊𝐄𝐌𝐄𝐍𝐀𝐍𝐆𝐀𝐍 𝐊𝐈𝐏𝐄𝐑𝟒𝐃 𝐇𝐀𝐑𝐈 𝐈𝐍𝐈 𝟐𝟎𝟐𝟓
hokimamad0
 
Research Design - Report on seminar in thesis writing. PPTX
arvielobos1
 
L1A Season 1 Guide made by A hegy Eng Grammar fixed
toszolder91
 
Orchestrating things in Angular application
Peter Abraham
 
Build Fast, Scale Faster: Milvus vs. Zilliz Cloud for Production-Ready AI
Zilliz
 
法国巴黎第二大学本科毕业证{Paris 2学费发票Paris 2成绩单}办理方法
Taqyea
 
Agilent Optoelectronic Solutions for Mobile Application
andreashenniger2
 
Apple_Environmental_Progress_Report_2025.pdf
yiukwong
 
西班牙武康大学毕业证书{UCAMOfferUCAM成绩单水印}原版制作
Taqyea
 
Computer Securityyyyyyyy - Chapter 1.ppt
SolomonSB
 
introductio to computers by arthur janry
RamananMuthukrishnan
 
本科硕士学历佛罗里达大学毕业证(UF毕业证书)24小时在线办理
Taqyea
 
unit 2_2 copy right fdrgfdgfai and sm.pptx
nepmithibai2024
 
Presentation3gsgsgsgsdfgadgsfgfgsfgagsfgsfgzfdgsdgs.pptx
SUB03
 
Azure_DevOps introduction for CI/CD and Agile
henrymails
 
ZARA-Case.pptx djdkkdjnddkdoodkdxjidjdnhdjjdjx
RonnelPineda2
 
INTEGRATION OF ICT IN LEARNING AND INCORPORATIING TECHNOLOGY
kvshardwork1235
 
一比一原版(SUNY-Albany毕业证)纽约州立大学奥尔巴尼分校毕业证如何办理
Taqyea
 

Using MySQL in a web-scale environment

  • 1. Using MySQL in a web-scale environment David Landgren (@dlandgren, [email protected]) Percona Live Europe Amsterdam September 21-23, 2015
  • 3. Some facts and figures Video hosting platform 10 years old 300 billion+ video views per month 400 million+ unique visitors per month 34th largest site world wide (comScore) Largest European site with global reach
  • 4. Classic LAMP Architecture Linux (1400 servers) Apache (250 servers) Mysql (70 servers) PHP
  • 5. 12 clusters Limited use of horizontal partitioning Percona 5.6 used (nearly) everywhere InnoDB used (nearly) everywhere No foreign keys or referential integrity
  • 7. Primary cluster 2 master servers for writes 25 slaves for reads Additional slaves for special purposes (backups, devs) Vertical partitioning, no sharding No query cache
  • 9. Managing the farm Apache ZooKeeper / zkfarmer Slaves announce their presence in the farm PHP framework is automatically aware (on next request) https://github.com/rs/zkfarmer  
  • 11. Performance Memcache deflects 10x more queries Nearly all reads on PK Organic growth in "slow" queries count(*) still hurts us Blindly kill long running queries
  • 13. All your base are optimized How do we avoid fragmentation? Perform rolling optimize  table  <foo> across the schema we care about Take an ordinary slave out of production, copy the latest backup over, and send it back into production   Perform regular backups on a dedicated slave (Percona Xtrabackup)
  • 15. Spread the love^Wload Slaves have a nominal weight (probability to be selected for a given HTTP connection) 0 50 0.25 lag weight p 0 50 0.25 0 50 0.25 0 50 0.25 ∑=200
  • 16. Spread the load Reduce production pressure on slaves that are not keeping up with the replication from master 0 50 0.3125 lag weight p 0 50 0.3125 0 50 0.3125 120 10 0.0625 ∑=160
  • 17. Slow queries Percona has some interesting parameters for managing slow logs §  log_slow_filter §  log_slow_rate_limit pt-query-digest <logfile> Read the results regularly
  • 18. Worst. Query. Ever. SELECT  foo.foo_id  AS  id  FROM  foo   INNER  JOIN  (          SELECT  foo.foo_id          FROM  foo          INNER  JOIN  bar_quux  bar_gonk  ON  (bar_gonk.label  =  'splak'  AND  bar_gonk.value  =  'skroom')          INNER  JOIN  foo_quux  foo_gonk  ON  (foo_gonk.label  =  'fwask'  AND  foo_gonk.value  =  'florf')          INNER  JOIN  bar_has_quux  is_bar_gonk  ON                  (is_bar_gonk.bar_quux_id  =  bar_gonk.bar_quux_id  AND  is_bar_gonk.bar_id  =  foo.bar_id)          INNER  JOIN  foo_has_quux  is_foo_gonk  ON                  (is_foo_gonk.foo_quux_id  =  foo_gonk.foo_quux_id  AND  is_foo_gonk.foo_id  =  foo.foo_id)          UNION                  SELECT  baz.foo_id  FROM  baz  WHERE  baz.value  >  0   )  X  ON  (X.foo_id  =  foo.foo_id)   LEFT  JOIN  foo_has_fliff  zwot  ON  (zwot.foo_id  =  foo.foo_id  AND  zwot.foo_fliff_id  =  246)   INNER  JOIN  foo_quux  bleep  ON  (bleep.label  =  'blort-­‐allow'  AND  bleep.value  =  'thlip')   LEFT  JOIN  foo_quux  bap  ON  (bap.label  =  'blort'  AND  bap.value  =  'ba')   LEFT  JOIN  foo_has_quux  blif  ON  (blif.foo_id  =  foo.foo_id  AND  blif.foo_quux_id  =  bap.foo_quux_id)   LEFT  JOIN  foo_has_quux  fweep  ON  (fweep.foo_id  =  foo.foo_id  AND  fweep.foo_quux_id  =  bleep.foo_quux_id)   WHERE  foo.a  =  1  AND  foo.b  =  0  AND  foo.c  =  0  AND  foo.d  =  0  AND  foo.e  =  0  AND  foo.f  =  0  AND  foo.g  =  1          AND  foo.bar_id  =  12345          AND  zwot.foo_fliff_id  IS  NULL          AND  NOT  (blif.foo_id  IS  NULL  XOR  fweep.foo_id  IS  NULL)   ORDER  BY  foo.tink  DESC  
  • 19. Slow queries Keep an eye on their evolution
  • 22. REALLY slow queries Save your platform, kill them github.com/dailymotion/mysql-­‐genocide   Graph the effects
  • 24. Watching technical debt Information_schema.table_statistics SELECT  t.table_name,  s.rows_read   FROM  information_schema.tables  t   LEFT  JOIN  information_schema.table_statistics  s        ON  (t.table_schema  =  s.table_schema                  and  t.table_name  =  s.table_name)   WHERE          t.table_schema  =  'myschema'          AND  coalesce(rows_read,  0)  =  0   ORDER  BY  1;  
  • 25. Watching technical debt Unused indices SELECT  DISTINCT  t.table_name,  t.index_name,  s.rows_read   FROM  statistics  t   LEFT  JOIN  index_statistics  s          USING  (table_schema,  table_name,  index_name)   WHERE  t.table_schema  =  'myschema'          AND  coalesce(s.rows_read,  0)  =  0   ORDER  BY  1,  2;    
  • 28. Managing change (2) Percona Online Schema Change https://www.percona.com/doc/percona-­‐toolkit/2.1/ pt-­‐online-­‐schema-­‐change.html  
  • 29. Future Directions Global Transaction ID (GTID) Parallel replication Multiple source replication
  • 30. Thank you! David Landgren (dland@github, @dlandgren) [email protected] Acknowledgements All photos by Gézelin Grée gezelingree.com / 10000lux.blogspot.com   Comic drawn by Randall Munroe / xkcd.com