mysql 5.7: focus on replication

45
Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Tuesday, October 20, 2015 Oracle Confidential Restricted MySQL 5.7 Replication Update Mario Beck MySQL EMEA Presales Manager 1 The Latest and Greatest MySQL 5.7 Replication Features and More!

Upload: mario-beck

Post on 15-Jan-2017

581 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. | Tuesday, October 20, 2015 Oracle Confidential – Restricted

MySQL 5.7 Replication Update

Mario Beck MySQL EMEA Presales Manager

1

The Latest and Greatest MySQL 5.7 Replication Features and More!

Page 2: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Safe Harbor Statement

The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.

Tuesday, October 20, 2015 Oracle Confidential – Restricted 2

Page 3: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Program Agenda

Tuesday, October 20, 2015 Oracle Confidential – Restricted

Page 4: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Program Agenda

Background

Replication Features in MySQL 5.7

News From The Lab!

The Road Ahead!

Conclusion

1

2

3

4

5

Tuesday, October 20, 2015 Oracle Confidential – Restricted 4

Page 5: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Background 1

Tuesday, October 20, 2015 Oracle Confidential – Restricted

Page 6: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Background: Replication Components

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 6

Page 7: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Background: Replication Components

• Binary Log

– File based logical log that records the changes on the master.

– Statement or Row based format (may be intermixed).

– Each transactions is split into groups of events.

– Control events: Rotate, Format Description, Gtid, ...

Tuesday, October 20, 2015

Layout of a Binary Log File

BEGIN ... E1 E2 COMMIT BEGIN ... E1 E2 COMMIT

Oracle Confidential – Restricted 7

Page 8: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

M S

S

S

S

M

write clients read clients read clients

write clients

More reads? More

slaves!

Read scale-out

Background: What is Replication Used For?

Tuesday, October 20, 2015 Oracle Confidential – Restricted 8

Page 9: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

C

B

A

C

B

A Crash

C

B

A

B is the new master

Uh Oh! Whew!

Redundancy: If master crashes, promote slave to master

Background: What is Replication Used For?

Tuesday, October 20, 2015 Oracle Confidential – Restricted 9

Page 10: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

M

S

write clients

business intelligent client applications reporting client applications big queries client applications

On-line Backup and Reporting

Background: What is Replication Used For?

Tuesday, October 20, 2015 Oracle Confidential – Restricted 10

Page 11: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

C B

B A A C

Image from www.ginkgomaps.com

Background: What is Replication Used For?

Tuesday, October 20, 2015 Oracle Confidential – Restricted 11

Page 12: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Replication Features in MySQL 5.7 2

Tuesday, October 20, 2015 Oracle Confidential – Restricted

Page 13: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Replication Features in MySQL 5.7 Usability / Online

2

Tuesday, October 20, 2015

2.1

Oracle Confidential – Restricted

Page 14: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Reconfiguration of Global Transaction Identifiers

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 14

Page 15: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Reconfiguration of Global Transaction Identifiers

• Over simplified procedure to turn on global transaction identifiers:

• Details: http://dev.mysql.com/doc/refman/5.7/en/replication-mode-change-online-enable-gtids.html

Tuesday, October 20, 2015

1) SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; (on every server) 2) SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; (on every server) 3) wait for a bit longer than your replication lag 4) SET @@GLOBAL.GTID_MODE = ON; (on every server)

Oracle Confidential – Restricted 16

Page 16: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Reconfiguration of Replication Filters

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 17

Page 17: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Reconfiguration of Replication Filters

• Change Slave's Replication Filters dynamically.

– No need to stop and restart the slave server for setting new replication filtering rules.

– All slave filters are supported.

– Values can be input in various character sets.

Tuesday, October 20, 2015

mysql> CHANGE REPLICATION FILTER REPLICATE_DO_DB= (db1, db2)

Oracle Confidential – Restricted 18

Page 18: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Switch/Fail-over to a new Master

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 19

Page 19: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Change master from A to B without stopping the applier threads.

Online Switch/Fail-over to a new Master

Tuesday, October 20, 2015

C

B

A

C

B

A Crash

C

B

A

B is the new master

Uh Oh! Whew!

Oracle Confidential – Restricted 20

Page 20: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Change master from A to B without stopping the applier threads.

Online Switch/Fail-over to a new Master

Tuesday, October 20, 2015

C

B

A

C

B

A Crash

C

B

A Uh Oh! Whew!

DBA did not need C to stop applying its relay log to change C's master from A to B.

