1 / 34

InnoDB Cluster - Tutorial

Kenny Gryp Principal MySQL Product Manager

Miguel Araújo MySQL AdminAPI Tech Lead. Engineer 2 / 34 3 / 34

Safe Harbor

The following is intended to outline our general product direction. It is intended for information purpose 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 up in making purchasing decisions. The development, release, timing and pricing of any features or functionality described for Oracle´s product may change and remains at the sole discretion of .

Statement in this presentation relating to Oracle´s future plans, expectations, beliefs, intentions and ptospects are "forward- looking statements" and are subject to material risks and uncertainties. A detailed discussion of these factors and other risks that affect our business is contained in Oracle´s Securities and Exchange Commission (SEC) filings, including our most recent reports on Form 10-K and Form 10-Q under the heading "Risk Factors". These filings are available on the SEC ´s website or on Oracle´s website at http:// www.oracle.com/investor. All information in this presentation is current as of September 2019 and Oracle undertakes no duty to update any statement in light of new information or future events.

Copyright @ 2019 Oracle and/or its affiliates. 4 / 34 MySQL InnoDB Cluster

"A single product — MySQL — with high availability and scaling features baked in; providing an integrated end-to-end solution that is easy to use."

Copyright @ 2019 Oracle and/or its affiliates. 4 / 34 MySQL InnoDB Cluster

"A single product — MySQL — with high availability and scaling features baked in; providing an integrated end-to-end solution that is easy to use."

Copyright @ 2019 Oracle and/or its affiliates. 4 / 34 MySQL InnoDB Cluster

"A single product — MySQL — with high availability and scaling features baked in; providing an integrated end-to-end solution that is easy to use."

Components:

MySQL Group Replication MySQL Shell MySQL Router

Copyright @ 2019 Oracle and/or its affiliates. 5 / 34 MySQL InnoDB Cluster - Goals One Product: MySQL

All components developed together Integration of all components Full stack testing

Copyright @ 2019 Oracle and/or its affiliates. 5 / 34 MySQL InnoDB Cluster - Goals One Product: MySQL Easy to Use

All components developed together One client: MySQL Shell Integration of all components Integrated orchestration Full stack testing Homogenous servers

Copyright @ 2019 Oracle and/or its affiliates. 5 / 34 MySQL InnoDB Cluster - Goals One Product: MySQL Easy to Use

All components developed together One client: MySQL Shell Integration of all components Integrated orchestration Full stack testing Homogenous servers

Flexible and Modern - X Protocol

SQL and NoSQL together Protocol Buffers Asynchronous API Developer friendly

Copyright @ 2019 Oracle and/or its affiliates. 6 / 34 MySQL Group Replication

Copyright @ 2019 Oracle and/or its affiliates. 7 / 34 MySQL Group Replication

Copyright @ 2019 Oracle and/or its affiliates. 7 / 34 MySQL Group Replication High Available Distributed MySQL DB

Open Source Fault tolerance Automatic failover Active/Active update anywhere (limits apply) Automatic membership management Adding/removing members Network partitions, failures Conflict detection and resolution Prevents data loss

Copyright @ 2019 Oracle and/or its affiliates. 8 / 34 MySQL Group Replication

Implementation of Replicated State Machine Total Order - Writes XCOM - Paxos implementation 8.0+: Member provisioning using CLONE plugin. Configurable Consistency Guarantees eventual consistency 8.0+: per session & global read/write consistency Using MySQL replication framework by design binary logs relay logs GTIDs: Global Transaction IDs Generally Available since MySQL 5.7 Supported on all platforms: linux, windows, solaris, macosx, freebsd

Copyright @ 2019 Oracle and/or its affiliates. 9 / 34 MySQL Group Replication - Use Cases Consistency: No Data Loss (RPO=0)

in event of failure of (primary) member Split brain prevention (Quorum)

Copyright @ 2019 Oracle and/or its affiliates. 9 / 34 MySQL Group Replication - Use Cases Consistency: No Data Loss (RPO=0) Highly Available: Automatic Failover

