SlideShare a Scribd company logo
1 of 65
Download to read offline
 
MySQL Group Replication
 
 
 
 
 
 
 
 
Kenny Gryp (@gryp)
1 / 65
Table of Contents
1. Overview 5. Backups
2. Provisioning Nodes 6. Load Balancers
3. Configuration 7. Improvements
4. Monitoring
2 / 65
Apologies upfront. I was able to spend limited time researching
Group Replication, my knowledge is a lot more limited compared
to many MySQL (Group Replication) developers in this room. I
may have made wrong assumptions or discuss problems, missing
features which are likely known and on the roadmap to be
fixed/developed in reasonable time. Group Replication is a quite
new feature and only recently became GA. Hereby I give full
responsibility to the MySQL Developers to respond whenever I
made a wrong statement :-), but please keep in mind that my talk is
only 25 minutes long. Even though MySQL Group Replication is
marked GA, it is still a new feature and database software adoption
usually takes a long time, bugs mentioned (some of which are not
verified yet) in these slides are not here to try to tell you the feature
is not good, I believe it is my duty as member of the community to
provide feedback and getting the opportunity to talk in this room
with a lot of Oracle employees clearly demonstrates this is their
desire as well, even though it does scare me quite a lot! This talk
describes the status of Group Replication on 31/01/2017.
3 / 65
MySQL Group Replication
Overview
4 / 65
MySQL Asynchronous Replication
5 / 65
MySQL Group Replication
6 / 65
Quick Overview
Writes in entire Group Replication executed in
'Global Total Order'
Majority consensus (Paxos Mencius)
Writes will be received/accepted by majority of the nodes
No guarantee all nodes have received a trx before
application gets OK back
Optimistic Locking: Conflict Detection after replicating trx:
'Certification'
First Committer Wins
Every node has all data, cluster is 'as fast as slowest node'.
Nodes can join/leave cluster
7 / 65
Properties
No concept of master/slave, only 'members'
Durability:
No data loss, when failure of nodes happen. Does not accept
writes if there is no Quorum.
Active:Active Master:
All nodes can be configured to accept writes at same time *
No (time consuming) failover is necessary, every member can
become a writer member at any time
Added latency to every transaction COMMIT.
8 / 65
MySQL InnoDB Cluster
9 / 65
MySQL InnoDB Cluster
10 / 65
MySQL Group Replication
Main focus: Design & Usability
Performance & Stability was not yet analyzed
11 / 65
Use Cases for Group Replication
Environments with strict durability requirements
(no data loss if master member is lost)
Write to multiple nodes
('scalability' by splitting write/read workloads)
Improve failover time
...
12 / 65
MySQL Group Replication
Provisioning Nodes
13 / 65
GTID
Please note that Group Replication uses GTID
14 / 65
GTID
Please note that Group Replication uses GTID
Keep into Account:
Creating a cluster and provisioning nodes requires 'compatible'
GTID-sets
Errant Transactions!
15 / 65
Errant Transactions
Ensure there are no errant transactions before starting group
replication:
[ERROR] Plugin group_replication reported:
'This member has more executed transactions than those present
in the group.
Local transactions: 74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1
>
Group transactions: 72149827-e1cc-11e6-9daf-08002789cd2e:1,
da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-5'
[ERROR] Plugin group_replication reported:
'The member contains transactions not present in the group.
The member will now exit the group.'
[Note] Plugin group_replication reported:
'To force this member into the group you can use
the group_replication_allow_local_disjoint_gtids_join option'
16 / 65
Best Practice
Please never use
group_replication_allow_local_disjoint_gtids_join
once you use it, you always have to keep it on.
they might have been writes to the individual node (GR not
active)
data consistency/split brain/data loss/...
#84728: GR failure at start still starts MySQL
#84733: not possible to start with super_read_only=1
17 / 65
Starting Cluster
First Choose the right node to bootstrap:
mysql> select @@global.gtid_executedG
************************** 1. row ***************************
@@global.gtid_executed: 72149827-e1cc-11e6-9daf-08002789cd2e:1,
740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2,
74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2,
da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-399
1 row in set (0.00 sec)
ensure compatible GTID sets or forget about it!
choose node with all GTIDs
18 / 65
Cluster Membership Operations
Start a new cluster:
SET GLOBAL group_replication_bootstrap_group=on;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=off;
19 / 65
Cluster Membership Operations
Start a new cluster:
SET GLOBAL group_replication_bootstrap_group=on;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=off;
Restore (GTID-enabled) Backup
SET GLOBAL group_replication_group_seeds='node1,node2,node3';
START GROUP_REPLICATION;
#84674: unresolved hostnames block GR from starting
20 / 65
MySQL Group Replication
Configuration
21 / 65
Configuration Requirements
[mysqld]
log-bin
binlog-format=row
binlog-checksum=NONE
gtid-mode=ON
log-slave-updates
master-info-repository=TABLE
relay-log-info-repository=TABLE
transaction-write-set-extraction=XXHASH64
Group Replication Configuration:
group_replication_group_name="da7aba5e-dead-da7a-ba55-da7aba5e57ab"
group_replication_local_address= "gr-2:24901"
group_replication_group_seeds= "gr-1:24901,gr-2:24901,gr-3:24901"
22 / 65
MySQL InnoDB Cluster
No Security/Authentication is described in these slides
Possible to create a cluster in the MySQL Shell w. AdminAPI
Also performs configuration checks
23 / 65
Other Requirements/Limitations
Required:
InnoDB Required
PK on every table
24 / 65
Other Requirements/Limitations
Required:
InnoDB Required
PK on every table
Not supported:
Transaction Savepoints
#84799: mysqldump --single-transaction uses
savepoints, does not work with GR
In multi-writer/active:active
Concurrent DDL vs DML/DDL operations
25 / 65
Oracle's (Valid) Recommendations
Only use
group_replication_single_primary_mode=ON
write to a single node only
Not recommended for WAN
(Probably because of Majority Consensus in Paxos Mencius)
Requires uneven amount of nodes for proper Quorum
26 / 65
My Recommendations - my.cnf
27 / 65
My Recommendations - my.cnf
Do not use loose- even though it is mentioned in the manual
#84631: installation documentation issues
28 / 65
My Recommendations - my.cnf
Do not use loose- even though it is mentioned in the manual
#84631: installation documentation issues
._allow_local_disjoint_gtids_join=OFF
29 / 65
My Recommendations - my.cnf
Do not use loose- even though it is mentioned in the manual
#84631: installation documentation issues
._allow_local_disjoint_gtids_join=OFF
Single writer mode?
group_replication_auto_increment_increment=7
default is too high. Set to 1.
30 / 65
My Recommendations - my.cnf
Do not use loose- even though it is mentioned in the manual
#84631: installation documentation issues
._allow_local_disjoint_gtids_join=OFF
Single writer mode?
group_replication_auto_increment_increment=7
default is too high. Set to 1.
group_replication_bootstrap_group=OFF
31 / 65
My Recommendations - my.cnf
Do not use loose- even though it is mentioned in the manual
#84631: installation documentation issues
._allow_local_disjoint_gtids_join=OFF
Single writer mode?
group_replication_auto_increment_increment=7
default is too high. Set to 1.
group_replication_bootstrap_group=OFF
group_replication_start_on_boot=ON
#84728: GR failure at start still starts MySQL 32 / 65
My Recommendations
33 / 65
My Recommendations
Ensure all FQDN hostnames are resolvable.
#84674: unresolved hostnames block GR from starting
@@global.hostname is used by other
members
34 / 65
My Recommendations
Ensure all FQDN hostnames are resolvable.
#84674: unresolved hostnames block GR from starting
@@global.hostname is used by other
members
Dangerous to issue:
SET GLOBAL read_only=OFF;
SET GLOBAL super_read_only=OFF;
STOP GROUP_REPLICATION;
#84795: STOP GROUP_REPLICATION sets
super_read_only=off
35 / 65
My Failed Recommendation
In an attempt to prevent split brain and because of:
#84728: GR failure at start still starts MySQL
I tried to enforce super_read_only=1 at boot, but that
failed too:
#84733: not possible to start with super_read_only=1
I did not find a way to prevent a MySQL node from starting as a
individual r/w MySQL server when Group Replication failed to
start.
36 / 65
MySQL Group Replication
Monitoring
(Profiling, Trending, Alerting, Status, Troubleshooting)
37 / 65
Performance Schema
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA='performance_schema'
AND TABLE_NAME LIKE '%replication%';
+-------------------------------------------+
| TABLE_NAME |
+-------------------------------------------+
| replication_applier_configuration |
| replication_applier_status |
| replication_applier_status_by_coordinator |
| replication_applier_status_by_worker |
| replication_connection_configuration |
| replication_connection_status |
| replication_group_member_stats |
| replication_group_members |
+-------------------------------------------+
2 replication appliers:
group_replication_applier <- group replication
38 / 65
Trending - SHOW GLOBAL
STATUS
Limited Status Information (which are usually easy to gather):
mysql> show global status like '%group%';
+----------------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------------+--------------------------------------+
| Com_group_replication_start | 0 |
| Com_group_replication_stop | 0 |
| group_replication_primary_member | 72149827-e1cc-11e6-9daf-08002789cd2e |
+----------------------------------+--------------------------------------+
39 / 65
Trending - PFS
mysql> select * from replication_group_member_statsG
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
VIEW_ID: 14860449946972589:2
MEMBER_ID: 74dc6ab2-e1cc-11e6-92aa-08002789cd2e
COUNT_TRANSACTIONS_IN_QUEUE: 0 # Certification queue
COUNT_TRANSACTIONS_CHECKED: 4
COUNT_CONFLICTS_DETECTED: 0
COUNT_TRANSACTIONS_ROWS_VALIDATING: 0
TRANSACTIONS_COMMITTED_ALL_MEMBERS:
72149827-e1cc-11e6-9daf-08002789cd2e:1,
740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2,
74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2,
da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-444:1000041-1000503:2000041-
LAST_CONFLICT_FREE_TRANSACTION:
da7aba5e-dead-da7a-ba55-da7aba5e57ab:444
1 row in set (0.00 sec)
40 / 65
Group Replication Status
mysql> select * from replication_connection_statusG
*************************** 1. row ***************************
CHANNEL_NAME: group_replication_applier
GROUP_NAME: da7aba5e-dead-da7a-ba55-da7aba5e57ab
SOURCE_UUID: da7aba5e-dead-da7a-ba55-da7aba5e57ab
THREAD_ID: NULL
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
72149827-e1cc-11e6-9daf-08002789cd2e:1,
740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2,
74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2,
da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-444:1000041-1000503:2000041-2000648
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
41 / 65
Group Replication Members
mysql> select * from replication_group_members;
+--------------------------------------+------+------+--------+
| ID | HOST | PORT | STATE |
+--------------------------------------+------+------+--------+
| 72149827-e1cc-11e6-9daf-08002789cd2e | gr-1 | 3306 | ONLINE |
| 74dc6ab2-e1cc-11e6-92aa-08002789cd2e | gr-3 | 3306 | ONLINE |
+--------------------------------------+------+------+--------+
2 rows in set (0.00 sec)
# slightly modified output
#84796: GR Member status is wrong
42 / 65
Group Replication Read or Write.
mysql> select @@global.super_read_only;
+--------------------------+
| @@global.super_read_only |
+--------------------------+
| 1 |
+--------------------------+
1 row in set (0.05 sec)
43 / 65
Group Replication Lag
SELECT sys.gtid_count(
GTID_SUBTRACT(
(
SELECT
Received_transaction_set
FROM performance_schema.replication_connection_status
WHERE
Channel_name = 'group_replication_applier'
),
(SELECT
@@global.GTID_EXECUTED)
)
)
)
Thanks to @lefred:
https://github.com/lefred/mysql_gr_routing_check/
44 / 65
Commands
mysql> SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery'G
mysql> SHOW SLAVE STATUS FOR CHANNEL 'group_replication_applier'G
ERROR 3139 (HY000): SHOW SLAVE STATUS cannot be performed on channel 'group_re
45 / 65
Member State Changes
Can use improvements:
#84796: GR Member status is wrong
#84798: Group Replication can use some verbosity in the error
log
46 / 65
Multi Node Conflicts
Optimistic Locking
First committer wins
#84730: ability to troubleshoot transaction rollbacks
ERROR 3101 (HY000) at line 1: Plugin instructed the server
to rollback the current transaction.
47 / 65
MySQL Group Replication
Backups
48 / 65
Backups
It's just InnoDB, use your favorite GTID supported backup tool:
Percona XtraBackup
MySQL Enterprise Backup
mysqldump
mysqlpump
mydumper
but...
49 / 65
Backups
It's just InnoDB, use your favorite GTID supported backup tool:
Percona XtraBackup
MySQL Enterprise Backup
mysqldump
mysqlpump
mydumper
but...
#84799: mysqldump --single-transaction uses savepoints, does
not work with GR
mydumper --use-savepoints is also affected
50 / 65
MySQL Group Replication
Load Balancers
51 / 65
MySQL Router (Beta)
MySQL Router is part of MySQL InnoDB Cluster
52 / 65
MySQL Router (Beta)
MySQL Router is part of MySQL InnoDB Cluster
I briefly evaluated, but quickly ran into serious problems:
missing a lot of features
pretty unknown in the community
...:
#83237: mysqlrouter connects to wrong metadata server (a
partitioned node)
Visibility:
#83236: How to see mysqlrouter membership status?
53 / 65
MySQL Router (Beta)
MySQL Router is part of MySQL InnoDB Cluster
I briefly evaluated, but quickly ran into serious problems:
missing a lot of features
pretty unknown in the community
...:
#83237: mysqlrouter connects to wrong metadata server (a
partitioned node)
Visibility:
#83236: How to see mysqlrouter membership status?
I might consider to re-evaluate, but first ^^
54 / 65
ProxySQL
Really Open Source!
Becoming very popular
Example Implementation http://lefred.be/content/ha-with-
mysql-group-replication-and-proxysql/
Careful: #2: using multiple hostgroups/schedulers with
proxysql_groupreplication_checker.sh can
cause unwanted state changes
55 / 65
MySQL Group Replication
Improvements
56 / 65
#84784 - Nodes Do Not Reconnect
Nodes do not reconnect to the group replication once they got
disconnected, causing nodes to drop from the cluster and can
lead to losing the whole cluster availability
57 / 65
Improvements
58 / 65
Improvements
Reduce impact on applications:
#84731: mysql client connections get stuck during GR start
59 / 65
Improvements
Reduce impact on applications:
#84731: mysql client connections get stuck during GR start
Partition Tolerance issues, split brain cannot be prevented:
#84727: partitioned nodes still accept writes: queries hang
#84728: GR failure at start still starts MySQL
#84729: block reads on partitioned nodes *
#84733: not possible to start with super_read_only=1
#84784: Nodes Do Not Reconnect
#84795: STOP GROUP_REPLICATION sets
super_read_only=off
60 / 65
Improvements
Stability:
#84785: Prevent Large Transactions in Group Replication
#84792: Member using 100% CPU in idle cluster
#84796: GR Member status is wrong
61 / 65
Improvements
Stability:
#84785: Prevent Large Transactions in Group Replication
#84792: Member using 100% CPU in idle cluster
#84796: GR Member status is wrong
Usability:
#84674: unresolved hostnames block GR from starting
#84794: cannot kill query that is stuck inside GR
#84799: mysqldump --single-transaction uses
savepoints, does not work with GR
#84798: Group Replication can use some
verbosity in the error log
62 / 65
For Every Bug Fixed: 1 Beer
63 / 65
MySQL Group Replication
Summary
64 / 65
Summary
Use Cases for Group Replication
Environments with strict durability requirements
Ensure split-brain can be completely avoided
Write to multiple nodes
('scalability' by splitting write/read workloads)
Not recommended (yet)
Improve failover time
Reducing impact on applications can be improved
...
65 / 65