Oracle Confidential – Restricted 21

Page 21: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Online Switch/Fail-over to a new Master

• Enables more online operations during fail-over:

• Stopping, changing master and restarting the receiver thread are all done while the applier thread is running.

• Change applier properties while the receiver thread is working:

Tuesday, October 20, 2015

mysql> STOP SLAVE IO_THREAD;

mysql> CHANGE MASTER TO MASTER_HOST='master2', …;

mysql> START SLAVE IO_THREAD;

mysql> STOP SLAVE SQL_THREAD;

mysql> CHANGE MASTER TO MASTER_DELAY=3600, …;

mysql> START SLAVE SQL_THREAD;

Oracle Confidential – Restricted 22

Page 22: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Replication Monitoring

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 23

DBA

Page 23: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Replication Monitoring

• Monitoring through SQL.

• Logically unrelated information into different places.

• Extensible, can be adapted to new features.

• More accurate and consistent identifier names.

• Master-slave, Multi-source, Group Replication support.

Performance Schema Replication Tables

Tuesday, October 20, 2015 Oracle Confidential – Restricted 24

Page 24: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Replication Monitoring

Tuesday, October 20, 2015

mysql> select * from performance_schema.replication_applier_status_by_worker\G *************************** 1. row *************************** CHANNEL_NAME: WORKER_ID: 1 THREAD_ID: 35 SERVICE_STATE: ON LAST_SEEN_TRANSACTION: 4ba0eb86-63c3-11e4-92ba-28b2bd168d07:2368 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 *************************** 2. row *************************** CHANNEL_NAME: WORKER_ID: 2 THREAD_ID: 36 SERVICE_STATE: ON LAST_SEEN_TRANSACTION: 4ba0eb86-63c3-11e4-92ba-28b2bd168d07:2367 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 2 rows in set (0,00 sec)

Oracle Confidential – Restricted 26

Page 25: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Replication Features in MySQL 5.7 Usability / Online Performance

2

Tuesday, October 20, 2015

2.1

2.2

Oracle Confidential – Restricted

Page 26: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Applier Throughput – Locking-based Parallelism

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 28

Page 27: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Applier Throughput – Locking-based Parallelism

Tuesday, October 20, 2015

Single Threaded Apply 8 Threads Applier 24 Threads Applier 48 Threads Applier 96 Threads Applier

0%

50%

100%

150%

200%

250%

Fast and Scalable Multi-threaded Replication Applier

(statement-based replication, durable settings, SSD storage)

Sla

ve a

pply

tim

e (

Sysbench R

W o

n t

he m

aste

r w

ith 9

6 t

hre

ads =

100%

)

10X

Oracle Confidential – Restricted 29

Page 28: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Applier Throughput – Locking-based Parallelism

• Leverage parallelization information from master execution:

– Concurrent transactions, which have not blocked each other on the master, are marked as non-contending in the binary log.

• Meanwhile, at the slave:

– Non-contending transactions are scheduled in parallel;

– Concurrent transactions commit independently, thus no waiting involved.

Tuesday, October 20, 2015 Oracle Confidential – Restricted 30

Page 29: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Applier Throughput – Locking-based Parallelism

• T2 is scheduled to execute together with T1.

• T3 is scheduled to execute as soon as T1 finishes.

Tuesday, October 20, 2015

T1

T2

T3

Time

Commit Finishes

Last Lock Acquired

Concurrent Execution History on the Master

Execution

Commit

T1 and T2 execute in parallel on the slave.

T2 and T3 execute in parallel on the slave.

Oracle Confidential – Restricted 31

Page 30: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Improved Applier Throughput – Locking-based Parallelism

• Supports statement-based or row-based formats.

• Scheduling policy controlled through:

– logical_clock - means schedule based on the locking interval timestamps.

– database - the scheduling policy from 5.6 (concurrency control done per database).

• Work to improve slave scalability continues, does not stop here.

Tuesday, October 20, 2015

mysql> SET slave_parallel_type= [logical_clock|database]

Oracle Confidential – Restricted 32

Page 31: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Replication Features in MySQL 5.7 Usability / Online Performance Dependability

2

Tuesday, October 20, 2015

2.1

2.2

2.3

Oracle Confidential – Restricted

Page 32: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Loss-less Semi-sync Replication

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 42

Page 33: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Loss-less Semi-sync Replication

Tuesday, October 20, 2015

Master

Slave

T1: INSERT INTO t1 VALUES (1000)