in event of failure of (primary) member Primary members are automatically elected Split brain prevention (Quorum) Automatic Network Partition handling

Copyright @ 2019 Oracle and/or its affiliates. 9 / 34 MySQL Group Replication - Use Cases Consistency: No Data Loss (RPO=0) Highly Available: Automatic Failover

in event of failure of (primary) member Primary members are automatically elected Split brain prevention (Quorum) Automatic Network Partition handling

Read Scaleout

Add/Remove members as needed Replication Lag handling with Flow Control Configurable Consistency Levels Eventual Full Consistency -- no stale reads

Copyright @ 2019 Oracle and/or its affiliates. 9 / 34 MySQL Group Replication - Use Cases Consistency: No Data Loss (RPO=0) Highly Available: Automatic Failover

in event of failure of (primary) member Primary members are automatically elected Split brain prevention (Quorum) Automatic Network Partition handling

Read Scaleout Active/Active environments

Add/Remove members as needed Write to many members at the same time Replication Lag handling with Flow Control ordered writes within the group (XCOM) Configurable Consistency Levels guaranteed consistency Eventual Good write performance Full Consistency -- no stale reads due to Optimistic Locking (workload dependent)

Copyright @ 2019 Oracle and/or its affiliates. 10 / 34 MySQL Shell

Copyright @ 2019 Oracle and/or its affiliates. 10 / 34 MySQL Shell Database Administration Interface

"MySQL Shell provides the developer and DBA with a single intuitive, flexible, and powerful interface for all MySQL related tasks!"

Open Source Multi-Language: JavaScript, Python, and SQL Naturally scriptable Supports Document and Relational models Exposes full Development and Admin API Classic MySQL protocol and X protocol

Copyright @ 2019 Oracle and/or its affiliates. 11 / 34 DEMO

MySQL Shell Starting an application (sysbench) Create Cluster

Copyright @ 2019 Oracle and/or its affiliates. 12 / 34 MySQL Router

Copyright @ 2019 Oracle and/or its affiliates. 12 / 34 MySQL Router Transparent Access to Database Arch. "provide transparent routing between your application and back-end MySQL Servers"

Transparent client connection routing Load balancing Application connection failover Stateless design offers easy HA client routing Router as part of the application stack Little to no configuration needed Native support for InnoDB clusters Understands Group Replication topology Utilizes metadata schema on each member Currently 2 TCP Ports: PRIMARY and NON-PRIMARY traffic

Copyright @ 2019 Oracle and/or its affiliates. 13 / 34 DEMO

Install & Use MySQL Router Router REST Interface Shell Extensions

Copyright @ 2019 Oracle and/or its affiliates. 14 / 34

MySQL - Node Provisioning with CLONE

added in MySQL 8.0.17 Provision members that have no data Takes Physical snapshot of data Using standard MySQL connection (3306) Built-in the MySQL Server Fully integrated in MySQL InnoDB Cluster https://mysqlhighavailability.com/mysql-innodb-cluster-automatic-node-provisioning https://mysqlhighavailability.com/a-breakthrough-in-usability-automatic-node-provisioning

Copyright @ 2019 Oracle and/or its affiliates. 15 / 34 DEMO

Add third node to the group Show CLONE Extended Status

Copyright @ 2019 Oracle and/or its affiliates. 16 / 34 MySQL Group Replication - Communication Asynchronous Replication

Copyright @ 2019 Oracle and/or its affiliates. 17 / 34 MySQL Group Replication - Communication Semi Synchronous Replication

Copyright @ 2019 Oracle and/or its affiliates. 18 / 34 MySQL Group Replication - Communication Group Replication

Copyright @ 2019 Oracle and/or its affiliates. 19 / 34 DEMO

Stop the primary node Kill the primary node setInstanceOption & setOption switch primary member online

Copyright @ 2019 Oracle and/or its affiliates. 20 / 34 MySQL Group Replication - Network Partitions

Copyright @ 2019 Oracle and/or its affiliates. 20 / 34 MySQL Group Replication - Network Partitions

