Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into...

31
Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer

Transcript of Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into...

Page 1: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier

Andrei Elkin, Senior MariaDB developer

Page 2: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Designed in MySQL even before transaction. Serves a number of critical missions including:

● Failover, Backup and point-in-time recovery● Load balancer● Auditing● Error case analysis

Page 3: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.
Page 4: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Replication conceptually is 2PC

Page 5: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Transaction state transaction

Page 6: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Binary logging

Page 7: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Binlog group commit

Page 8: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Binlog Group Commit ordered

Page 9: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

binary logging: event group

Page 10: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

event group: example

Page 11: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Events shipping: Dump thread

Page 12: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Events receiving: IO thread

Page 13: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

No failover without ...

Page 14: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

GTID idea

Page 15: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

GTID: required in Multi-Source replication

Page 16: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

GTID definition

Page 17: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

GTID and Multi-Sourced Replication

Transactions from different domains are executed independently

Page 18: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Events execution on slave: single-threaded mode

Page 19: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Events execution: parallel scheduling

Page 20: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Events execution: ordered commit

Page 21: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

GTID execution: gtid_slave_pos table

Page 22: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Recovery: committed data may be lost

Page 23: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Recovery without Binlog_checkpoint

Page 24: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Recovery: server crash

Page 25: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Recovery: post-restart decisions

Page 26: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Ongoing and perspective projects 1) XA replication MDEV-7974

2) Eager replication as follow-up XA replication

3) Parallel slave group commit

4) Relay-log-less slave

5) Committed GTID tracker by engine

6) Binlog-less “relay” slave in chain replication

7) Consensus protocol on membership in replication configuration

8) E.g Paxos-like mode semi-sync

Page 27: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Ongoing: XA replication MDEV-7974

Page 28: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

Follow-ups: active replication

Page 29: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

MDEV-16404: slave group commit

Page 30: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.

References:

https://mariadb.com/kb/en/library/replication-overview/https://kristiannielsen.livejournal.com/16826.htmlhttps://kristiannielsen.livejournal.com/16382.htmlMariaDB for Advanced DBAs. MariaDB Training, MariaDB (c)Database replication techniques: a three parameter classifcation M. Wiesmann ; F. Pedone ; A. Schiper ; B. Kemme ; G. Alonso

Page 31: Unwinding Replication - MariaDB.org · 2020-05-04 · Unwinding Replication From basics into subtleties of binary logging and multi-threaded applier Andrei Elkin, Senior MariaDB developer.