More Related Content

What's hot

Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesSeveralnines
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQLI Goo Lee
 
MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !Frederic Descamps
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLOlivier DASINI
 
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Miguel Araújo
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestratorYoungHeon (Roy) Kim
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기NHN FORWARD
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!Vitor Oliveira
 
MySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMario Beck
 
Everything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationEverything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationNuno Carvalho
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesKenny Gryp
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterFrederic Descamps
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10Kenny Gryp
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsFrederic Descamps
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)Altinity Ltd
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)Jean-François Gagné
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMiguel Araújo
 
MySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMorgan Tocker
 
MySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellMySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellFrederic Descamps
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바NeoClova
 

What's hot (20)

Load Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - SlidesLoad Balancing MySQL with HAProxy - Slides
Load Balancing MySQL with HAProxy - Slides
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQL
 
MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !MySQL Shell - the best DBA tool !
MySQL Shell - the best DBA tool !
 
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQLMySQL InnoDB Cluster - A complete High Availability solution for MySQL
MySQL InnoDB Cluster - A complete High Availability solution for MySQL
 
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
Disaster Recovery with MySQL InnoDB ClusterSet - What is it and how do I use it?
 
My sql failover test using orchestrator
My sql failover test  using orchestratorMy sql failover test  using orchestrator
My sql failover test using orchestrator
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!MySQL Replication Performance Tuning for Fun and Profit!
MySQL Replication Performance Tuning for Fun and Profit!
 
MySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB ClusterMySQL InnoDB Cluster and NDB Cluster
MySQL InnoDB Cluster and NDB Cluster
 
Everything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group ReplicationEverything You Need to Know About MySQL Group Replication
Everything You Need to Know About MySQL Group Replication
 
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best PracticesMySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
MySQL InnoDB Cluster - New Features in 8.0 Releases - Best Practices
 
Introduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB ClusterIntroduction to MySQL InnoDB Cluster
Introduction to MySQL InnoDB Cluster
 
MySQL Database Architectures - 2020-10
MySQL Database Architectures -  2020-10MySQL Database Architectures -  2020-10
MySQL Database Architectures - 2020-10
 
Open Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and HistogramsOpen Source 101 2022 - MySQL Indexes and Histograms
Open Source 101 2022 - MySQL Indexes and Histograms
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
MySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA ToolMySQL Shell - The Best MySQL DBA Tool
MySQL Shell - The Best MySQL DBA Tool
 
MySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer Guide
 
MySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a NutshellMySQL InnoDB Cluster and Group Replication in a Nutshell
MySQL InnoDB Cluster and Group Replication in a Nutshell
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 

Viewers also liked

Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group ReplicationPercona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group ReplicationKenny Gryp
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程zhaolinjnu
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalabilityyin gong
 
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreGroup Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreAlfranio Júnior
 
MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourRonald Bradford
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisSveta Smirnova
 
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyMySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyContinuent
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability SolutionsLenz Grimmer
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)frogd
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialKenny Gryp
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationNuno Carvalho
 
MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadSveta Smirnova
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group ReplicationManish Kumar
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?Sveta Smirnova
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLRonald Bradford
 
Mastering InnoDB Diagnostics
Mastering InnoDB DiagnosticsMastering InnoDB Diagnostics
Mastering InnoDB Diagnosticsguest8212a5
 

Viewers also liked (20)

Extensible Data Modeling
Extensible Data ModelingExtensible Data Modeling
Extensible Data Modeling
 
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group ReplicationPercona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
Percona XtraDB Cluster vs Galera Cluster vs MySQL Group Replication
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
Mysql high availability and scalability
Mysql high availability and scalabilityMysql high availability and scalability
Mysql high availability and scalability
 
Group Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication CoreGroup Replication: A Journey to the Group Communication Core
Group Replication: A Journey to the Group Communication Core
 
MySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD TourMySQL Best Practices - OTN LAD Tour
MySQL Best Practices - OTN LAD Tour
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
 
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware companyMySQL High Availability and Disaster Recovery with Continuent, a VMware company
MySQL High Availability and Disaster Recovery with Continuent, a VMware company
 
Mysql For Developers
Mysql For DevelopersMysql For Developers
Mysql For Developers
 
MySQL High Availability Solutions
MySQL High Availability SolutionsMySQL High Availability Solutions
MySQL High Availability Solutions
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
 
MySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn TutorialMySQL Group Replication - HandsOn Tutorial
MySQL Group Replication - HandsOn Tutorial
 
MySQL High Availability with Group Replication
MySQL High Availability with Group ReplicationMySQL High Availability with Group Replication
MySQL High Availability with Group Replication
 
MySQL - checklist для новичка в Highload
MySQL - checklist для новичка в HighloadMySQL - checklist для новичка в Highload
MySQL - checklist для новичка в Highload
 
MySQL Group Replication
MySQL Group ReplicationMySQL Group Replication
MySQL Group Replication
 
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
MySQL Storage Engines - which do you use? TokuDB? MyRocks? InnoDB?
 
Capturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQLCapturing, Analyzing and Optimizing MySQL
Capturing, Analyzing and Optimizing MySQL
 
Mastering InnoDB Diagnostics
Mastering InnoDB DiagnosticsMastering InnoDB Diagnostics
Mastering InnoDB Diagnostics
 
