3. MySQL InnoDB Cluster
When MySQL High Availability is Made Easy
The Boston MySQL Meetup Group - May 2017
3 / 139
4.
Safe Harbor Statement
The following is intended to outline our generalproduct direction. It isintended for
information purpose only, and may not be incorporated into any contract. It isnot a
commitment to deliver any material, code, or functionality, and should not be relied up in
making purchasing decisions. Thedevelopment, release and timing of any features or
functionality described for Oracle´s product remains at thesole discretion of Oracle.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
4 / 139
5. about.me/lefred
Who am I ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
5 / 139
13. Group Replication: heart of MySQL InnoDB
Cluster
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
13 / 139
14. Group Replication: heart of MySQL InnoDB
Cluster
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
14 / 139
15. But before going further...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
15 / 139
16. What is
High Availability ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
16 / 139
17. High Availability
High availability is a characteristicofa system, which aimstoensureanagreedlevelof
operational performance, usuallyuptime, for a higher thannormalperiod.
There are three principles of systemsdesigninreliabilityengineeringwhichcanhelp
achieve high availability:
Elimination of single points offailure. Thismeansaddingredundancyto the system
so that failure of a componentdoesnotmeanfailureoftheentiresystem.
Reliable crossover. In redundantsystems, thecrossover pointitselftendstobecome
a single point of failure. Reliablesystemsmustprovideforreliablecrossover.
Detection of failures as they occur. Ifthetwoprinciplesaboveareobserved,thena
user may never see a failure. Butthemaintenanceactivitymust.
Source: WikipediaCopyright @ 2017 Oracle and/or its affiliates. All rights reserved.
17 / 139
18. Database Redundancy
How to achieve it ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
18 / 139
19. Database Redundancy
How to achieve it ?
Multiple solutions exist, someworse thantheothers ;-)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
19 / 139
20. Database Redundancy
How to achieve it ?
Multiple solutions exist, someworse thantheothers ;-)
use of share storage
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
20 / 139
21. Database Redundancy
How to achieve it ?
Multiple solutions exist, someworse thantheothers ;-)
use of share storage
use of share blocs by network(drbd)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
21 / 139
22. Database Redundancy
How to achieve it ?
Multiple solutions exist, someworse thantheothers ;-)
use of share storage
use of share blocs by network(drbd)
use of MySQLreplication
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
22 / 139
23. Database Redundancy
How to achieve it ?
Multiple solutions exist, someworse thantheothers ;-)
use of share storage
use of share blocs by network(drbd)
use of MySQLreplication
Of course the last one is the technique most spread, more flexible and more reliable.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
23 / 139
24. MySQL Replication
There are multiple types of MySQLreplication:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
24 / 139
25. MySQL Replication
There are multiple types of MySQLreplication:
asynchronous replication (async)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
25 / 139
26. MySQL Replication
There are multiple types of MySQLreplication:
asynchronous replication (async)
semi-synchronous replication(semi-sync)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
26 / 139
27. MySQL Replication
There are multiple types of MySQLreplication:
asynchronous replication (async)
semi-synchronous replication(semi-sync)
group replication -New since (5.7.17)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
27 / 139
28. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
28 / 139
29. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
slaves can be laging (having delay), there isno delivery guarantee (unless for semi-
sync)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
29 / 139
30. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
slaves can be laging (having delay), there isno delivery guarantee (unless for semi-
sync)
replicas provisioning is manual
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
30 / 139
31. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
slaves can be laging (having delay), there isno delivery guarantee (unless for semi-
sync)
replicas provisioning is manual
data consistency on replicas is assumed and needs a manual verification
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
31 / 139
32. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
slaves can be laging (having delay), there isno delivery guarantee (unless for semi-
sync)
replicas provisioning is manual
data consistency on replicas is assumed and needs a manual verification
it´s even possible to create circular replication (highly not recommended)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
32 / 139
33. Asynchronous Replication(s)
replicas (also called slaves) stream thereplication logs froma unique master (multi-
source replication is possiblesince5.7.6)
slaves can be laging (having delay), there isno delivery guarantee (unless for semi-
sync)
replicas provisioning is manual
data consistency on replicas is assumed and needs a manual verification
it´s even possible to create circular replication (highly not recommended)
write operations are safe onlyfrom a unique global master
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
33 / 139
46. MySQL HA Architectures with asynchronous
replication
It exists a lot of possible architectures and asmuch tools to enforce them.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
46 / 139
47. MySQL HA Architectures with asynchronous
replication
It exists a lot of possible architectures and asmuch tools to enforce them.
They are all based on the sameprinciple:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
47 / 139
48. MySQL HA Architectures with asynchronous
replication
It exists a lot of possible architectures and asmuch tools to enforce them.
They are all based on the sameprinciple:
1 master
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
48 / 139
49. MySQL HA Architectures with asynchronous
replication
It exists a lot of possible architectures and asmuch tools to enforce them.
They are all based on the sameprinciple:
1 master
1 or many replicas (slaves)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
49 / 139
50. MySQL HA Architectures with asynchronous
replication
It exists a lot of possible architectures and asmuch tools to enforce them.
They are all based on the sameprinciple:
1 master
1 or many replicas (slaves)
If the master as an issue, the most accurate slave needs to takeover therole and be
promoted as master for all the remaining slaves still online.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
50 / 139
52. Automation
And this is the most complicated part...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
52 / 139
53. Automation
And this is the most complicated part...
It exists a large amount of external tools that canbe used to achieve thistask.Most of
them are only compatible with GNU/Linux.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
53 / 139
54. Automation
And this is the most complicated part...
It exists a large amount of external tools that canbe used to achieve thistask.Most of
them are only compatible with GNU/Linux.
Their problem is that they create complexity inthearchitecture's design. You need to be
DBA & sysadmin to manage those solutions:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
54 / 139
55. Automation
And this is the most complicated part...
It exists a large amount of external tools that canbe used to achieve thistask.Most of
them are only compatible with GNU/Linux.
Their problem is that they create complexity inthearchitecture's design. You need to be
DBA & sysadmin to manage those solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
55 / 139
56. Automation
And this is the most complicated part...
It exists a large amount of external tools that canbe used to achieve thistask.Most of
them are only compatible with GNU/Linux.
Their problem is that they create complexity inthearchitecture's design. You need to be
DBA & sysadmin to manage those solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Pacemaker withMySQLdedicated OCF
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
56 / 139
57. Automation
And this is the most complicated part...
It exists a large amount of external tools that canbe used to achieve thistask.Most of
them are only compatible with GNU/Linux.
Their problem is that they create complexity inthearchitecture's design. You need to be
DBA & sysadmin to manage those solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Pacemaker withMySQLdedicated OCF
MHA
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
57 / 139
58. MySQL Group Replication
but what is it ?!?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
58 / 139
59. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
59 / 139
60. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
60 / 139
61. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
61 / 139
62. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
GR allows to write on all Group Members (cluster nodes) simultaneously while
retaining consistency
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
62 / 139
63. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
GR allows to write on all Group Members (cluster nodes) simultaneously while
retaining consistency
GR implements conflict detection and resolution
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
63 / 139
64. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
GR allows to write on all Group Members (cluster nodes) simultaneously while
retaining consistency
GR implements conflict detection and resolution
GR allows automatic distributed recovery
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
64 / 139
65. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
GR allows to write on all Group Members (cluster nodes) simultaneously while
retaining consistency
GR implements conflict detection and resolution
GR allows automatic distributed recovery
Supported onallMySQLplatforms!!
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
65 / 139
66. MySQL Group Replication
but what is it ?!?
GR is a plugin forMySQL, made byMySQLand packaged withMySQL
GR is an implementation of Replicated Database State Machine theory
MySQLGroup Communication System(GCS) isbased on Paxos Mencius
GR allows to write on all Group Members (cluster nodes) simultaneously while
retaining consistency
GR implements conflict detection and resolution
GR allows automatic distributed recovery
Supported onallMySQLplatforms!!
Linux, Windows, Solaris, OSX,FreeBSD
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
66 / 139
67. And for users ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
67 / 139
68. And for users ?
no longer necessary to handleserver fail-over manually or with a complicated script
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
68 / 139
69. And for users ?
no longer necessary to handleserver fail-over manually or with a complicated script
GR provides fault tolerance
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
69 / 139
70. And for users ?
no longer necessary to handleserver fail-over manually or with a complicated script
GR provides fault tolerance
GR enables update-everywhere setups
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
70 / 139
71. And for users ?
no longer necessary to handleserver fail-over manually or with a complicated script
GR provides fault tolerance
GR enables update-everywhere setups
GR handles crashes, failures, re-connetcs automatically
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
71 / 139
72. And for users ?
no longer necessary to handleserver fail-over manually or with a complicated script
GR provides fault tolerance
GR enables update-everywhere setups
GR handles crashes, failures, re-connetcs automatically
Allows an easy setup of aMySQLservice high available !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
72 / 139
73. OK, but how does it work ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
73 / 139
74. OK, but how does it work ?
it's just ...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
74 / 139
75. OK, but how does it work ?
it's just ...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
75 / 139
76. OK, but how does it work ?
it's just ...
... no, in fact the writesets replication issynchronousand then certification and apply of
the changes are local to each nodes and asynchronous.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
76 / 139
77. OK, but how does it work ?
it's just ...
... no, in fact the writesets replication issynchronousand then certification and apply of
the changes are local to each nodes and asynchronous.
not that easy to understand... right ? As a picture isworth a 1000words, let's illustrate
this...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
77 / 139
90. Certification
Certification is the process that only needs to answer thefollowing unique question:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
90 / 139
91. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
91 / 139
92. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
92 / 139
93. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
93 / 139
94. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
94 / 139
95. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
95 / 139
96. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
results are not reported to thegroup
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
96 / 139
97. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
results are not reported to thegroup
pass: enter in the apply queue
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
97 / 139
98. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
results are not reported to thegroup
pass: enter in the apply queue
fail: drop the transaction
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
98 / 139
99. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
results are not reported to thegroup
pass: enter in the apply queue
fail: drop the transaction
serialized by the total order in GCS/XCOM+ GTID
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
99 / 139
100. Certification
Certification is the process that only needs to answer thefollowing unique question:
can the write (transaction) beapplied?
based on unapplied earlier transactions
such conflicts must come forother members/nodes
happens on every member/node
should be deterministic on every node
results are not reported to thegroup
pass: enter in the apply queue
fail: drop the transaction
serialized by the total order in GCS/XCOM+ GTID
cost is based on trx size (# rows &# keys)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
100 / 139
101. GTID
GTIDs are the same as those used by asynchronous replication.
mysql> SELECT * FROM performance_schema.replication_connection_statusG
************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
GROUP_NAME: afb80f36-2bff-11e6-84e0-0800277dd3bf
SOURCE_UUID: afb80f36-2bff-11e6-84e0-0800277dd3bf
THREAD_ID: NULL
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: afb80f36-2bff-11e6-84e0-0800277dd3bf:1-57,
f037578b-46b1-11e6-8005-08002774c31b:1-48937
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
101 / 139
102. but transactions use the Group´s GTID
mysql> show master statusG
************************** 1. row ***************************
File: mysql4-bin.000001
Position: 1501
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: afb80f36-2bff-11e6-84e0-0800277dd3bf:1-57,
f037578b-46b1-11e6-8005-08002774c31b:1-48937
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
102 / 139
104. Requirements
exclusively works with InnoDBtables only
every tables must have a PK defined
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
104 / 139
105. Requirements
exclusively works with InnoDBtables only
every tables must have a PK defined
only IPV4 is supported
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
105 / 139
106. Requirements
exclusively works with InnoDBtables only
every tables must have a PK defined
only IPV4 is supported
a good network with low latency isimportant
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
106 / 139
107. Requirements
exclusively works with InnoDBtables only
every tables must have a PK defined
only IPV4 is supported
a good network with low latency isimportant
maximum of 9 members per group
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
107 / 139
108. Requirements
exclusively works with InnoDBtables only
every tables must have a PK defined
only IPV4 is supported
a good network with low latency isimportant
maximum of 9 members per group
log-bin must be enabled and onlyROWformat is supported
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
108 / 139
110. Requirements (2)
enable GTIDs
replication meta-data must bestored insystem tables
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
110 / 139
111. Requirements (2)
enable GTIDs
replication meta-data must bestored insystem tables
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
writesets extraction must be enabled
--transaction-write-set-extraction=XXHASH64
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
111 / 139
112. Requirements (2)
enable GTIDs
replication meta-data must bestored insystem tables
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
writesets extraction must be enabled
--transaction-write-set-extraction=XXHASH64
log-slave-updates must alsobe enabled
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
112 / 139
113. Limitations
binlog checksum is not supported (but we have checksum in the replicationchannel)
--binlog-checksum=NONE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
113 / 139
114. Limitations
binlog checksum is not supported (but we have checksum in the replicationchannel)
--binlog-checksum=NONE
savepointswere not supported before 5.7.19& 8.0.1
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
114 / 139
115. Limitations
binlog checksum is not supported (but we have checksum in the replicationchannel)
--binlog-checksum=NONE
savepointswere not supported before 5.7.19& 8.0.1
SERIALIZABLEis not supported as transaction isolation level
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
115 / 139
116. Limitations
binlog checksum is not supported (but we have checksum in the replicationchannel)
--binlog-checksum=NONE
savepointswere not supported before 5.7.19& 8.0.1
SERIALIZABLEis not supported as transaction isolation level
http://lefred.be/content/mysql-group-replication-limitations-savepoints/
http://lefred.be/content/mysql-group-replication-and-table-design/
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
116 / 139
117. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
117 / 139
118. MySQL Router (GA!)
MySQLRouter is lightweight middleware that provides transparent routing between your
application and backendMySQLServers. It can be used for awide variety of use cases,
such as providing high availability and scalability by effectively routing database trafficto
appropriate backendMySQLServers.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
118 / 139
119. MySQL Router (GA!)
MySQLRouter is lightweight middleware that provides transparent routing between your
application and backendMySQLServers. It can be used for awide variety of use cases,
such as providing high availability and scalability by effectively routing database trafficto
appropriate backendMySQLServers.
MySQLRouter doesn´t require any specific configuration. Itconfigures itself automatically
(bootstrap) usingMySQLInnoDB Cluster´s metadata.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
119 / 139
120. MySQL Router (GA!)
MySQLRouter is lightweight middleware that provides transparent routing between your
application and backendMySQLServers. It can be used for awide variety of use cases,
such as providing high availability and scalability by effectively routing database trafficto
appropriate backendMySQLServers.
MySQLRouter doesn´t require any specific configuration. Itconfigures itself automatically
(bootstrap) usingMySQLInnoDB Cluster´s metadata.
TheMySQLRouter development will be focusing on sharding.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
120 / 139
121. ProxySQLhas native support for Group
Replication which makes it a good choice for
advanced users.
ProxySQL
If you need some specific features that are not yet available inMySQLRouter, like
transparent R/W splitting, then you canuse your software of choice.
We are also collaborating with ProxySQL.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
121 / 139
122. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
122 / 139
123. MySQL Shell (GA!)
TheMySQLShell is an interactive Javascript, Python, or SQLinterface supporting
development and administration for theMySQLServer and is acomponent of theMySQL
Server. You can use theMySQLShell to perform data queriesand updates aswell as
various administration operations.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
123 / 139
124. MySQL Shell (2)
TheMySQLShell provides:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
124 / 139
125. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
125 / 139
126. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Document and Relational Models
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
126 / 139
127. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
127 / 139
128. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
128 / 139
129. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
MySQLStandard and X Protocols
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
129 / 139
130. MySQL Shell (2)
TheMySQLShell provides:
Both Interactive and Batch operations
Document and Relational Models
CRUD Document and Relational APIs via scripting
Traditional Table, JSON, Tab Separated output results formats
MySQLStandard and X Protocols
and more...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
130 / 139
131. MySQL Shell (3)
PREVIEW: the new Shell´s prompt is nice and clear !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
131 / 139
132. don´t forget, this is a HA solution !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
132 / 139
133. Deploying a MySQL using MySQL Shell´s
adminAPI:
mysql-js> var i1 = 'root@instance01.boston:3306';
mysql-js> var i2 = 'root@instance02.boston:3306';
mysql-js> var i3 = 'root@instance03.boston:3306';
mysql-js> dba.checkInstanceCon guration(i1);
mysql-js> dba.checkInstanceCon guration(i2);
mysql-js> dba.checkInstanceCon guration(i3);
mysql-js> shell.connect(i1);
mysql-js> var cluster = dba.createCluster('BostonMUG');
mysql-js> cluster.checkInstanceState(i2);
mysql-js> cluster.addInstance(i2);
mysql-js> cluster.checkInstanceState(i3);
mysql-js> cluster.addInstance(i3);
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
133 / 139
135. instance01.yaml :
classes:
- innodbcluster
innodbcluster::mysql_serverid: 1
Thanks to the shell we can automate everything ;-)
https://github.com/lefred/puppet-lefred-innodbcluster
Super easy using hiera:
common.yaml:
innodbcluster::mysql_root_password: StRongP4ssw0rD!
innodbcluster::mysql_bind_interface: eth1
innodbcluster::cluster_name: BostonMUG
innodbcluster::grant::user: fred
innodbcluster::grant::password: fred
innodbcluster::seed: instance01.boston
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
135 / 139
136. example (2)
Withhiera-eyaml you can even encrypt your password:
innodbcluster::mysql_root_password: >
ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
DQYJKoZIhvcNAQEBBQAEggEAhqKUTXZ/4L8/aL3XARMfDBEI+s5HPshPg9BI
...
FLfovstrb8zmcbk5yb/KD0lDM8Elas0lrnpk8MxwNfKw+hB299JFp8ldAtUk
ODIieTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBJEeoyzHtW/WGpbiUz
gcXTgBAnb1gGrBZAfAiv/ztwuZ9z]
innodbcluster::mysql_bind_interface: eth1
innodbcluster::cluster_name: BostonMUG
innodbcluster::grant::user: root
innodbcluster::grant::password: >
ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
DQYJKoZIhvcNAQEBBQAEggEAhqKUTXZ/4L8/aL3XARMfDBEI+s5HPshPg9BI
...
FLfovstrb8zmcbk5yb/KD0lDM8Elas0lrnpk8MxwNfKw+hB299JFp8ldAtUk
ODIieTA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBBJEeoyzHtW/WGpbiUz
gcXTgBAnb1gGrBZAfAiv/ztwuZ9z]
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
136 / 139