Quorum based Network Partition Handling Prevents Split-Brain Ensure uneven amount of nodes view of <=50% of total members: Minority view of >50% of total members: Majority will accept reads/writes

Copyright @ 2019 Oracle and/or its affiliates. 20 / 34 MySQL Group Replication - Network Partitions

Quorum based Network Partition Handling In case of event of loss of majority: Prevents Split-Brain a minority partition can be forced ONLINE Ensure uneven amount of nodes Nodes in minority: view of <=50% of total members: Minority MySQL Router: moves away traffic view of >50% of total members: Majority Fencing: members become READ_ONLY or will accept reads/writes ABORT_SERVER

Copyright @ 2019 Oracle and/or its affiliates. 21 / 34 MySQL Group Replication - Network Partitions Majority

1. wait 5 seconds, then suspect minority is gone 2. expel minority after group_replication_member_expel_timeout seconds (default 0, immediately) do not put the variable too high, between suspect and expel members cannot be added/removed no new leader can be elected

Minority

1. wait 5 seconds before suspecting itself to lost connection to the majority 2. wait group_replication_unreachable_majority_timeout (default 0, forever) 3. when timeout: group_replication_autorejoin_tries (default 0 times) retries every 5 minutes 4. After group_replication_exit_state_action READ_ONLY: allow stale reads to be served (latest default) ABORT_SERVER: Shutdown MySQL

Copyright @ 2019 Oracle and/or its affiliates. 22 / 34 DEMO

Creating Network Partition

Copyright @ 2019 Oracle and/or its affiliates. 23 / 34 MySQL Group Replication - Consistency

Default consistency guarantee is EVENTUAL

Write some data on nodeA, Read same data immediately on nodeB, data might be there yet... or not yet.

(Writes remain ordered and write consistency is never compromised)

Consistency level is configurable since MySQL 8.0.14 The scope can be SESSION or GLOBAL.

The possible values are:

EVENTUAL (default) AFTER BEFORE_ON_PRIMARY_FAILOVER BEFORE_AND_AFTER BEFORE

Copyright @ 2019 Oracle and/or its affiliates. 24 / 34

MySQL Group Replication - Consistency - EVENTUAL

Copyright @ 2019 Oracle and/or its affiliates. 25 / 34

MySQL Group Replication - Consistency - BEFORE

BEFORE READ or WRITE: wait for all trx to be applied Impact on READ & WRITE: added response time: at least network latency

Copyright @ 2019 Oracle and/or its affiliates. 26 / 34

MySQL Group Replication - Consistency - AFTER

AFTER WRITE: wait for all trx to be applied Impact on WRITE only: added response time: at least network latency

Copyright @ 2019 Oracle and/or its affiliates. 27 / 34

MySQL Group Replication - Consistency - BEFORE_AND_AFTER

BEFORE READ or WRITE: wait for all trx to be applied AFTER WRITE: wait for all trx to be applied

Copyright @ 2019 Oracle and/or its affiliates. 28 / 34 DEMO

Change Consistency Levels member Weights resetpasswords logging

Copyright @ 2019 Oracle and/or its affiliates. 29 / 34 MySQL Group Replication - Performance

8.0 has Writeset based parallel replication used during distributed recovery & Group Replication non conflicting transactions can be executed in parallel COMMITs remain ordered

Copyright @ 2019 Oracle and/or its affiliates. 30 / 34 MySQL Group Replication - Performance

Copyright @ 2019 Oracle and/or its affiliates. 31 / 34 MySQL Group Replication - Performance

in default consistency level (EVENTUAL) expected additional response time is ± network latency between members only at trx COMMIT

Copyright @ 2019 Oracle and/or its affiliates. 32 / 34 MySQL InnoDB Cluster - Continuously Evolving

Copyright @ 2019 Oracle and/or its affiliates. 33 / 34

Thank you !

Copyright @ 2019 Oracle and/or its affiliates. 34 / 34

Session Survey

Help us make the content even better. Please complete the session survey in the Mobile App. https://dev.mysql.com/ http://www.mysql.com https://mysqlhighavailability.com/

Copyright @ 2019 Oracle and/or its affiliates.