Load Data Fast!
Load Data Fast!Load Data Fast!
Load Data Fast!
 

Similar to MySQL Group Replication

Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeOlivier DASINI
 
Meb Backup & Recovery Performance
Meb Backup & Recovery PerformanceMeb Backup & Recovery Performance
Meb Backup & Recovery PerformanceKeith Hollman
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017Dave Stokes
 
Advanced Percona XtraDB Cluster in a nutshell... la suite
Advanced Percona XtraDB Cluster in a nutshell... la suiteAdvanced Percona XtraDB Cluster in a nutshell... la suite
Advanced Percona XtraDB Cluster in a nutshell... la suiteKenny Gryp
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentJean-François Gagné
 
Reducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLReducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLKenny Gryp
 
PoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAPoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAUlf Wendel
 
Oracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterOracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterBenedita Paúl Vasconcelos
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentJean-François Gagné
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changesMorgan Tocker
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureKenny Gryp
 
Memcachedb: The Complete Guide
Memcachedb: The Complete GuideMemcachedb: The Complete Guide
Memcachedb: The Complete Guideelliando dias
 
Percona XtraDB 集群文档
Percona XtraDB 集群文档Percona XtraDB 集群文档
Percona XtraDB 集群文档YUCHENG HU
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Frederic Descamps
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Wim Godden
 
Mysql wp cluster_quickstart_windows
Mysql wp cluster_quickstart_windowsMysql wp cluster_quickstart_windows
Mysql wp cluster_quickstart_windowsRogério Rocha
 

Similar to MySQL Group Replication (20)

Upgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtimeUpgrade to MySQL 5.6 without downtime
Upgrade to MySQL 5.6 without downtime
 
Meb Backup & Recovery Performance
Meb Backup & Recovery PerformanceMeb Backup & Recovery Performance
Meb Backup & Recovery Performance
 
MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017MySQL 101 PHPTek 2017
MySQL 101 PHPTek 2017
 
Advanced Percona XtraDB Cluster in a nutshell... la suite
Advanced Percona XtraDB Cluster in a nutshell... la suiteAdvanced Percona XtraDB Cluster in a nutshell... la suite
Advanced Percona XtraDB Cluster in a nutshell... la suite
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated Environment
 
MySQL NoSQL APIs
MySQL NoSQL APIsMySQL NoSQL APIs
MySQL NoSQL APIs
 
Reducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQLReducing Risk When Upgrading MySQL
Reducing Risk When Upgrading MySQL
 
PoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HAPoC: Using a Group Communication System to improve MySQL Replication HA
PoC: Using a Group Communication System to improve MySQL Replication HA
 
Oracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL ClusterOracle OpenWorld - Getting started with MySQL Cluster
Oracle OpenWorld - Getting started with MySQL Cluster
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated Environment
 
Mysql 57-upcoming-changes
Mysql 57-upcoming-changesMysql 57-upcoming-changes
Mysql 57-upcoming-changes
 
Multi Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ VerisureMulti Source Replication With MySQL 5.7 @ Verisure
Multi Source Replication With MySQL 5.7 @ Verisure
 
Memcachedb: The Complete Guide
Memcachedb: The Complete GuideMemcachedb: The Complete Guide
Memcachedb: The Complete Guide
 
Mysql
Mysql Mysql
Mysql
 
Percona XtraDB 集群文档
Percona XtraDB 集群文档Percona XtraDB 集群文档
Percona XtraDB 集群文档
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
 
Memcachedb Guide 1.0
Memcachedb Guide 1.0Memcachedb Guide 1.0
Memcachedb Guide 1.0
 
Galera webinar migration to galera cluster from my sql async replication
Galera webinar migration to galera cluster from my sql async replicationGalera webinar migration to galera cluster from my sql async replication
Galera webinar migration to galera cluster from my sql async replication
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011
 
Mysql wp cluster_quickstart_windows
Mysql wp cluster_quickstart_windowsMysql wp cluster_quickstart_windows
Mysql wp cluster_quickstart_windows
 

More from Kenny Gryp

MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08Kenny Gryp
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11Kenny Gryp
 
MySQL Operator for Kubernetes
MySQL Operator for KubernetesMySQL Operator for Kubernetes
MySQL Operator for KubernetesKenny Gryp
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialKenny Gryp
 
MySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVMySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVKenny Gryp
 
MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)Kenny Gryp
 
Online MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupOnline MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupKenny Gryp
 
Java MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & OptimizationJava MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & OptimizationKenny Gryp
 
Percona XtraDB Cluster
Percona XtraDB ClusterPercona XtraDB Cluster
Percona XtraDB ClusterKenny Gryp
 

More from Kenny Gryp (9)

MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08MySQL Database Architectures - 2022-08
MySQL Database Architectures - 2022-08
 
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
MySQL Database Architectures - MySQL InnoDB ClusterSet 2021-11
 
MySQL Operator for Kubernetes
MySQL Operator for KubernetesMySQL Operator for Kubernetes
MySQL Operator for Kubernetes
 
MySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - TutorialMySQL InnoDB Cluster / ReplicaSet - Tutorial
MySQL InnoDB Cluster / ReplicaSet - Tutorial
 
MySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVMySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRV
 
MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)MySQL Group Replication - Ready For Production? (2018-04)
MySQL Group Replication - Ready For Production? (2018-04)
 
