Replication 101
-
Upload
giuseppe-maxia -
Category
Technology
-
view
1.882 -
download
0
description
Transcript of Replication 101
![Page 1: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/1.jpg)
©Continuent 2012.
MySQL Replication 101Giuseppe MaxiaContinuent, Inc
1Tuesday, April 10, 12
![Page 2: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/2.jpg)
about me - Giuseppe Maxia• a.k.a. The Data Charmer• QA Director at Continuent, Inc• Long time hacking with MySQL features• Formerly, community manager,db consultant, designer,
coder.• A passion for QA and open source• Blogger
•http://datacharmer.blogspot.com
2Tuesday, April 10, 12
![Page 3: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/3.jpg)
3
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
3Tuesday, April 10, 12
![Page 4: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/4.jpg)
4
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
4Tuesday, April 10, 12
![Page 5: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/5.jpg)
The world today is dominated by the web economy
www$$$
5
5Tuesday, April 10, 12
![Page 6: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/6.jpg)
Databases are the backbone
of the web economy
www$$$
6
6Tuesday, April 10, 12
![Page 7: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/7.jpg)
What database for the web?
7
7Tuesday, April 10, 12
![Page 8: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/8.jpg)
What database for the web?
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Insert Information Protection Policy Classification from Slide 8
The most powerful database
7
7Tuesday, April 10, 12
![Page 9: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/9.jpg)
What database for the web?
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Insert Information Protection Policy Classification from Slide 8
The most powerful database
The most advanced open source database
7
7Tuesday, April 10, 12
![Page 10: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/10.jpg)
What database for the web?
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Insert Information Protection Policy Classification from Slide 8
The most powerful database
The most advanced open source database
The most deployed open source database
7
7Tuesday, April 10, 12
![Page 11: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/11.jpg)
What database for the web?
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Insert Information Protection Policy Classification from Slide 8
The most powerful database
The most advanced open source database
The most deployed open source database
The most popular open source database
7
7Tuesday, April 10, 12
![Page 12: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/12.jpg)
Actually, MySQL databases are the
backbone of the web economy
www$$$
8
8Tuesday, April 10, 12
![Page 13: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/13.jpg)
What database for the web?
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Insert Information Protection Policy Classification from Slide 8
No built-in replication
No built-in replication
No built-in replication
Built-in replication
9
✔
✗✗✗
9Tuesday, April 10, 12
![Page 14: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/14.jpg)
More precisely, MySQL REPLICATION is the backbone of the web
economy
www$$$
10
10Tuesday, April 10, 12
![Page 15: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/15.jpg)
11
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
11Tuesday, April 10, 12
![Page 16: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/16.jpg)
a simple web application
scheme
12
database server
web server
clients
r/w requests
12Tuesday, April 10, 12
![Page 17: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/17.jpg)
database server
web servers
load balancer
clients
r/w requests
scaling web requests
1313Tuesday, April 10, 12
![Page 18: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/18.jpg)
writeread
database load on a simple
web application
14
85% 15%
14Tuesday, April 10, 12
![Page 19: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/19.jpg)
readwrite
database load on a successful web
application15
20% 80%
15Tuesday, April 10, 12
![Page 20: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/20.jpg)
16
database server
web servers
load balancer
clients
r/w requests✘
scaling up means buying
a bigger database
server
16Tuesday, April 10, 12
![Page 21: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/21.jpg)
17
readwrite
the bigger database server will eventually
have the same problem
80%20%
17Tuesday, April 10, 12
![Page 22: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/22.jpg)
read/writemaster
read/onlyslaves
web servers
R/W
R/O
load balancer
load balancer
clients
a web application
scheme with replication
1818Tuesday, April 10, 12
![Page 23: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/23.jpg)
read/writemaster
read/onlyslaves
readwriteread
database load with
replication19
85% 15% 100%
19Tuesday, April 10, 12
![Page 24: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/24.jpg)
read/writemaster
read/onlyslaves
readwriteread
scaling database load
with replication
20
85% 15% 100%
20Tuesday, April 10, 12
![Page 25: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/25.jpg)
Replication assessment
21
without replication with replication
database handling
performance
Point in Time recovery
failover
write scaling
backup
read scaling
easy harder
high lower (binary logs)
none easy
none possible
none minimal
with downtime without downtime
none easy
21Tuesday, April 10, 12
![Page 26: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/26.jpg)
22
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
22Tuesday, April 10, 12
![Page 27: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/27.jpg)
master
slaveIO thread
SQL thread
reads
reads
client
transaction
binary log
relay log replication concepts
2323Tuesday, April 10, 12
![Page 28: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/28.jpg)
24
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
24Tuesday, April 10, 12
![Page 29: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/29.jpg)
25
1 SHUT DOWN THE DATABASE SERVER
Master
25Tuesday, April 10, 12
![Page 30: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/30.jpg)
26
2 MAKE A BACKUP COPY
Master
26Tuesday, April 10, 12
![Page 31: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/31.jpg)
27
3 ENABLE THE MASTER
Configuration file[mysqld]log-bin=mysql-binserver-id=1
Master
27Tuesday, April 10, 12
![Page 32: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/32.jpg)
28
4 RESTART THE MASTER
Master
28Tuesday, April 10, 12
![Page 33: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/33.jpg)
29
5 CREATE REPLICATION USER
SQL commandGRANT REPLICATION SLAVE ON *.* to 'slave_user@'10.10.100.%' IDENTIFIED BY 'slave_pass';
Master
29Tuesday, April 10, 12
![Page 34: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/34.jpg)
30
6 INSTALL MySQL on the slave
Slave 1
Make sure that:• You're using the same version of MySQL • You have the same directory structure• The server is not started yet
30Tuesday, April 10, 12
![Page 35: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/35.jpg)
31
7 COPY THE MASTER DATA to the slave
Slave 1
31Tuesday, April 10, 12
![Page 36: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/36.jpg)
32
8 ENABLE THE SLAVE
Configuration file[mysqld]server-id=2relay-log=mysql-relayread-only# optional:log-bin=mysql-bin
Slave 1
32Tuesday, April 10, 12
![Page 37: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/37.jpg)
33
9 START THE SLAVE SERVER
Slave 1
33Tuesday, April 10, 12
![Page 38: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/38.jpg)
34
10 INITIALIZE THE SLAVE
SQL commandSET MASTER TOMASTER_HOST=master_IP,MASTER_PORT=3306,MASTER_USER=slave_user,MASTER_PASSWORD='slave_pwd';
Slave 1
34Tuesday, April 10, 12
![Page 39: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/39.jpg)
35
11 START THE SLAVE SERVICE
SQL commandSTART SLAVE;
Slave 1
35Tuesday, April 10, 12
![Page 40: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/40.jpg)
36
12 CHECK THE SLAVE
SQL commandSHOW SLAVE STATUS \G... Slave_IO_Running: YesSlave_SQL_Running: Yes...
Slave 1
36Tuesday, April 10, 12
![Page 41: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/41.jpg)
Troubleshooting
• SHOW SLAVE STATUS says SLAVE_IO_RUNNING=No
• Make sure that the slave host can connect to the master
• Make sure that master and slave have different Server-id
• Check the error log of both master and slave
37
37Tuesday, April 10, 12
![Page 42: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/42.jpg)
Testing the slave
• Create a table in the master.
• Make sure that the slave has replicated the table.
• Insert data in the master
• read that data in the slave
38
38Tuesday, April 10, 12
![Page 43: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/43.jpg)
What if the master was already logging?
• You have two options:
• Physical copy
• Logical copy
39
39Tuesday, April 10, 12
![Page 44: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/44.jpg)
Physical copy
• stop master
• make copy
• remove binary log files and index
• start master
• (alternative: use xtrabackup)
40
40Tuesday, April 10, 12
![Page 45: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/45.jpg)
Logical copy
• mysqldump --all-databases --master-data
41
41Tuesday, April 10, 12
![Page 46: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/46.jpg)
Common replication commands • CHANGE MASTER TO
• SHOW MASTER STATUS
• SHOW SLAVE STATUS
• START SLAVE
• STOP SLAVE
• RESET MASTER (caution!)
• RESET SLAVE (caution!)
42
42Tuesday, April 10, 12
![Page 47: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/47.jpg)
CHANGE MASTER TO basic syntaxSTOP SLAVE;
CHANGE MASTER TOMASTER_HOST='hostname', # or IPMASTER_PORT=3306,MASTER_USER='slaveuser',MASTER_PASSWORD='slavepassword',MASTER_LOG_FILE='filename', # default: first binlogMASTER_LOG_POS=123456; # default: from the beginning
START SLAVE;
43Tuesday, April 10, 12
![Page 48: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/48.jpg)
44
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
44Tuesday, April 10, 12
![Page 49: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/49.jpg)
45
1 NO NEED TO STOP THE MASTER!
Master
45Tuesday, April 10, 12
![Page 50: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/50.jpg)
46
2 STOP THE SLAVE
SQL commandSTOP SLAVE IO_THREAD;# wait until the SQL_THREAD# has done everythingSTOP SLAVE SQL_THREAD;# STOP THE SERVER
Slave 1
46Tuesday, April 10, 12
![Page 51: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/51.jpg)
47
3 MAKE A COPY OF THE DATA DIRECTORY
Slave 1
47Tuesday, April 10, 12
![Page 52: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/52.jpg)
48
4 RESTART THE SLAVE
Slave 1
48Tuesday, April 10, 12
![Page 53: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/53.jpg)
49
5 INSTALL MySQL on the new slave
Slave 2
Make sure that:• You're using the same version of MySQL • You have the same directory structure• The server is not started yet
49Tuesday, April 10, 12
![Page 54: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/54.jpg)
50
6 COPY THE old slave DATA on the slave
Slave 2
50Tuesday, April 10, 12
![Page 55: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/55.jpg)
51
7 ENABLE THE NEW SLAVE
Configuration file[mysqld]server-id=3relay-log=mysql-relayread-only # optional:log-bin=mysql-bin
Slave 2
must be unique!
51Tuesday, April 10, 12
![Page 56: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/56.jpg)
52
8 START THE NEW SLAVE
Slave 2
52Tuesday, April 10, 12
![Page 57: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/57.jpg)
53
9 CHECK THE SLAVE
SQL commandSHOW SLAVE STATUS \G... Slave_IO_Running: YesSlave_SQL_Running: Yes...
Slave 2
53Tuesday, April 10, 12
![Page 58: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/58.jpg)
Why it works
• No need to issue a CHANGE MASTER TO command.
• Because we cloned the old slave
• The new slave gets its parameters from the .info files in the data directory
54
54Tuesday, April 10, 12
![Page 59: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/59.jpg)
Starting and stopping replication
55Tuesday, April 10, 12
![Page 60: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/60.jpg)
Starting and stopping replicationSTART SLAVE;
55Tuesday, April 10, 12
![Page 61: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/61.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;
55Tuesday, April 10, 12
![Page 62: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/62.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;
55Tuesday, April 10, 12
![Page 63: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/63.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;START SLAVE UNTIL MASTER_LOG_FILE='filename', MASTER_LOG_POS=xxxx;
55Tuesday, April 10, 12
![Page 64: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/64.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;START SLAVE UNTIL MASTER_LOG_FILE='filename', MASTER_LOG_POS=xxxx;STOP SLAVE;
55Tuesday, April 10, 12
![Page 65: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/65.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;START SLAVE UNTIL MASTER_LOG_FILE='filename', MASTER_LOG_POS=xxxx;STOP SLAVE;STOP SLAVE SQL_THREAD;
55Tuesday, April 10, 12
![Page 66: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/66.jpg)
Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;START SLAVE UNTIL MASTER_LOG_FILE='filename', MASTER_LOG_POS=xxxx;STOP SLAVE;STOP SLAVE SQL_THREAD;STOP SLAVE IO_THREAD;
55Tuesday, April 10, 12
![Page 67: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/67.jpg)
Hijacking the agenda
• MySQL Sandbox
56
AGENDA
56Tuesday, April 10, 12
![Page 68: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/68.jpg)
MySQL Sandbox
• Free software (Perl under GPL)
• One (unix) host
• Many database servers
• Single or multiple sandboxes
• Customized scripts to use the servers
• Standard or circular replication
• Installs IN SECONDS
http://mysqlsandbox.net
57Tuesday, April 10, 12
![Page 69: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/69.jpg)
overview
MySQLserver
MySQLserver
Data DB1
DB2 DB3
Data DB1
DB2 DB3DATA DIRECTORY
PORT
SOCKET
58Tuesday, April 10, 12
![Page 70: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/70.jpg)
overview
MySQLserver
MySQLserver
Data DB1
DB2 DB3
Data DB1
DB2 DB3
SAME DATA
DIRECTORY?
DATA CORRUPTION
/var/lib/mysql /var/lib/mysql
59Tuesday, April 10, 12
![Page 71: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/71.jpg)
overview
MySQLserver
MySQLserver
SAME PORT or SOCKET?
DOES NOT START
/tmp/mysql.sock /tmp/mysql.sock
33063306
60Tuesday, April 10, 12
![Page 72: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/72.jpg)
The hard way
61Tuesday, April 10, 12
![Page 73: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/73.jpg)
The hard way
Read the manual
61Tuesday, April 10, 12
![Page 74: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/74.jpg)
The hard way
Read the manual try to figure out what to change
61Tuesday, April 10, 12
![Page 75: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/75.jpg)
The hard way
Read the manual try to figure out what to change Install
61Tuesday, April 10, 12
![Page 76: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/76.jpg)
The easy way
$ make_sandbox \ /path/to/mysql-5.1.54_linux.tar.gz
# it should work always
MySQL Sandbox
62Tuesday, April 10, 12
![Page 77: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/77.jpg)
The easier way
$ make_sandbox 5.1.54
Prepare once Install many times
# some # preliminary # work
63Tuesday, April 10, 12
![Page 78: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/78.jpg)
The easiest way
$ sb 5.1.54
Prepare once Install many times
# some # preliminary # work
64Tuesday, April 10, 12
![Page 79: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/79.jpg)
MySQL Sandbox
MySQLserver
VERSION
$SANDBOX_HOME/msb_VERSION/dataData DB1
DB2 DB3
VERSION
/tmp/mysql_VERSION.sock
65Tuesday, April 10, 12
![Page 80: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/80.jpg)
MySQL Sandbox
MySQLserver
5.1.54
$SANDBOX_HOME/msb_5_1_54/dataData DB1
DB2 DB3
5154
/tmp/mysql_5154.sock
66Tuesday, April 10, 12
![Page 81: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/81.jpg)
MySQL Sandbox
MySQLserver
5.5.9
$SANDBOX_HOME/msb_5_5_09/dataData DB1
DB2 DB3
5509
/tmp/mysql_5509.sock
67Tuesday, April 10, 12
![Page 82: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/82.jpg)
Single SandboxMySQLserver
customized scripts
startstop
restartstatusclear
send_killuse
68Tuesday, April 10, 12
![Page 83: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/83.jpg)
Multiple SandboxMySQLserver
customized scripts
start_allstop_all
restart_allstatus_allclear_all
send_kill_all
use_all
ms1s2
n1n2n3
69Tuesday, April 10, 12
![Page 84: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/84.jpg)
Where do you get it
•from CPANsudo su -
cpan MySQL::Sandbox
•from launchpadhttp://launchpad.net/mysql-sandbox
70Tuesday, April 10, 12
![Page 85: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/85.jpg)
The easy replication way
# some# preparation
MySQL Sandbox
$ make_replication_sandbox \ /path/to/mysql-5.1.54_linux.tar.gz
Prepare once Install many times
$ make_replication_sandbox 5.1.54
71Tuesday, April 10, 12
![Page 86: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/86.jpg)
default architecture
$HOME
/sandboxes opt
mysql
$SANDBOX_HOME
$SANDBOX_BINARY
expandedtarballs
installed sandboxes
72Tuesday, April 10, 12
![Page 87: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/87.jpg)
default architecture
$HOME
/sandboxes opt
mysql
5.0.91
5.1.45
5.1.48
5.5.4
msb_5_0_91
msb_5_1_48
rsandbox_5_1_48
master
node1
node273Tuesday, April 10, 12
![Page 88: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/88.jpg)
74Tuesday, April 10, 12
![Page 89: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/89.jpg)
creating a single sanbox
make_sandbox \ /path/to/mysql-X.X.XX-OS.tar.gz
75Tuesday, April 10, 12
![Page 90: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/90.jpg)
using a single sanbox
# after # make_sandbox \# /path/to/mysql-X.X.XX-OS.tar.gz
$ cd $SANDBOX_HOME/msb_X_X_XX$ ./use
76Tuesday, April 10, 12
![Page 91: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/91.jpg)
creating a single sanboxwith a specific options file
make_sandbox \ /path/to/mysql-X.X.XX-OS.tar.gz \ --my_file=/path/to/my.cnf
77Tuesday, April 10, 12
![Page 92: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/92.jpg)
easily create a sandbox after the first one
$ cd $HOME/opt/mysql$ gunzip -c \ /path/to/mysql-5.1.34-osx10.5-x86.tar.gz \ | tar -xf -$ mv mysql-5.1.34-osx10.5-x86 5.1.34$ make sandbox 5.1.34
The long way
# $SANDBOX_BINARY
78Tuesday, April 10, 12
![Page 93: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/93.jpg)
easily create a sandbox after the first one
$ make_sandbox \ path/to/mysql-5.1.34-osx10.5-x86.tar.gz \ --export_binaries
The short way
79Tuesday, April 10, 12
![Page 94: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/94.jpg)
starting a single sanbox
$ cd $SANDBOX_HOME/msb_X_X_XX$ ./start
80Tuesday, April 10, 12
![Page 95: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/95.jpg)
starting a single sanboxwith temporary options
$ cd $SANDBOX_HOME/msb_X_X_XX$ ./start --option=value
$ ./restart --option=value
$ ./start --key-buffer=20000000
81Tuesday, April 10, 12
![Page 96: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/96.jpg)
creating a sandbox with custom port and directory
$ make_sandbox 5.1.34 \ --sandbox_port=7800 \ --sandbox_directory=mickeymouse
82Tuesday, April 10, 12
![Page 97: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/97.jpg)
creating a sandbox with automatic port checking
$ make_sandbox 5.1.34 --check_port
# if 5.1.34 is free# port=5134# directory=msb_5_1_34# else# port=5135 (or the first free)# directory=msb_5_1_34_a
83Tuesday, April 10, 12
![Page 98: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/98.jpg)
create a replication sandbox
$ make_replication_sandbox \ path/to/mysql-5.1.34-osx10.5-x86.tar.gz
84Tuesday, April 10, 12
![Page 99: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/99.jpg)
create a circular replication sandbox
$ make_replication_sandbox \ --circular=4 \ path/to/mysql-5.1.34-osx10.5-x86.tar.gz
85Tuesday, April 10, 12
![Page 100: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/100.jpg)
changing port to an existing sandbox
$ sbtool -o port \ -s /path/to/source/sandbox \ --new_port=XXXX
86Tuesday, April 10, 12
![Page 101: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/101.jpg)
installing the innodb plugin
$ sbtool -o plugin \ --plugin=innodb \ -s /path/to/source/sandbox
87Tuesday, April 10, 12
![Page 102: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/102.jpg)
creating a replication sandbox with new base port
$ make_replication_sandbox \ --replication_directory=newwdir \ --check_base_port 5.0.79
# Creates a replication directory under# $SANDBOX_HOME/newdir# The previous one is preserved. # No conflicts happen
88Tuesday, April 10, 12
![Page 103: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/103.jpg)
How to set up replication
DEMO
89
AGENDA
89Tuesday, April 10, 12
![Page 104: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/104.jpg)
90
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
90Tuesday, April 10, 12
![Page 105: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/105.jpg)
Binary log formats
• Statement based replication
• default
• available since 3.23
• Row based replication
• introduced in 5.1
• ROW or MIXED
91
91Tuesday, April 10, 12
![Page 106: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/106.jpg)
Viewing the binary logs# statement based replication
$ mysqlbinlog binary-log-name
# or, as a SQL commandSHOW BINLOG EVENTS IN 'binary-log-name';
# row based replication
$ mysqlbinlog --verbose \ --base64-output=decode-rows binary-log-name
92Tuesday, April 10, 12
![Page 107: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/107.jpg)
binary log examples# statement based replication
mysqlbinlog binary-log-name
# row based replication
mysqlbinlog --verbose \ --base64-output=decode-rows binary-log-name
93Tuesday, April 10, 12
![Page 108: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/108.jpg)
94
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
94Tuesday, April 10, 12
![Page 109: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/109.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 110: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/110.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 111: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/111.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 112: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/112.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 113: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/113.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 114: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/114.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 115: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/115.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 116: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/116.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 117: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/117.jpg)
what gets replicated
95
What Statement-based row-basedinsert/update/delete statement affected recordsschema/table/view
creation/drop statement statement
stored routine/trigger creation/drop statement statement
stored procedure call statements executed inside SP affected records
stored function call function call affected records
trigger execution none: the slave runs the trigger
affected records moved. No trigger runs
event creation slaveside disabled event
slaveside disabled event
event execution statement affected records
95Tuesday, April 10, 12
![Page 118: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/118.jpg)
Binary logs in practice
DEMO
96
AGENDA
96Tuesday, April 10, 12
![Page 119: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/119.jpg)
97
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
97Tuesday, April 10, 12
![Page 120: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/120.jpg)
From single server application
98
r/w requests
98Tuesday, April 10, 12
![Page 121: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/121.jpg)
To replication-aware application
99
read/writemaster
read/onlyslaves
R/WR/O
load balancer
99Tuesday, April 10, 12
![Page 122: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/122.jpg)
Single server application$link = mysql_connect(
$server_IP, 'mysql_user', 'mysql_password');$result = mysql_query('INSERT INTO table_name (x) VALUES (1)',$link);$result = mysql_query('SELECT * FROM table_name WHERE x=1',$link);
100100Tuesday, April 10, 12
![Page 123: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/123.jpg)
Making an application aware of replication
101
connectreadwrite
IPuserpassword
<<R/W database handling>>
db
connect
IPuserpassword
<<database handling>>db
read
IPuserpassword
<<read-only database handling>>
db
connectreadwrite
IPuserpassword
<<R/W database handling>>
db
101Tuesday, April 10, 12
![Page 124: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/124.jpg)
Using replication: the WRONG way
102
R/W split by
statement
Write statement?
Connect to the master
Yes
Write to the master
Stop
No
Connect to the next available
slave
Read from slave
102Tuesday, April 10, 12
![Page 125: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/125.jpg)
Why statement split is wrong
• Breaks transactions
• High risk of inconsistency
• Loses or corrupts data
103
103Tuesday, April 10, 12
![Page 126: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/126.jpg)
Using replication:the RIGHT way
104
R/W split by function
Write function?
Connect to the master
Yes
Read and write from master
Stop
No
Connect to the next available
slave
Read from slave
more queries?
No
Yesmore
queries?
No
Yes
104Tuesday, April 10, 12
![Page 127: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/127.jpg)
Replication is single threaded
• Let’s assume you have two queries on the master
• one query takes 3 minutes to complete
• the other takes 5 minutes
• Both start at 12:00 noon
105
105Tuesday, April 10, 12
![Page 128: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/128.jpg)
SLAVE
MASTER
Single thread replication
106
12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
106Tuesday, April 10, 12
![Page 129: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/129.jpg)
SLAVE
MASTER
Single thread replication
106
(does nothing)
QUERY 1
12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
QUERY 2
106Tuesday, April 10, 12
![Page 130: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/130.jpg)
SLAVE
MASTER
Single thread replication
106
(does nothing)
QUERY 1
12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
QUERY 1
QUERY 2
106Tuesday, April 10, 12
![Page 131: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/131.jpg)
SLAVE
MASTER
Single thread replication
106
(does nothing)
QUERY 1
12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
QUERY 1 QUERY 2
QUERY 2
106Tuesday, April 10, 12
![Page 132: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/132.jpg)
SLAVE
MASTER
Single thread replication
107
does nothing
QUERY 1
QUERY 2
QUERY 3
QUERY 4
QUERY 5
12:00 12:01 12:02 12:03 12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
QUERY 1 QUERY 2
QUERY 6
107Tuesday, April 10, 12
![Page 133: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/133.jpg)
108
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
108Tuesday, April 10, 12
![Page 134: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/134.jpg)
109
Sample monitoring
master
slave
Get master binlog and position
get slave status
Running?
Yes
No
alert
Same or later binlog/position?
check table contents
NoYes
109Tuesday, April 10, 12
![Page 135: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/135.jpg)
commands for checking replicationmaster> SHOW MASTER STATUS
master> SHOW PROCESSLIST
slave> SHOW SLAVE STATUS
slave> SHOW PROCESSLIST
110Tuesday, April 10, 12
![Page 136: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/136.jpg)
replication user seen in the mastermaster > show processlist\G*************************** 1. row *************** Id: 2 User: rsandbox Host: localhost:57011 db: NULLCommand: Binlog Dump Time: 81625 State: Master has sent all binlog to slave; waiting for binlog to be updated Info: NULL[...]
111Tuesday, April 10, 12
![Page 137: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/137.jpg)
IO-thread in the slaveslave > show processlist\G*************************** 1. row *************** Id: 2 User: system user Host: db: NULLCommand: Connect Time: 124801 State: Waiting for master to send event Info: NULL[...]
112Tuesday, April 10, 12
![Page 138: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/138.jpg)
SQL thread in the slaveslave > show processlist\G[...]*************************** 2. row *************** Id: 3 User: system user Host: db: NULLCommand: Connect Time: 124712 State: Slave has read all relay log; waiting for the slave I/O thread to update it Info: NULL[...]
113Tuesday, April 10, 12
![Page 139: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/139.jpg)
monitoring replicationmaster> SHOW MASTER STATUS
slave> SHOW SLAVE STATUS
FULL SCRIPTS:
http://datacharmer.blogspot.com/2011/04/refactored-again-poor-mans-mysql.html
http://forge.mysql.com/tools/tool.php?id=6
114Tuesday, April 10, 12
![Page 140: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/140.jpg)
show master status File: mysql-bin.000002
Position: 78045744
Binlog_Do_DB:
Binlog_Ignore_DB:
115Tuesday, April 10, 12
![Page 141: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/141.jpg)
show slave status Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: rsandbox
Master_Port: 27371
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 78045744
Relay_Log_File: mysql_sandbox27372-relay-bin.000055
Relay_Log_Pos: 78045889
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
116Tuesday, April 10, 12
![Page 142: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/142.jpg)
show slave status ...
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
...
117Tuesday, April 10, 12
![Page 143: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/143.jpg)
show slave status...
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 78045744
Relay_Log_Space: 78046100
...
Seconds_Behind_Master: 0
...
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
118Tuesday, April 10, 12
![Page 144: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/144.jpg)
Breaking (and fixing) replication
DEMO
119
AGENDA
119Tuesday, April 10, 12
![Page 145: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/145.jpg)
120
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
120Tuesday, April 10, 12
![Page 146: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/146.jpg)
Logs rotation# server variables
max-binlog-sizeexpire-log-days
# logs commands
SHOW MASTER LOGS;PURGE MASTER LOGS TO 'filename';FLUSH [BINARY] LOGS;
121Tuesday, April 10, 12
![Page 147: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/147.jpg)
122
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
122Tuesday, April 10, 12
![Page 148: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/148.jpg)
123
Replacing a slave
Slave crashes
are there more slaves?
STOP the master STOP one
slave
YesNo
add the first slave
add another slave
Stop
123Tuesday, April 10, 12
![Page 149: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/149.jpg)
124
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
124Tuesday, April 10, 12
![Page 150: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/150.jpg)
125
Replacing the master
Master crashes
Let all slaves catch up with
execution
FIND the most up to date slave
STOP replication in
all slaves
make it the master
Stop
FIND which transactions are
missing from other slaves
connect all slaves to the new master
run missing transactions
to other slaves
125Tuesday, April 10, 12
![Page 151: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/151.jpg)
Planned master switch
• Stop accepting writes
• Wait until all slaves have caught up
• Stop replication in all slaves
• Promote a slave to master
• Point all slaves to the new master
126Tuesday, April 10, 12
![Page 152: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/152.jpg)
Changing a failed master
• Pre-requisite:
• log_bin and log_slave_updates must be enabled in all the slaves
• If not, there is more manual labor
127Tuesday, April 10, 12
![Page 153: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/153.jpg)
Changing a failed master (1)
• Wait until all slaves have caught up
• Identify the most advanced slave
• Make that slave the new master
• ... so far, so good
128Tuesday, April 10, 12
![Page 154: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/154.jpg)
Changing a failed master (2)• For each remaining slave:
• Find the missing statements
• Find the LAST statement replicated by the slave
• Find the same statement in the new master binlog (*)
• get the position of the NEXT statement
(*) if log_slave_updates was not enabled, you need to convert the relay log statements to SQL and do the next step manually
129Tuesday, April 10, 12
![Page 155: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/155.jpg)
Changing a failed master (3)
• For each remaining slave:
• Apply the missing statements
• CHANGE MASTER TO master_host=”new_master_hostname”, master_port=new_master_port, master_log_file=”mysql-bin.xxxxxx”, master_log_pos=YYYY
130Tuesday, April 10, 12
![Page 156: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/156.jpg)
Reasons for complexity
• No global transaction ID
131Tuesday, April 10, 12
![Page 157: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/157.jpg)
What is a global transaction ID
• A unique identifier of a transaction
• Unique for the whole cluster, not for each node
• Generated by the ultimate source (the master)
• Does not change when the transaction goes through an intermediate master
132Tuesday, April 10, 12
![Page 158: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/158.jpg)
Why should you care
• Failure recovery
• MySQL DOES NOT have it
• What can you do? Either wait for MySQL 5.6 or use Tungsten Replicator.
133Tuesday, April 10, 12
![Page 159: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/159.jpg)
134
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
134Tuesday, April 10, 12
![Page 160: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/160.jpg)
Slave = master replacement
• if:
• there are no filters;
• you are monitoring replication
• you make sure data is consistent
135
135Tuesday, April 10, 12
![Page 161: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/161.jpg)
Slave != backup• There is no replacement for a good backup.
• Data loss due to a mistake in the master will propagate to the slaves.
• Disasters are always smarter than replication.
• Do your backups!
• Session on Wednesday at 12pm: "Be a Data Management Hero with Good Backups!"
136
136Tuesday, April 10, 12
![Page 162: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/162.jpg)
137
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
137Tuesday, April 10, 12
![Page 163: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/163.jpg)
Replication =
let the slave do the dirty work
138Tuesday, April 10, 12
![Page 164: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/164.jpg)
master
slaves
STOP SLAVE
remove slave from load balancer
START SLAVE
perform backup
attach slave to load
balancer
Let slave catch up
backup
139Tuesday, April 10, 12
![Page 165: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/165.jpg)
140
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
140Tuesday, April 10, 12
![Page 166: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/166.jpg)
master
slaves
STOP SLAVE
remove slave from load balancer
START SLAVE
calculate summary
tables
attach slave to load
balancer
Let slave catch up
makesummary
tables
141Tuesday, April 10, 12
![Page 167: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/167.jpg)
master
slave
innodbnon partitioned
slave
innodbnon partitionedinnodb
partitioned by range
slave
MyISAMpartitioned by range
Partitionsfor heavy statistics
142Tuesday, April 10, 12
![Page 168: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/168.jpg)
master
slave
innodbnon partitioned
slave
innodbnon partitioned
ARCHIVEpartitioned by range
(date)
slave
ARCHIVEpartitioned by range
(product)
slave
ARCHIVEpartitioned by range
(location)
Simulating multiple
dimensions
143Tuesday, April 10, 12
![Page 169: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/169.jpg)
144
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
144Tuesday, April 10, 12
![Page 170: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/170.jpg)
READ-ONLY slave
• Good practice: make a slave read-only
• Caveat 1: if promoting a slave, you need to remove the read-only option;
• Caveat 1: a user with SUPER privilege can write to a read-only slave
145
145Tuesday, April 10, 12
![Page 171: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/171.jpg)
Default engine
• Caveat: default storage engine is not replicated.
• Example: master with default engine=Innodb and slave with default engine=MyISAM
• a CREATE TABLE without the ENGINE clause will use different engines on master and slave
146
146Tuesday, April 10, 12
![Page 172: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/172.jpg)
master-to-master and circular replication
DEMO
147
AGENDA
147Tuesday, April 10, 12
![Page 173: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/173.jpg)
Common filters
• on the master
• binlog-do-db
• binlog ignore-db
• on the slave
• replicate-do-db
• replicate-ignore-db
148
148Tuesday, April 10, 12
![Page 174: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/174.jpg)
Common filters
• on the master
• binlog-do-db
• binlog ignore-db
• on the slave
• replicate-do-db
• replicate-ignore-db
148
DO NOT USE!
148Tuesday, April 10, 12
![Page 175: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/175.jpg)
do Filters
149
all data comes to the master
The master logs only some of the transactions
The slave only gets some of the above
replicate-do-*
binlog-do-*
transactions from client
What happens when everything goes right
149Tuesday, April 10, 12
![Page 176: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/176.jpg)
ignore Filters
150
all data comes to the master
The master logs all the transactions, except the ones that should be ignored
The slave further filters some of the above
replicate-ignore-*
binlog-ignore-*
transactions from client
150Tuesday, April 10, 12
![Page 177: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/177.jpg)
What happens when something goes wrongfilters
151
Master my.cnf:binlog-do-db=foo
foo
bar
use foo;insert into bar.t1 values (1)
it is replicated (breaks replication)
use bar;insert into foo.t1 values (1)
is NOT replicated
151Tuesday, April 10, 12
![Page 178: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/178.jpg)
What happens when something goes wrongfilters
152
slave my.cnf:replicate-do-db=foo
foo
bar
use foo;insert into bar.t1 values (1)
it is replicated (breaks replication)
use bar;insert into foo.t1 values (1)
is NOT replicated
152Tuesday, April 10, 12
![Page 179: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/179.jpg)
"Safer" filters
153
• on the slave:
• replicate-wild-do-table=db_name.%
• replicate-wild-do-table=foo%.bar%
• replicate-wild-ignore-table=db_name.%
• replicate-wild-ignore-table=foo%.bar%
153Tuesday, April 10, 12
![Page 180: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/180.jpg)
"Safer" filters
153
• on the slave:
• replicate-wild-do-table=db_name.%
• replicate-wild-do-table=foo%.bar%
• replicate-wild-ignore-table=db_name.%
• replicate-wild-ignore-table=foo%.bar%
DON'T MIX "do" and "ignore" filters
153Tuesday, April 10, 12
![Page 181: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/181.jpg)
General rules of replication filters
• DON'T USE filters on the master.
• If you apply slave filters, the slave is not suitable for replacing a master or taking backups;
• Filters can break replication;
• Slave filters don't save bandwidth.
154
154Tuesday, April 10, 12
![Page 182: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/182.jpg)
155
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
155Tuesday, April 10, 12
![Page 183: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/183.jpg)
Read more
• The MySQL online manual
http://dev.mysql.com/doc
156
156Tuesday, April 10, 12
![Page 184: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/184.jpg)
High Performance MySQL
157Tuesday, April 10, 12
![Page 185: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/185.jpg)
MySQL High Availability
158Tuesday, April 10, 12
![Page 186: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/186.jpg)
Web Operations
159Tuesday, April 10, 12
![Page 187: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/187.jpg)
Cloud Application Architectures
160Tuesday, April 10, 12
![Page 188: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/188.jpg)
161
Why replication • The web economy• Scaling out
How to set replication • From single server to replication• Adding a slave
Using Replication• Binary log formats• What gets replicated and how• Replication awareness
Managing replication
• Monitoring• Log management• Replacing a slave• Replacing a master
What Replication is for• master replacement• backup• better reads
Gotchas, tips, and tricks
More info • What to read • More replication sessions
AGENDA
161Tuesday, April 10, 12
![Page 189: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/189.jpg)
More replication sessions - Wednesday• 11am Building a multi-master, multi-region database
infrastructure in Amazon EC2
• 11am Performance practices for minimizing replication delay
• 1pm Diagnosing & Fixing MySQL Replication
• Replaying database load with Percona Playback
• 2pm Build simple and complex replication clusters with Tungsten Replicator
• 3:30pm What's new in MySQL 5.5 and 5.6 Replication
162
162Tuesday, April 10, 12
![Page 190: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/190.jpg)
More replication sessions - Thursday
• 11am MySQL Replication: Pros and Cons
• 2pm Boost Your Replication Throughput with Parallel Apply, Prefetch, and Batching
• 3pm Verifying MySQL Replication Safely With pt-table-checksum 2.0
163
163Tuesday, April 10, 12
![Page 191: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/191.jpg)
©Continuent 2012.
WE ARE HIRING!•Implementation/support engineer•QA engineer•Documentation writer
Database replication and clustering
http://www.continuent.com
164Tuesday, April 10, 12
![Page 192: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/192.jpg)
Bonus slides
• Semi-synchronous replication
165
165Tuesday, April 10, 12
![Page 193: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/193.jpg)
semi-synchronous replication
• Available in 5.5 and higher
• Makes sure that at least one slave has copied the data.
• Increases reliability
166Tuesday, April 10, 12
![Page 194: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/194.jpg)
167
transaction with regular replication
clientmaster
slave
commit
binary log
execute
returns to client
replication
1
2
34
5167Tuesday, April 10, 12
![Page 195: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/195.jpg)
168
transaction with semi-
synchronous replication
clientmaster
slave
commit
binary log
execute
returns to client
sends transaction
to slave
gets acknowledgement
relay log
1
2
3
4 5
6
7
168Tuesday, April 10, 12
![Page 196: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/196.jpg)
semi-synchronous replication in practice
• installation:
• it’s a plugin.
• Actually, two plugins
169Tuesday, April 10, 12
![Page 197: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/197.jpg)
semi-synch replication install# in the masterplugin-load=rpl_semi_sync_master=semisync_master.sorpl_semi_sync_master_enabled=1
# in each slaveplugin-load=rpl_semi_sync_slave=semisync_slave.sorpl_semi_sync_slave_enabled=1
# restart all servers
170Tuesday, April 10, 12
![Page 198: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/198.jpg)
semi-synch replication check# in the mastershow variables like 'rpl_semi%';+------------------------------------+-------+| Variable_name | Value |+------------------------------------+-------+| rpl_semi_sync_master_enabled | ON || rpl_semi_sync_master_timeout | 10000 || rpl_semi_sync_master_trace_level | 32 || rpl_semi_sync_master_wait_no_slave | ON |+------------------------------------+-------+
171Tuesday, April 10, 12
![Page 199: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/199.jpg)
semi-synch replication checkshow status like "rpl_semi_%tx";+-----------------------------+-------+| variable_name | value |+-----------------------------+-------+| RPL_SEMI_SYNC_MASTER_NO_TX | 0 || RPL_SEMI_SYNC_MASTER_YES_TX | 0 |+-----------------------------+-------+
172Tuesday, April 10, 12
![Page 200: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/200.jpg)
semi-synch replication testmaster> create table t1 ( i int);Query OK, 0 rows affected (0.01 sec)
master> show status like "rpl_semi_%tx";+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_no_tx | 0 || Rpl_semi_sync_master_yes_tx | 1 |+-----------------------------+-------+
173Tuesday, April 10, 12
![Page 201: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/201.jpg)
disabling semi-synch# for each slave
set global rpl_semi_sync_slave_enabled=0;stop slave io_thread; start slave io_thread;
174Tuesday, April 10, 12
![Page 202: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/202.jpg)
disabled semi-synch replication testmaster> insert into t1 values (1);Query OK, 1 row affected (10.00 sec)
master> show status like "rpl_semi_%tx";+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_no_tx | 1 || Rpl_semi_sync_master_yes_tx | 1 |+-----------------------------+-------+2 rows in set (0.00 sec)
175Tuesday, April 10, 12
![Page 203: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/203.jpg)
disabled semi-synch replication testmaster> insert into t1 values (2);Query OK, 1 row affected (0.01 sec)
master> show status like "rpl_semi_%tx";+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_no_tx | 2 || Rpl_semi_sync_master_yes_tx | 1 |+-----------------------------+-------+2 rows in set (0.00 sec)
176Tuesday, April 10, 12
![Page 204: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/204.jpg)
re-enabling semi-synch# in one slave
set global rpl_semi_sync_slave_enabled=1;stop slave io_thread; start slave io_thread;
177Tuesday, April 10, 12
![Page 205: Replication 101](https://reader035.fdocuments.in/reader035/viewer/2022081800/5558c2fdd8b42a235c8b45a3/html5/thumbnails/205.jpg)
reenabled semi-synch replication testmaster> insert into t1 values (3);Query OK, 1 row affected (0.01 sec)
master> show status like "rpl_semi_%tx";+-----------------------------+-------+| Variable_name | Value |+-----------------------------+-------+| Rpl_semi_sync_master_no_tx | 2 || Rpl_semi_sync_master_yes_tx | 2 |+-----------------------------+-------+2 rows in set (0.00 sec)
178Tuesday, April 10, 12