3. MySQL InnoDB Cluster
Quand Haute Disponibilité et facilité de déploiement font bon ménage
Jeudis du Libre - Mars 2017
3 / 124
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 / 124
9. Notre vision on 4 étapes
MySQLDocumentStore
ModèleRelationnel&Document
HauteDispoMySQL
HauteDispoprêteàl'emploi
"Sclale-Up"V ertical
Basculementautomatique
"Sclale-Up"Horizontal
Sharding
E1 E3
E2 E4
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
9 / 124
10. Architecture de l´étape 2
Application
MySQLConnector
MySQLRouter
MySQLShell
InnoDB
cluster
Application
MySQLConnector
MySQLRouter
Mp
M
M
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
10 / 124
11. Architecture de l´étape 3
Application
MySQLConnector
MySQLRouter
MySQLShell
InnoDB
cluster
Application
MySQLConnector
MySQLRouter
Mp
M
M
S1 S2 S3 S4 S...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
11 / 124
12. Architecture de l´étape 4
Application
MySQLConnector
MySQLRouter
MySQLShell
Application
MySQLConnector
MySQLRouter
InnoDB
cluster
Mp
M
M
S2 S3 S4 S...S1
InnoDB
cluster
Mp
M
M
S1 S2 S3 S4 S...
InnoDB
cluster
Mp
M
M
S1 S2 S3 S4 S...
Application
MySQLConnector
MySQLRouter
Application
MySQLConnector
MySQLRouter
Application
MySQLConnector
MySQLRouter
replicaset1
replicaset2
replicaset3
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
12 / 124
13. Group Replication: le coeur de MySQL InnoDB
Cluster
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
13 / 124
14. Group Replication: le coeur de MySQL InnoDB
Cluster
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
14 / 124
15. Mais avant d'aller plus loin...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
15 / 124
17. Haute Disponibilité
La haute disponibilité est un termesouventutiliséeninformatique,àproposd
´architecture de système ou d´unservicepour désigner lefaitquecettearchitectureouce
service a un taux de disponibilitéconvenable.
Deux moyens complémentairessont utilisés pour améliorer la haute disponibilité :
la mise en place d´une infrastructure matérielle spécialisée, généralement en se
basantsur de la redondance matérielle. Est alors créé un cluster de haute-
disponibilité (par opposition àun cluster de calcul) : une grappe d´ordinateursdont le
but est d´assurer un service en évitant aumaximum les indisponibilités ;
la mise en place de processus adaptés permettant de réduire les erreurs, et d
´accélérer la reprise en cas d´erreur. ITILcontient de nombreux processus de ce type.
Source: WikipédiaCopyright @ 2017 Oracle and/or its affiliates. All rights reserved.
17 / 124
18. Les principes de la Haute Disponibilité
Redondance des services/desdonnées
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
18 / 124
19. Les principes de la Haute Disponibilité
Redondance des services/desdonnées
Réduire l'impact d´une panne
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
19 / 124
20. Les principes de la Haute Disponibilité
Redondance des services/desdonnées
Réduire l'impact d´une panne
Basculement lors d´un problèmeou en casde maintenance
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
20 / 124
21. Les principes de la Haute Disponibilité
Redondance des services/desdonnées
Réduire l'impact d´une panne
Basculement lors d´un problèmeou en casde maintenance
Récupération de la perte de redoncance
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
21 / 124
22. Redondance de bases de données
Comment y parvient-on ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
22 / 124
23. Redondance de bases de données
Comment y parvient-on ?
Il existe plusieurs solutions, certaines bien pires que d´autres ;-)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
23 / 124
24. Redondance de bases de données
Comment y parvient-on ?
Il existe plusieurs solutions, certaines bien pires que d´autres ;-)
utilisation d´un disque partagé (SAN)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
24 / 124
25. Redondance de bases de données
Comment y parvient-on ?
Il existe plusieurs solutions, certaines bien pires que d´autres ;-)
utilisation d´un disque partagé (SAN)
utilisation de blocs partagés via le réseau(drbd)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
25 / 124
26. Redondance de bases de données
Comment y parvient-on ?
Il existe plusieurs solutions, certaines bien pires que d´autres ;-)
utilisation d´un disque partagé (SAN)
utilisation de blocs partagés via le réseau(drbd)
utilisation de la réplication
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
26 / 124
27. Redondance de bases de données
Comment y parvient-on ?
Il existe plusieurs solutions, certaines bien pires que d´autres ;-)
utilisation d´un disque partagé (SAN)
utilisation de blocs partagés via le réseau(drbd)
utilisation de la réplication
C'est effectivement cette dernière technique qui est la plus fiable et la plus répendue.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
27 / 124
28. Réplication MySQL
Il existe plusieurs types de réplication dans MySQL:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
28 / 124
29. Réplication MySQL
Il existe plusieurs types de réplication dans MySQL:
réplication asynchrone (async)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
29 / 124
30. Réplication MySQL
Il existe plusieurs types de réplication dans MySQL:
réplication asynchrone (async)
réplication semi-synchrone (semi-sync)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
30 / 124
31. Réplication MySQL
Il existe plusieurs types de réplication dans MySQL:
réplication asynchrone (async)
réplication semi-synchrone (semi-sync)
réplication de groupe (group replication) -Nouveau!!
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
31 / 124
32. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
32 / 124
33. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
33 / 124
34. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
l'initialisation (provisioning) des replicasest manuelle
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
34 / 124
35. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
l'initialisation (provisioning) des replicasest manuelle
la cohérense (consistency) desreplicasest assummée et nécessite une vérification
manuelle
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
35 / 124
36. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
l'initialisation (provisioning) des replicasest manuelle
la cohérense (consistency) desreplicasest assummée et nécessite une vérification
manuelle
des topologies très complexes peuvent être construites
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
36 / 124
37. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
l'initialisation (provisioning) des replicasest manuelle
la cohérense (consistency) desreplicasest assummée et nécessite une vérification
manuelle
des topologies très complexes peuvent être construites
il est possible (et fort déconseillé) de créer des replications circulaires
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
37 / 124
38. Réplication(s) Asynchrone(s)
les replicas (slaves) "stream" les logs de réplication à partir d´un maître unique
les replicas peuvent être retardés (lag), iln´y a aucune garantiede livraison (sauf
semi-sync)
l'initialisation (provisioning) des replicasest manuelle
la cohérense (consistency) desreplicasest assummée et nécessite une vérification
manuelle
des topologies très complexes peuvent être construites
il est possible (et fort déconseillé) de créer des replications circulaires
les écritures ne sont sûr qu´à partir d´un unique maître global
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
38 / 124
39. Architectures de HA avec la réplication
asynchrone
Les architectures sont multiples et les outils pour les mettre en oeuvre également.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
39 / 124
40. Architectures de HA avec la réplication
asynchrone
Les architectures sont multiples et les outils pour les mettre en oeuvre également.
Elles se basent toutes sur le mêmeprincipe:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
40 / 124
41. Architectures de HA avec la réplication
asynchrone
Les architectures sont multiples et les outils pour les mettre en oeuvre également.
Elles se basent toutes sur le mêmeprincipe:
1 maître (master)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
41 / 124
42. Architectures de HA avec la réplication
asynchrone
Les architectures sont multiples et les outils pour les mettre en oeuvre également.
Elles se basent toutes sur le mêmeprincipe:
1 maître (master)
1 ou plusieurs replicas (slaves)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
42 / 124
43. Architectures de HA avec la réplication
asynchrone
Les architectures sont multiples et les outils pour les mettre en oeuvre également.
Elles se basent toutes sur le mêmeprincipe:
1 maître (master)
1 ou plusieurs replicas (slaves)
Si le maître a un problème, leslave le plus à jours doit prendre le relaiset être promu
maître aux yeux des autres escalves encore en ligne.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
43 / 124
45. Automatisation
Et c´est là que c´est plus compliqué ;-)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
45 / 124
46. Automatisation
Et c´est là que c´est plus compliqué ;-)
En fait il existe beaucoup d´outils externes qui peuvent être utilisés pour cette tâche. La
majorité ne sont compatible qu´avec GNU/Linux.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
46 / 124
47. Automatisation
Et c´est là que c´est plus compliqué ;-)
En fait il existe beaucoup d´outils externes qui peuvent être utilisés pour cette tâche. La
majorité ne sont compatible qu´avec GNU/Linux.
Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadminpour
pouvoir maintenir ces solutions:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
47 / 124
48. Automatisation
Et c´est là que c´est plus compliqué ;-)
En fait il existe beaucoup d´outils externes qui peuvent être utilisés pour cette tâche. La
majorité ne sont compatible qu´avec GNU/Linux.
Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadminpour
pouvoir maintenir ces solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
48 / 124
49. Automatisation
Et c´est là que c´est plus compliqué ;-)
En fait il existe beaucoup d´outils externes qui peuvent être utilisés pour cette tâche. La
majorité ne sont compatible qu´avec GNU/Linux.
Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadminpour
pouvoir maintenir ces solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Pacemaker avec un OCF dédié àMySQL
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
49 / 124
50. Automatisation
Et c´est là que c´est plus compliqué ;-)
En fait il existe beaucoup d´outils externes qui peuvent être utilisés pour cette tâche. La
majorité ne sont compatible qu´avec GNU/Linux.
Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadminpour
pouvoir maintenir ces solutions:
MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)
Pacemaker avec un OCF dédié àMySQL
MHA
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
50 / 124
51. MySQL Group Replication
Mais qu´est-ce que c´est ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
51 / 124
52. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
52 / 124
53. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
53 / 124
54. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
54 / 124
55. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Il permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaire
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
55 / 124
56. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Il permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaire
Il détecte les conflits
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
56 / 124
57. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Il permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaire
Il détecte les conflits
Et permet la récupération distribuée automatique
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
57 / 124
58. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Il permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaire
Il détecte les conflits
Et permet la récupération distribuée automatique
Supporté surtoutes les plateformesMySQL!!
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
58 / 124
59. MySQL Group Replication
Mais qu´est-ce que c´est ?
C´est un plugin pourMySQLfourni avecMySQLparMySQL!
GR est l´implémentation de la théorie"Replicated Database State Machine"
MySQLGroup Communication System(GCS) est basé sur Paxos Mencius
Il permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaire
Il détecte les conflits
Et permet la récupération distribuée automatique
Supporté surtoutes les plateformesMySQL!!
Linux, Windows, Solaris, OSX,FreeBSD
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
59 / 124
60. Et pour les utilisateurs ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
60 / 124
61. Et pour les utilisateurs ?
Il n´est plus nécessaire d´effectuer un basculement du rôle des serveurs
manuellement ou avec un script compliqué
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
61 / 124
62. Et pour les utilisateurs ?
Il n´est plus nécessaire d´effectuer un basculement du rôle des serveurs
manuellement ou avec un script compliqué
Mise à jours des données surdes serveurs Actifs/Actifs
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
62 / 124
63. Et pour les utilisateurs ?
Il n´est plus nécessaire d´effectuer un basculement du rôle des serveurs
manuellement ou avec un script compliqué
Mise à jours des données surdes serveurs Actifs/Actifs
Gère les pannes distribuées (quorum)
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
63 / 124
64. Et pour les utilisateurs ?
Il n´est plus nécessaire d´effectuer un basculement du rôle des serveurs
manuellement ou avec un script compliqué
Mise à jours des données surdes serveurs Actifs/Actifs
Gère les pannes distribuées (quorum)
Facilite grandement la mise en place d´un service MySQLhautement disponible !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
64 / 124
65. Mais comment ça marche ?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
65 / 124
66. Mais comment ça marche ?
par magie !
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
66 / 124
67. Mais comment ça marche ?
par magie !
Non, au fait, la réplication des"transactions" se faitde manière synchrone, ensuite la
certification et l'application des changements se font de manière asynchrone...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
67 / 124
68. Mais comment ça marche ?
par magie !
Non, au fait, la réplication des"transactions" se faitde manière synchrone, ensuite la
certification et l'application des changements se font de manière asynchrone...
C'est peut-être un peu compliqué commeça... et commedessinvaut mieux qu'un long
discours...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
68 / 124
81. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
81 / 124
82. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
82 / 124
83. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
83 / 124
84. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
84 / 124
85. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
85 / 124
86. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
86 / 124
87. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Le résultat n´est pas communiqué aucluster en retour
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
87 / 124
88. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Le résultat n´est pas communiqué aucluster en retour
Réussite: entre dans la queuepour être appliquée
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
88 / 124
89. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Le résultat n´est pas communiqué aucluster en retour
Réussite: entre dans la queuepour être appliquée
Échec: la transaction est rejetée
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
89 / 124
90. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Le résultat n´est pas communiqué aucluster en retour
Réussite: entre dans la queuepour être appliquée
Échec: la transaction est rejetée
Sérialisée par l´ordre établi dans GCS/XCOM+ GTID
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
90 / 124
91. Certification
La certification est le processus qui a pour but de répondre à cette unique question:
est-ce-que cette écriture (transaction) peutêtreappliquée?
en se basant sur les transactions précédentes qui ne sont pas encore appliquées
ce type de conflit provient toujours des autres membres du groupe
La certification se fait sur chaque membre du groupe
Doit être déterministe sur chaque noeud
Le résultat n´est pas communiqué aucluster en retour
Réussite: entre dans la queuepour être appliquée
Échec: la transaction est rejetée
Sérialisée par l´ordre établi dans GCS/XCOM+ GTID
Le coût varie en fonction du nombres d'index et d'enregistrements
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
91 / 124
92. GTID
Les GTIDs utilisés sont identiques aux GTIDutilisés en réplication asynchrone.
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.
92 / 124
93. Mais c'est le GTID du cluster qui est mélangé aux éventuels autres
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.
93 / 124
94. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
94 / 124
95. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Chaques table doit avoir une clé primaire
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
95 / 124
96. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Chaques table doit avoir une clé primaire
Ne fonctionne qu´en IPV4
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
96 / 124
97. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Chaques table doit avoir une clé primaire
Ne fonctionne qu´en IPV4
Un bon réseau avec peu de latence est important
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
97 / 124
98. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Chaques table doit avoir une clé primaire
Ne fonctionne qu´en IPV4
Un bon réseau avec peu de latence est important
Un maximum de 9 membres par groupe
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
98 / 124
99. Exigences
Les données doivent impérativement être sauvergardées dans des tables en InnoDB
Chaques table doit avoir une clé primaire
Ne fonctionne qu´en IPV4
Un bon réseau avec peu de latence est important
Un maximum de 9 membres par groupe
log-bin doit être activé et seul le format ROWest supporté
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
99 / 124
100. Exigences (2)
les GTIDs doivent être activés
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
100 / 124
101. Exigences (2)
les GTIDs doivent être activés
Les meta données de réplication doivent être sauvergardées dans des tables
systèmes
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
101 / 124
102. Exigences (2)
les GTIDs doivent être activés
Les meta données de réplication doivent être sauvergardées dans des tables
systèmes
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
L´extraction des "writesets" de réplication doit être activée
--transaction-write-set-extraction=XXHASH64
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
102 / 124
103. Exigences (2)
les GTIDs doivent être activés
Les meta données de réplication doivent être sauvergardées dans des tables
systèmes
--master-info-repository=TABLE
--relay-log-info-repository=TABLE
L´extraction des "writesets" de réplication doit être activée
--transaction-write-set-extraction=XXHASH64
log-slave-updates doit aussi être présent
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
103 / 124
104. Limites
Le checksum des évenements répliqués n´est passupporté
--binlog-checksum=NONE
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
104 / 124
105. Limites
Le checksum des évenements répliqués n´est passupporté
--binlog-checksum=NONE
Les "Savepoints" ne sont pas supportés avant 5.7.19 et 8.0.1
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
105 / 124
106. Limites
Le checksum des évenements répliqués n´est passupporté
--binlog-checksum=NONE
Les "Savepoints" ne sont pas supportés avant 5.7.19 et 8.0.1
On ne peut utiliserSERIALIZABLEcomme niveau d'isolation des transactions
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
106 / 124
107. Limites
Le checksum des évenements répliqués n´est passupporté
--binlog-checksum=NONE
Les "Savepoints" ne sont pas supportés avant 5.7.19 et 8.0.1
On ne peut utiliserSERIALIZABLEcomme niveau d'isolation des transactions
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.
107 / 124
108. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
108 / 124
109. MySQL Router
MySQLRouter est un middleware léger qui fournit un routage transparent entre l
´application et n´importe quel serveur MySQL. Il peut être utilisé pour une grande variété
de cas, tels que la haute disponinilité et l´évolutivité (scalability) enacheminant
efficacement le trafic vers les serveursMySQLappropriés.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
109 / 124
110. MySQL Router
MySQLRouter est un middleware léger qui fournit un routage transparent entre l
´application et n´importe quel serveur MySQL. Il peut être utilisé pour une grande variété
de cas, tels que la haute disponinilité et l´évolutivité (scalability) enacheminant
efficacement le trafic vers les serveursMySQLappropriés.
MySQLRouter ne nécessite aucune configuration, ilse configure automatiquement grâce
aux meta-données duMySQLInnoDB Cluster.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
110 / 124
111. MySQL Router
MySQLRouter est un middleware léger qui fournit un routage transparent entre l
´application et n´importe quel serveur MySQL. Il peut être utilisé pour une grande variété
de cas, tels que la haute disponinilité et l´évolutivité (scalability) enacheminant
efficacement le trafic vers les serveursMySQLappropriés.
MySQLRouter ne nécessite aucune configuration, ilse configure automatiquement grâce
aux meta-données duMySQLInnoDB Cluster.
Le dévelopement deMySQLRouter est focalisé sur les étapes suivantes du cluster: le
sharding.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
111 / 124
112. ProxySQL
Pour des besoins plus avancés, nous collaborons également avec ProxySQL pour avoir le
support natif de Group Replication &de MySQLInnoDB Cluster.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
112 / 124
113. Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
113 / 124
114. MySQL Shell
MySQLShell est in interface interactive en Javascript, Python, ou SQL qui prend en charge
le développment et l´administration du serveur MySQL. MySQLShell peut être utilisé pour
effectuer des requêtes et des modifications de données ainsi que diverses opérations d
´administration.
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
114 / 124
115. MySQL Shell (2)
MySQLShell fournit:
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
115 / 124
116. MySQL Shell (2)
MySQLShell fournit:
la possibilité d´effectuer des opérations interactives et de "batch"
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
116 / 124
117. MySQL Shell (2)
MySQLShell fournit:
la possibilité d´effectuer des opérations interactives et de "batch"
l´utilisation d'API CRUD Document et relationnelles
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
117 / 124
118. MySQL Shell (2)
MySQLShell fournit:
la possibilité d´effectuer des opérations interactives et de "batch"
l´utilisation d'API CRUD Document et relationnelles
des résultats sous le format traditionnels (tables), JSON, Tab Separated
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
118 / 124
119. MySQL Shell (2)
MySQLShell fournit:
la possibilité d´effectuer des opérations interactives et de "batch"
l´utilisation d'API CRUD Document et relationnelles
des résultats sous le format traditionnels (tables), JSON, Tab Separated
un accès aux protocolesMySQLStandard and X
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
119 / 124
120. MySQL Shell (2)
MySQLShell fournit:
la possibilité d´effectuer des opérations interactives et de "batch"
l´utilisation d'API CRUD Document et relationnelles
des résultats sous le format traditionnels (tables), JSON, Tab Separated
un accès aux protocolesMySQLStandard and X
et plus encore...
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
120 / 124
121. Commandes pour déployer un cluster en
utilisant l'adminAPI du MySQL Shell:
mysql-js> var i1 = 'root@instance01.jdl:3306';
mysql-js> var i2 = 'root@instance02.jdl:3306';
mysql-js> var i3 = 'root@instance03.jdl: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('JeudisDuLibre');
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.
121 / 124
122. instance01.yaml :
classes:
- innodbcluster
innodbcluster::mysql_serverid: 1
grâce au Shell on peut tout automatiser ;-)
https://github.com/lefred/puppet-lefred-innodbcluster
Super facile à configurer via hiera:
common.yaml:
innodbcluster::mysql_root_password: MegaMotDePasse
innodbcluster::mysql_bind_interface: eth1
innodbcluster::cluster_name: JeudisDuLibre
innodbcluster::grant::user: fred
innodbcluster::grant::password: fred
innodbcluster::seed: instance01.jdl
Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.
122 / 124