replication 101

205
©Continuent 2012. MySQL Replication 101 Giuseppe Maxia Continuent, Inc 1 Tuesday, April 10, 12

Upload: giuseppe-maxia

Post on 17-May-2015

1.880 views

Category:

Technology


0 download

DESCRIPTION

beginners' guide to MySQL replication

TRANSCRIPT

Page 1: Replication 101

©Continuent 2012.

MySQL Replication 101Giuseppe MaxiaContinuent, Inc

1Tuesday, April 10, 12

Page 2: Replication 101

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

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

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

The world today is dominated by the web economy

www$$$

5

5Tuesday, April 10, 12

Page 6: Replication 101

Databases are the backbone

of the web economy

www$$$

6

6Tuesday, April 10, 12

Page 7: Replication 101

What database for the web?

7

7Tuesday, April 10, 12

Page 8: Replication 101

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

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

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

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

Actually, MySQL databases are the

backbone of the web economy

www$$$

8

8Tuesday, April 10, 12

Page 13: Replication 101

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

More precisely, MySQL REPLICATION is the backbone of the web

economy

www$$$

10

10Tuesday, April 10, 12

Page 15: Replication 101

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

a simple web application

scheme

12

database server

web server

clients

r/w requests

12Tuesday, April 10, 12

Page 17: Replication 101

database server

web servers

load balancer

clients

r/w requests

scaling web requests

1313Tuesday, April 10, 12

Page 18: Replication 101

writeread

database load on a simple

web application

14

85% 15%

14Tuesday, April 10, 12

Page 19: Replication 101

readwrite

database load on a successful web

application15

20% 80%

15Tuesday, April 10, 12

Page 20: Replication 101

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

17

readwrite

the bigger database server will eventually

have the same problem

80%20%

17Tuesday, April 10, 12

Page 22: Replication 101

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

read/writemaster

read/onlyslaves

readwriteread

database load with

replication19

85% 15% 100%

19Tuesday, April 10, 12

Page 24: Replication 101

read/writemaster

read/onlyslaves

readwriteread

scaling database load

with replication

20

85% 15% 100%

20Tuesday, April 10, 12

Page 25: Replication 101

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

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

master

slaveIO thread

SQL thread

reads

reads

client

transaction

binary log

relay log replication concepts

2323Tuesday, April 10, 12

Page 28: Replication 101

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

25

1 SHUT DOWN THE DATABASE SERVER

Master

25Tuesday, April 10, 12

Page 30: Replication 101

26

2 MAKE A BACKUP COPY

Master

26Tuesday, April 10, 12

Page 31: Replication 101

27

3 ENABLE THE MASTER

Configuration file[mysqld]log-bin=mysql-binserver-id=1

Master

27Tuesday, April 10, 12

Page 32: Replication 101

28

4 RESTART THE MASTER

Master

28Tuesday, April 10, 12

Page 33: Replication 101

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

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

31

7 COPY THE MASTER DATA to the slave

Slave 1

31Tuesday, April 10, 12

Page 36: Replication 101

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

33

9 START THE SLAVE SERVER

Slave 1

33Tuesday, April 10, 12

Page 38: Replication 101

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

35

11 START THE SLAVE SERVICE

SQL commandSTART SLAVE;

Slave 1

35Tuesday, April 10, 12

Page 40: Replication 101

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

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

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

What if the master was already logging?

• You have two options:

• Physical copy

• Logical copy

39

39Tuesday, April 10, 12

Page 44: Replication 101

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

Logical copy

• mysqldump --all-databases --master-data

41

41Tuesday, April 10, 12

Page 46: Replication 101

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

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

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

45

1 NO NEED TO STOP THE MASTER!

Master

45Tuesday, April 10, 12

Page 50: Replication 101

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

47

3 MAKE A COPY OF THE DATA DIRECTORY

Slave 1

47Tuesday, April 10, 12

Page 52: Replication 101

48

4 RESTART THE SLAVE

Slave 1

48Tuesday, April 10, 12

Page 53: Replication 101

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

50

6 COPY THE old slave DATA on the slave

Slave 2

50Tuesday, April 10, 12

Page 55: Replication 101

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

52

8 START THE NEW SLAVE

Slave 2

52Tuesday, April 10, 12

Page 57: Replication 101

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

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

Starting and stopping replication

55Tuesday, April 10, 12

Page 60: Replication 101

Starting and stopping replicationSTART SLAVE;

55Tuesday, April 10, 12

Page 61: Replication 101

Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;

55Tuesday, April 10, 12

Page 62: Replication 101

Starting and stopping replicationSTART SLAVE;START SLAVE SQL_THREAD;START SLAVE IO_THREAD;