ACK

Time

T2: SELECT * FROM t1; empty set

execute prepare binlog

relay log

commit execute

Oracle Confidential – Restricted 43

Page 34: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Loss-less Semi-sync Replication

• Master waits for slave's ACK before committing (as opposed to: master waits for slave's ACK after committing).

– Therefore, concurrent transactions do not see changes while this transaction waits for ack.

• Should a master fail, then any transaction that it may have externalized is also persisted on a slave.

• User can choose between the original semi-sync behavior and the new one.

Tuesday, October 20, 2015

mysql> SET rpl_semi_sync_master_wait_point= [AFTER_SYNC|AFTER_COMMIT]

Oracle Confidential – Restricted 44

Page 35: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Semi-sync Replication – Wait for Multiple ACKs

Tuesday, October 20, 2015

Insert...

Insert...

B

binary log

Insert...

relay log

Insert...

A

binary log

Client

Sender thread

Receiver thread

Applier Threads

Receiver

Meta-data Update

Applier Meta-data

Update

Network

Oracle Confidential – Restricted 45

Page 36: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Semi-sync Replication – Wait for Multiple ACKs

• Master does not commit transaction until it receives N ACKs from N slaves.

• Dynamically settable:

Tuesday, October 20, 2015

mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count= N

Oracle Confidential – Restricted 46

Page 37: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Semi-sync Replication – Wait for Multiple ACKs

• Master does not commit transaction until it receives N ACKs from N slaves.

• Dynamically settable:

Tuesday, October 20, 2015

mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count= N

Master

Slave 2

T1: COMMIT

ACK

Slave 1 ACK

T1: COMMIT succeeds

mysql> SET GLOBAL rpl_semi_sync_master_wait_for_slave_count= 2

Slave 3

Time

relay log

relay log

relay log

Oracle Confidential – Restricted 47

ACK

Page 38: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Replication Features in MySQL 5.7 Usability / Online Performance Dependability Flexibility

2

Tuesday, October 20, 2015

2.1

2.2

2.3

2.4

Oracle Confidential – Restricted

Page 39: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Multi-Source Replication

Tuesday, October 20, 2015

S

M M Slave can have more than one master. M M

The need for gathering data in a central server: • Integrated backup; • Complex queries for analytics purposes; • Data HUB for inter-cluster replication.

Oracle Confidential – Restricted 53

Page 40: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Multi-Source Replication

• A server (slave) can replicate from multiple sources (masters).

• Multiple channels (channel: connection thread, relay log, applier threads) that can be stopped started individually.

• Integrated with Multi-threaded Slave.

– Each channel has its own multi-threaded applier set of threads.

• Integrated with the new P_S tables.

– replication_applier_status_by_coordinator shows multiple entries, one per channel/source applier.

– replication_connection_status shows multiple entries, one per connection to different sources.

Tuesday, October 20, 2015 Oracle Confidential – Restricted 54

Page 41: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Multi-Source Replication

• Integrated with GTIDs.

• Integrated with crash-safe tables.

– Progress state is stored in these tables for recoverability purposes.

• Virtually no limit on the number of sources (capped to 256, but can be changed if server binary is rebuilt).

• Able to manage each source separately.

Tuesday, October 20, 2015 Oracle Confidential – Restricted 55

Page 42: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Summary 7

Tuesday, October 20, 2015 Oracle Confidential – Restricted

Page 43: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Focus

MySQL

Replication

Tuesday, October 20, 2015 Oracle Confidential – Restricted 58

Performance High Availability

Ease of Use Integration

Recoverability

Automation of Fail-over

and crash recovery

Configurability

GTIDs

HPC optimizations

MySQL

Router

Integration

More

Modularization

Pluggability

Modernization

Of Replication

Interfaces

MySQL

Fabric

Integration

Multi-threaded Applier

Address Contention

Points

MySQL

Group Replication

Leverage

Consensus

Further

P_S Instrumentation

Simplify UI

Page 44: MySQL 5.7: Focus on Replication

Copyright © 2015, Oracle and/or its affiliates. All rights reserved. |

Where to go from here?

• Packages

– http://dev.mysql.com

– http://labs.mysql.com

• Reference Documentation – http://dev.mysql.com/doc/#manual

• Blogs from the Engineers (news, quirks, technical information and much more)

– http://mysqlhighavailability.com

Tuesday, October 20, 2015 Oracle Confidential – Restricted 59

Page 45: MySQL 5.7: Focus on Replication