Online MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackupOnline MySQL Backups with Percona XtraBackup
Online MySQL Backups with Percona XtraBackup
 
Java MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & OptimizationJava MySQL Connector & Connection Pool Features & Optimization
Java MySQL Connector & Connection Pool Features & Optimization
 
Percona XtraDB Cluster
Percona XtraDB ClusterPercona XtraDB Cluster
Percona XtraDB Cluster
 

Recently uploaded

What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

MySQL Group Replication

  • 2. Table of Contents 1. Overview 5. Backups 2. Provisioning Nodes 6. Load Balancers 3. Configuration 7. Improvements 4. Monitoring 2 / 65
  • 3. Apologies upfront. I was able to spend limited time researching Group Replication, my knowledge is a lot more limited compared to many MySQL (Group Replication) developers in this room. I may have made wrong assumptions or discuss problems, missing features which are likely known and on the roadmap to be fixed/developed in reasonable time. Group Replication is a quite new feature and only recently became GA. Hereby I give full responsibility to the MySQL Developers to respond whenever I made a wrong statement :-), but please keep in mind that my talk is only 25 minutes long. Even though MySQL Group Replication is marked GA, it is still a new feature and database software adoption usually takes a long time, bugs mentioned (some of which are not verified yet) in these slides are not here to try to tell you the feature is not good, I believe it is my duty as member of the community to provide feedback and getting the opportunity to talk in this room with a lot of Oracle employees clearly demonstrates this is their desire as well, even though it does scare me quite a lot! This talk describes the status of Group Replication on 31/01/2017. 3 / 65
  • 7. Quick Overview Writes in entire Group Replication executed in 'Global Total Order' Majority consensus (Paxos Mencius) Writes will be received/accepted by majority of the nodes No guarantee all nodes have received a trx before application gets OK back Optimistic Locking: Conflict Detection after replicating trx: 'Certification' First Committer Wins Every node has all data, cluster is 'as fast as slowest node'. Nodes can join/leave cluster 7 / 65
  • 8. Properties No concept of master/slave, only 'members' Durability: No data loss, when failure of nodes happen. Does not accept writes if there is no Quorum. Active:Active Master: All nodes can be configured to accept writes at same time * No (time consuming) failover is necessary, every member can become a writer member at any time Added latency to every transaction COMMIT. 8 / 65
  • 11. MySQL Group Replication Main focus: Design & Usability Performance & Stability was not yet analyzed 11 / 65
  • 12. Use Cases for Group Replication Environments with strict durability requirements (no data loss if master member is lost) Write to multiple nodes ('scalability' by splitting write/read workloads) Improve failover time ... 12 / 65
  • 14. GTID Please note that Group Replication uses GTID 14 / 65
  • 15. GTID Please note that Group Replication uses GTID Keep into Account: Creating a cluster and provisioning nodes requires 'compatible' GTID-sets Errant Transactions! 15 / 65
  • 16. Errant Transactions Ensure there are no errant transactions before starting group replication: [ERROR] Plugin group_replication reported: 'This member has more executed transactions than those present in the group. Local transactions: 74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1 > Group transactions: 72149827-e1cc-11e6-9daf-08002789cd2e:1, da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-5' [ERROR] Plugin group_replication reported: 'The member contains transactions not present in the group. The member will now exit the group.' [Note] Plugin group_replication reported: 'To force this member into the group you can use the group_replication_allow_local_disjoint_gtids_join option' 16 / 65
  • 17. Best Practice Please never use group_replication_allow_local_disjoint_gtids_join once you use it, you always have to keep it on. they might have been writes to the individual node (GR not active) data consistency/split brain/data loss/... #84728: GR failure at start still starts MySQL #84733: not possible to start with super_read_only=1 17 / 65
  • 18. Starting Cluster First Choose the right node to bootstrap: mysql> select @@global.gtid_executedG ************************** 1. row *************************** @@global.gtid_executed: 72149827-e1cc-11e6-9daf-08002789cd2e:1, 740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2, 74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2, da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-399 1 row in set (0.00 sec) ensure compatible GTID sets or forget about it! choose node with all GTIDs 18 / 65
  • 19. Cluster Membership Operations Start a new cluster: SET GLOBAL group_replication_bootstrap_group=on; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=off; 19 / 65
  • 20. Cluster Membership Operations Start a new cluster: SET GLOBAL group_replication_bootstrap_group=on; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=off; Restore (GTID-enabled) Backup SET GLOBAL group_replication_group_seeds='node1,node2,node3'; START GROUP_REPLICATION; #84674: unresolved hostnames block GR from starting 20 / 65
  • 22. Configuration Requirements [mysqld] log-bin binlog-format=row binlog-checksum=NONE gtid-mode=ON log-slave-updates master-info-repository=TABLE relay-log-info-repository=TABLE transaction-write-set-extraction=XXHASH64 Group Replication Configuration: group_replication_group_name="da7aba5e-dead-da7a-ba55-da7aba5e57ab" group_replication_local_address= "gr-2:24901" group_replication_group_seeds= "gr-1:24901,gr-2:24901,gr-3:24901" 22 / 65
  • 23. MySQL InnoDB Cluster No Security/Authentication is described in these slides Possible to create a cluster in the MySQL Shell w. AdminAPI Also performs configuration checks 23 / 65
  • 25. Other Requirements/Limitations Required: InnoDB Required PK on every table Not supported: Transaction Savepoints #84799: mysqldump --single-transaction uses savepoints, does not work with GR In multi-writer/active:active Concurrent DDL vs DML/DDL operations 25 / 65
  • 26. Oracle's (Valid) Recommendations Only use group_replication_single_primary_mode=ON write to a single node only Not recommended for WAN (Probably because of Majority Consensus in Paxos Mencius) Requires uneven amount of nodes for proper Quorum 26 / 65
  • 27. My Recommendations - my.cnf 27 / 65
  • 28. My Recommendations - my.cnf Do not use loose- even though it is mentioned in the manual #84631: installation documentation issues 28 / 65
  • 29. My Recommendations - my.cnf Do not use loose- even though it is mentioned in the manual #84631: installation documentation issues ._allow_local_disjoint_gtids_join=OFF 29 / 65
  • 30. My Recommendations - my.cnf Do not use loose- even though it is mentioned in the manual #84631: installation documentation issues ._allow_local_disjoint_gtids_join=OFF Single writer mode? group_replication_auto_increment_increment=7 default is too high. Set to 1. 30 / 65
  • 31. My Recommendations - my.cnf Do not use loose- even though it is mentioned in the manual #84631: installation documentation issues ._allow_local_disjoint_gtids_join=OFF Single writer mode? group_replication_auto_increment_increment=7 default is too high. Set to 1. group_replication_bootstrap_group=OFF 31 / 65
  • 32. My Recommendations - my.cnf Do not use loose- even though it is mentioned in the manual #84631: installation documentation issues ._allow_local_disjoint_gtids_join=OFF Single writer mode? group_replication_auto_increment_increment=7 default is too high. Set to 1. group_replication_bootstrap_group=OFF group_replication_start_on_boot=ON #84728: GR failure at start still starts MySQL 32 / 65
  • 34. My Recommendations Ensure all FQDN hostnames are resolvable. #84674: unresolved hostnames block GR from starting @@global.hostname is used by other members 34 / 65
  • 35. My Recommendations Ensure all FQDN hostnames are resolvable. #84674: unresolved hostnames block GR from starting @@global.hostname is used by other members Dangerous to issue: SET GLOBAL read_only=OFF; SET GLOBAL super_read_only=OFF; STOP GROUP_REPLICATION; #84795: STOP GROUP_REPLICATION sets super_read_only=off 35 / 65
  • 36. My Failed Recommendation In an attempt to prevent split brain and because of: #84728: GR failure at start still starts MySQL I tried to enforce super_read_only=1 at boot, but that failed too: #84733: not possible to start with super_read_only=1 I did not find a way to prevent a MySQL node from starting as a individual r/w MySQL server when Group Replication failed to start. 36 / 65
  • 37. MySQL Group Replication Monitoring (Profiling, Trending, Alerting, Status, Troubleshooting) 37 / 65
  • 38. Performance Schema SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='performance_schema' AND TABLE_NAME LIKE '%replication%'; +-------------------------------------------+ | TABLE_NAME | +-------------------------------------------+ | replication_applier_configuration | | replication_applier_status | | replication_applier_status_by_coordinator | | replication_applier_status_by_worker | | replication_connection_configuration | | replication_connection_status | | replication_group_member_stats | | replication_group_members | +-------------------------------------------+ 2 replication appliers: group_replication_applier <- group replication 38 / 65
  • 39. Trending - SHOW GLOBAL STATUS Limited Status Information (which are usually easy to gather): mysql> show global status like '%group%'; +----------------------------------+--------------------------------------+ | Variable_name | Value | +----------------------------------+--------------------------------------+ | Com_group_replication_start | 0 | | Com_group_replication_stop | 0 | | group_replication_primary_member | 72149827-e1cc-11e6-9daf-08002789cd2e | +----------------------------------+--------------------------------------+ 39 / 65
  • 40. Trending - PFS mysql> select * from replication_group_member_statsG *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier VIEW_ID: 14860449946972589:2 MEMBER_ID: 74dc6ab2-e1cc-11e6-92aa-08002789cd2e COUNT_TRANSACTIONS_IN_QUEUE: 0 # Certification queue COUNT_TRANSACTIONS_CHECKED: 4 COUNT_CONFLICTS_DETECTED: 0 COUNT_TRANSACTIONS_ROWS_VALIDATING: 0 TRANSACTIONS_COMMITTED_ALL_MEMBERS: 72149827-e1cc-11e6-9daf-08002789cd2e:1, 740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2, 74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2, da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-444:1000041-1000503:2000041- LAST_CONFLICT_FREE_TRANSACTION: da7aba5e-dead-da7a-ba55-da7aba5e57ab:444 1 row in set (0.00 sec) 40 / 65
  • 41. Group Replication Status mysql> select * from replication_connection_statusG *************************** 1. row *************************** CHANNEL_NAME: group_replication_applier GROUP_NAME: da7aba5e-dead-da7a-ba55-da7aba5e57ab SOURCE_UUID: da7aba5e-dead-da7a-ba55-da7aba5e57ab THREAD_ID: NULL SERVICE_STATE: ON COUNT_RECEIVED_HEARTBEATS: 0 LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00 RECEIVED_TRANSACTION_SET: 72149827-e1cc-11e6-9daf-08002789cd2e:1, 740e1fd2-e1cc-11e6-a8ec-08002789cd2e:1-2, 74dc6ab2-e1cc-11e6-92aa-08002789cd2e:1-2, da7aba5e-dead-da7a-ba55-da7aba5e57ab:1-444:1000041-1000503:2000041-2000648 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00 41 / 65
  • 42. Group Replication Members mysql> select * from replication_group_members; +--------------------------------------+------+------+--------+ | ID | HOST | PORT | STATE | +--------------------------------------+------+------+--------+ | 72149827-e1cc-11e6-9daf-08002789cd2e | gr-1 | 3306 | ONLINE | | 74dc6ab2-e1cc-11e6-92aa-08002789cd2e | gr-3 | 3306 | ONLINE | +--------------------------------------+------+------+--------+ 2 rows in set (0.00 sec) # slightly modified output #84796: GR Member status is wrong 42 / 65
  • 43. Group Replication Read or Write. mysql> select @@global.super_read_only; +--------------------------+ | @@global.super_read_only | +--------------------------+ | 1 | +--------------------------+ 1 row in set (0.05 sec) 43 / 65
  • 44. Group Replication Lag SELECT sys.gtid_count( GTID_SUBTRACT( ( SELECT Received_transaction_set FROM performance_schema.replication_connection_status WHERE Channel_name = 'group_replication_applier' ), (SELECT @@global.GTID_EXECUTED) ) ) ) Thanks to @lefred: https://github.com/lefred/mysql_gr_routing_check/ 44 / 65
  • 45. Commands mysql> SHOW SLAVE STATUS FOR CHANNEL 'group_replication_recovery'G mysql> SHOW SLAVE STATUS FOR CHANNEL 'group_replication_applier'G ERROR 3139 (HY000): SHOW SLAVE STATUS cannot be performed on channel 'group_re 45 / 65
  • 46. Member State Changes Can use improvements: #84796: GR Member status is wrong #84798: Group Replication can use some verbosity in the error log 46 / 65
  • 47. Multi Node Conflicts Optimistic Locking First committer wins #84730: ability to troubleshoot transaction rollbacks ERROR 3101 (HY000) at line 1: Plugin instructed the server to rollback the current transaction. 47 / 65
  • 49. Backups It's just InnoDB, use your favorite GTID supported backup tool: Percona XtraBackup MySQL Enterprise Backup mysqldump mysqlpump mydumper but... 49 / 65
  • 50. Backups It's just InnoDB, use your favorite GTID supported backup tool: Percona XtraBackup MySQL Enterprise Backup mysqldump mysqlpump mydumper but... #84799: mysqldump --single-transaction uses savepoints, does not work with GR mydumper --use-savepoints is also affected 50 / 65
  • 51. MySQL Group Replication Load Balancers 51 / 65
  • 52. MySQL Router (Beta) MySQL Router is part of MySQL InnoDB Cluster 52 / 65
  • 53. MySQL Router (Beta) MySQL Router is part of MySQL InnoDB Cluster I briefly evaluated, but quickly ran into serious problems: missing a lot of features pretty unknown in the community ...: #83237: mysqlrouter connects to wrong metadata server (a partitioned node) Visibility: #83236: How to see mysqlrouter membership status? 53 / 65
  • 54. MySQL Router (Beta) MySQL Router is part of MySQL InnoDB Cluster I briefly evaluated, but quickly ran into serious problems: missing a lot of features pretty unknown in the community ...: #83237: mysqlrouter connects to wrong metadata server (a partitioned node) Visibility: #83236: How to see mysqlrouter membership status? I might consider to re-evaluate, but first ^^ 54 / 65
  • 55. ProxySQL Really Open Source! Becoming very popular Example Implementation http://lefred.be/content/ha-with- mysql-group-replication-and-proxysql/ Careful: #2: using multiple hostgroups/schedulers with proxysql_groupreplication_checker.sh can cause unwanted state changes 55 / 65
  • 57. #84784 - Nodes Do Not Reconnect Nodes do not reconnect to the group replication once they got disconnected, causing nodes to drop from the cluster and can lead to losing the whole cluster availability 57 / 65
  • 59. Improvements Reduce impact on applications: #84731: mysql client connections get stuck during GR start 59 / 65
  • 60. Improvements Reduce impact on applications: #84731: mysql client connections get stuck during GR start Partition Tolerance issues, split brain cannot be prevented: #84727: partitioned nodes still accept writes: queries hang #84728: GR failure at start still starts MySQL #84729: block reads on partitioned nodes * #84733: not possible to start with super_read_only=1 #84784: Nodes Do Not Reconnect #84795: STOP GROUP_REPLICATION sets super_read_only=off 60 / 65
  • 61. Improvements Stability: #84785: Prevent Large Transactions in Group Replication #84792: Member using 100% CPU in idle cluster #84796: GR Member status is wrong 61 / 65
  • 62. Improvements Stability: #84785: Prevent Large Transactions in Group Replication #84792: Member using 100% CPU in idle cluster #84796: GR Member status is wrong Usability: #84674: unresolved hostnames block GR from starting #84794: cannot kill query that is stuck inside GR #84799: mysqldump --single-transaction uses savepoints, does not work with GR #84798: Group Replication can use some verbosity in the error log 62 / 65
  • 63. For Every Bug Fixed: 1 Beer 63 / 65
  • 65. Summary Use Cases for Group Replication Environments with strict durability requirements Ensure split-brain can be completely avoided Write to multiple nodes ('scalability' by splitting write/read workloads) Not recommended (yet) Improve failover time Reducing impact on applications can be improved ... 65 / 65