55Tuesday, April 10, 12

Page 63: Replication 101

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

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

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

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

Hijacking the agenda

• MySQL Sandbox

56

AGENDA

56Tuesday, April 10, 12

Page 68: Replication 101

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

overview

MySQLserver

MySQLserver

Data DB1

DB2 DB3

Data DB1

DB2 DB3DATA DIRECTORY

PORT

SOCKET

58Tuesday, April 10, 12

Page 70: Replication 101

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

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

The hard way

61Tuesday, April 10, 12

Page 73: Replication 101

The hard way

Read the manual

61Tuesday, April 10, 12

Page 74: Replication 101

The hard way

Read the manual try to figure out what to change

61Tuesday, April 10, 12

Page 75: Replication 101

The hard way

Read the manual try to figure out what to change Install

61Tuesday, April 10, 12

Page 76: Replication 101

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

The easier way

$ make_sandbox 5.1.54

Prepare once Install many times

# some # preliminary # work

63Tuesday, April 10, 12

Page 78: Replication 101

The easiest way

$ sb 5.1.54

Prepare once Install many times

# some # preliminary # work

64Tuesday, April 10, 12

Page 79: Replication 101

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

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

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

Single SandboxMySQLserver

customized scripts

startstop

restartstatusclear

send_killuse

68Tuesday, April 10, 12

Page 83: Replication 101

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

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

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

default architecture

$HOME

/sandboxes opt

mysql

$SANDBOX_HOME

$SANDBOX_BINARY

expandedtarballs

installed sandboxes

72Tuesday, April 10, 12

Page 87: Replication 101

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

74Tuesday, April 10, 12

Page 89: Replication 101

creating a single sanbox

make_sandbox \ /path/to/mysql-X.X.XX-OS.tar.gz

75Tuesday, April 10, 12

Page 90: Replication 101

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

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

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

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

starting a single sanbox

$ cd $SANDBOX_HOME/msb_X_X_XX$ ./start

80Tuesday, April 10, 12

Page 95: Replication 101

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

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

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

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

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

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

installing the innodb plugin

$ sbtool -o plugin \ --plugin=innodb \ -s /path/to/source/sandbox

87Tuesday, April 10, 12

Page 102: Replication 101

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

How to set up replication

DEMO

89

AGENDA

89Tuesday, April 10, 12

Page 104: Replication 101

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Binary logs in practice

DEMO

96

AGENDA

96Tuesday, April 10, 12

Page 119: Replication 101

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

From single server application

98

r/w requests

98Tuesday, April 10, 12

Page 121: Replication 101

To replication-aware application

99

read/writemaster

read/onlyslaves

R/WR/O

load balancer

99Tuesday, April 10, 12

Page 122: Replication 101

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

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

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

Why statement split is wrong

• Breaks transactions

• High risk of inconsistency

• Loses or corrupts data

103

103Tuesday, April 10, 12

Page 126: Replication 101

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

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

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

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

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

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

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

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

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

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

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

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

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 140: Replication 101

show master status File: mysql-bin.000002

Position: 78045744

Binlog_Do_DB:

Binlog_Ignore_DB:

115Tuesday, April 10, 12

Page 141: Replication 101

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

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

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

Breaking (and fixing) replication

DEMO

119

AGENDA

119Tuesday, April 10, 12

Page 145: Replication 101

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

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

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

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

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

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

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

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

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

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

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

Reasons for complexity

• No global transaction ID

131Tuesday, April 10, 12

Page 157: Replication 101

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

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

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

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

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

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

Replication =

let the slave do the dirty work

138Tuesday, April 10, 12

Page 164: Replication 101

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

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

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

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

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

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

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

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

master-to-master and circular replication

DEMO

147

AGENDA

147Tuesday, April 10, 12

Page 173: Replication 101

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

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

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

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

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

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

"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

"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

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

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

Read more

• The MySQL online manual

http://dev.mysql.com/doc

156

156Tuesday, April 10, 12

Page 184: Replication 101

High Performance MySQL

157Tuesday, April 10, 12

Page 185: Replication 101

MySQL High Availability

158Tuesday, April 10, 12

Page 186: Replication 101

Web Operations

159Tuesday, April 10, 12

Page 187: Replication 101

Cloud Application Architectures

160Tuesday, April 10, 12

Page 188: Replication 101

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

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

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

©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

Bonus slides

• Semi-synchronous replication

165

165Tuesday, April 10, 12

Page 193: Replication 101

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

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

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

semi-synchronous replication in practice

• installation:

• it’s a plugin.

• Actually, two plugins

169Tuesday, April 10, 12

Page 197: Replication 101

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

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

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

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

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

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

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

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

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