Top Banner
1 / 124
124

Jeudis du Libre - MySQL InnoDB Cluster

Mar 22, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Jeudis du Libre - MySQL InnoDB Cluster

1 / 124

Page 2: Jeudis du Libre - MySQL InnoDB Cluster

2 / 124

Page 3: Jeudis du Libre - MySQL InnoDB Cluster

MySQL InnoDB Cluster

Quand Haute Disponibilité et facilité de déploiement font bon ménage

 

Jeudis du Libre - Mars 2017

3 / 124

Page 4: Jeudis du Libre - MySQL InnoDB Cluster

 

Safe Harbor StatementThe following is intended to outline our general product direction. It is intended forinformation purpose only, and may not be incorporated into any contract. It is not acommitment to deliver any material, code, or functionality, and should not be relied up inmaking purchasing decisions. The development, release and timing of any features orfunctionality described for Oracle's product remains at the sole discretion of Oracle.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

4 / 124

Page 5: Jeudis du Libre - MySQL InnoDB Cluster

about.me/lefred

Qui suis-je ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

5 / 124

Page 6: Jeudis du Libre - MySQL InnoDB Cluster

Frédéric Descamps@lefredÉvangéliste MySQLBidouille MySQL depuis la version 3.23devops croyant et praticantMySQL Community Manager depuis mai2016

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

6 / 124

Page 7: Jeudis du Libre - MySQL InnoDB Cluster

MySQL InnoDB Cluster

Haute Dispo facile pour MySQL

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

7 / 124

Page 8: Jeudis du Libre - MySQL InnoDB Cluster

InnoDB

cluster

Facilité d'utilisation

Extrêmement év olutif

Solution prête à l'emploi

Haute Dispo Intégrée

Haute P erformance

Intégration de tous les compos ants

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

8 / 124

Page 9: Jeudis du Libre - MySQL InnoDB Cluster

Notre vision on 4 étapes

MySQL Document Store

Modèle Relationnel & Document

Haute Dispo MySQL

Haute Dispo prête à l'emploi

"Sclale-Up" V ertical

Basculement automatique

"Sclale-Up" Horizontal

Sharding

E1

E3

E2 E4

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

9 / 124

Page 10: Jeudis du Libre - MySQL InnoDB Cluster

Architecture de l´étape 2

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

M

y

S

Q

L

S

h

e

l

l

I

n

n

o

D

B

c

l

u

s

t

e

r

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

M

p

M

M

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

10 / 124

Page 11: Jeudis du Libre - MySQL InnoDB Cluster

Architecture de l´étape 3A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

M

y

S

Q

L

S

h

e

l

l

I

n

n

o

D

B

c

l

u

s

t

e

r

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

M

p

M

M

S1 S2 S3 S4 S...

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

11 / 124

Page 12: Jeudis du Libre - MySQL InnoDB Cluster

Architecture de l´étape 4A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

M

y

S

Q

L

S

h

e

l

l

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

I

n

n

o

D

B

c

l

u

s

t

e

r

M

p

M

M

S2 S3 S4 S...S1

I

n

n

o

D

B

c

l

u

s

t

e

r

M

p

M

M

S1 S2 S3 S4 S...

I

n

n

o

D

B

c

l

u

s

t

e

r

M

p

M

M

S1 S2 S3 S4 S...

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

A

p

p

l

i

c

a

t

i

o

n

M

y

S

Q

L

C

o

n

n

e

c

t

o

r

M

y

S

Q

L

R

o

u

t

e

r

replicaset 1

replicaset 2

replicaset 3

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

12 / 124

Page 13: Jeudis du Libre - MySQL InnoDB Cluster

Group Replication: le coeur de MySQL InnoDBCluster

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

13 / 124

Page 14: Jeudis du Libre - MySQL InnoDB Cluster

Group Replication: le coeur de MySQL InnoDBCluster

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

14 / 124

Page 15: Jeudis du Libre - MySQL InnoDB Cluster

Mais avant d'aller plus loin...

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

15 / 124

Page 16: Jeudis du Libre - MySQL InnoDB Cluster

Qu´est-que la

Haute Disponibilité

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

16 / 124

Page 17: Jeudis du Libre - MySQL InnoDB Cluster

Haute DisponibilitéLa haute disponibilité est un terme souvent utilisé en informatique, à propos d´architecture de système ou d´un service pour désigner le fait que cette architecture ou ceservice a un taux de disponibilité convenable.

Deux moyens complémentaires sont utilisés pour améliorer la haute disponibilité :

la mise en place d´une infrastructure matérielle spécialisée, généralement en sebasant sur de la redondance matérielle. Est alors créé un cluster de haute-disponibilité (par opposition à un cluster de calcul) : une grappe d´ordinateurs dont lebut est d´assurer un service en évitant au maximum 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. ITIL contient de nombreux processus de ce type.

Source: WikipédiaCopyright @ 2017 Oracle and/or its affiliates. All rights reserved.

17 / 124

Page 18: Jeudis du Libre - MySQL InnoDB Cluster

Les principes de la Haute DisponibilitéRedondance des services/des données

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

18 / 124

Page 19: Jeudis du Libre - MySQL InnoDB Cluster

Les principes de la Haute DisponibilitéRedondance des services/des donnéesRéduire l'impact d´une panne

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

19 / 124

Page 20: Jeudis du Libre - MySQL InnoDB Cluster

Les principes de la Haute DisponibilitéRedondance des services/des donnéesRéduire l'impact d´une panneBasculement lors d´un problème ou en cas de maintenance

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

20 / 124

Page 21: Jeudis du Libre - MySQL InnoDB Cluster

Les principes de la Haute DisponibilitéRedondance des services/des donnéesRéduire l'impact d´une panneBasculement lors d´un problème ou en cas de maintenanceRécupération de la perte de redoncance

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

21 / 124

Page 22: Jeudis du Libre - MySQL InnoDB Cluster

Redondance de bases de données

Comment y parvient-on ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

22 / 124

Page 23: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 24: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 25: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 26: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 27: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 28: Jeudis du Libre - MySQL InnoDB Cluster

Réplication MySQLIl existe plusieurs types de réplication dans MySQL:

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

28 / 124

Page 29: Jeudis du Libre - MySQL InnoDB Cluster

Réplication MySQLIl existe plusieurs types de réplication dans MySQL:

réplication asynchrone (async)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

29 / 124

Page 30: Jeudis du Libre - MySQL InnoDB Cluster

Réplication MySQLIl 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

Page 31: Jeudis du Libre - MySQL InnoDB Cluster

Réplication MySQLIl 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

Page 32: Jeudis du Libre - MySQL InnoDB Cluster

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

Page 33: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

33 / 124

Page 34: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)l'initialisation (provisioning) des replicas est manuelle

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

34 / 124

Page 35: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)l'initialisation (provisioning) des replicas est manuellela cohérense (consistency) des replicas est assummée et nécessite une vérificationmanuelle

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

35 / 124

Page 36: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)l'initialisation (provisioning) des replicas est manuellela cohérense (consistency) des replicas est assummée et nécessite une vérificationmanuelledes topologies très complexes peuvent être construites

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

36 / 124

Page 37: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)l'initialisation (provisioning) des replicas est manuellela cohérense (consistency) des replicas est assummée et nécessite une vérificationmanuelledes topologies très complexes peuvent être construitesil est possible (et fort déconseillé) de créer des replications circulaires

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

37 / 124

Page 38: Jeudis du Libre - MySQL InnoDB Cluster

Réplication(s) Asynchrone(s)les replicas (slaves) "stream" les logs de réplication à partir d´un maître uniqueles replicas peuvent être retardés (lag), il n´y a aucune garantie de livraison (saufsemi-sync)l'initialisation (provisioning) des replicas est manuellela cohérense (consistency) des replicas est assummée et nécessite une vérificationmanuelledes topologies très complexes peuvent être construitesil est possible (et fort déconseillé) de créer des replications circulairesles é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

Page 39: Jeudis du Libre - MySQL InnoDB Cluster

Architectures de HA avec la réplicationasynchroneLes architectures sont multiples et les outils pour les mettre en oeuvre également.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

39 / 124

Page 40: Jeudis du Libre - MySQL InnoDB Cluster

Architectures de HA avec la réplicationasynchroneLes architectures sont multiples et les outils pour les mettre en oeuvre également.

Elles se basent toutes sur le même principe:

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

40 / 124

Page 41: Jeudis du Libre - MySQL InnoDB Cluster

Architectures de HA avec la réplicationasynchroneLes architectures sont multiples et les outils pour les mettre en oeuvre également.

Elles se basent toutes sur le même principe:

1 maître (master)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

41 / 124

Page 42: Jeudis du Libre - MySQL InnoDB Cluster

Architectures de HA avec la réplicationasynchroneLes architectures sont multiples et les outils pour les mettre en oeuvre également.

Elles se basent toutes sur le même principe:

1 maître (master)1 ou plusieurs replicas (slaves)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

42 / 124

Page 43: Jeudis du Libre - MySQL InnoDB Cluster

Architectures de HA avec la réplicationasynchroneLes architectures sont multiples et les outils pour les mettre en oeuvre également.

Elles se basent toutes sur le même principe:

1 maître (master)1 ou plusieurs replicas (slaves)

Si le maître a un problème, le slave le plus à jours doit prendre le relais et être promumaître aux yeux des autres escalves encore en ligne.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

43 / 124

Page 44: Jeudis du Libre - MySQL InnoDB Cluster

Automatisation

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

44 / 124

Page 45: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt c´est là que c´est plus compliqué ;-)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

45 / 124

Page 46: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt 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. Lamajorité ne sont compatible qu´avec GNU/Linux.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

46 / 124

Page 47: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt 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. Lamajorité ne sont compatible qu´avec GNU/Linux.

Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadmin pourpouvoir maintenir ces solutions:

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

47 / 124

Page 48: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt 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. Lamajorité ne sont compatible qu´avec GNU/Linux.

Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadmin pourpouvoir maintenir ces solutions:

MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

48 / 124

Page 49: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt 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. Lamajorité ne sont compatible qu´avec GNU/Linux.

Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadmin pourpouvoir 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

Page 50: Jeudis du Libre - MySQL InnoDB Cluster

AutomatisationEt 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. Lamajorité ne sont compatible qu´avec GNU/Linux.

Leur problème est qu´ils viennent complexifier l'architecture. Il faut être sysadmin pourpouvoir maintenir ces solutions:

MySQL-Utilities (mysqlrplcheck, mysqlrpladmin)Pacemaker avec un OCF dédié à MySQLMHA

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

50 / 124

Page 51: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

51 / 124

Page 52: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

52 / 124

Page 53: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !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

Page 54: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos Mencius

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

54 / 124

Page 55: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos MenciusIl 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

Page 56: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos MenciusIl permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaireIl détecte les conflits

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

56 / 124

Page 57: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos MenciusIl permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaireIl détecte les conflitsEt permet la récupération distribuée automatique

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

57 / 124

Page 58: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos MenciusIl permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaireIl détecte les conflitsEt permet la récupération distribuée automatiqueSupporté sur toutes les plateformes MySQL !!

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

58 / 124

Page 59: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Mais qu´est-ce que c´est ?

C´est un plugin pour MySQL fourni avec MySQL par MySQL !GR est l´implémentation de la théorie "Replicated Database State Machine"

MySQL Group Communication System (GCS) est basé sur Paxos MenciusIl permet d´écrire sur tous les membres du groupe (noeuds du cluster) si nécessaireIl détecte les conflitsEt permet la récupération distribuée automatiqueSupporté sur toutes les plateformes MySQL !!

Linux, Windows, Solaris, OSX, FreeBSD

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

59 / 124

Page 60: Jeudis du Libre - MySQL InnoDB Cluster

Et pour les utilisateurs ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

60 / 124

Page 61: Jeudis du Libre - MySQL InnoDB Cluster

Et pour les utilisateurs ?Il n´est plus nécessaire d´effectuer un basculement du rôle des serveursmanuellement ou avec un script compliqué

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

61 / 124

Page 62: Jeudis du Libre - MySQL InnoDB Cluster

Et pour les utilisateurs ?Il n´est plus nécessaire d´effectuer un basculement du rôle des serveursmanuellement ou avec un script compliquéMise à jours des données sur des serveurs Actifs/Actifs

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

62 / 124

Page 63: Jeudis du Libre - MySQL InnoDB Cluster

Et pour les utilisateurs ?Il n´est plus nécessaire d´effectuer un basculement du rôle des serveursmanuellement ou avec un script compliquéMise à jours des données sur des serveurs Actifs/ActifsGère les pannes distribuées (quorum)

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

63 / 124

Page 64: Jeudis du Libre - MySQL InnoDB Cluster

Et pour les utilisateurs ?Il n´est plus nécessaire d´effectuer un basculement du rôle des serveursmanuellement ou avec un script compliquéMise à jours des données sur des serveurs Actifs/ActifsGère les pannes distribuées (quorum)Facilite grandement la mise en place d´un service MySQL hautement disponible !

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

64 / 124

Page 65: Jeudis du Libre - MySQL InnoDB Cluster

Mais comment ça marche ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

65 / 124

Page 66: Jeudis du Libre - MySQL InnoDB Cluster

Mais comment ça marche ?

par magie !

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

66 / 124

Page 67: Jeudis du Libre - MySQL InnoDB Cluster

Mais comment ça marche ?

par magie !

Non, au fait, la réplication des "transactions" se fait de manière synchrone, ensuite lacertification et l'application des changements se font de manière asynchrone...

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

67 / 124

Page 68: Jeudis du Libre - MySQL InnoDB Cluster

Mais comment ça marche ?

par magie !

Non, au fait, la réplication des "transactions" se fait de manière synchrone, ensuite lacertification et l'application des changements se font de manière asynchrone...

C'est peut-être un peu compliqué comme ça... et comme dessin vaut mieux qu'un longdiscours...

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

68 / 124

Page 69: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

69 / 124

Page 70: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

70 / 124

Page 71: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

71 / 124

Page 72: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

72 / 124

Page 73: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

73 / 124

Page 74: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

74 / 124

Page 75: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

75 / 124

Page 76: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

76 / 124

Page 77: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

77 / 124

Page 78: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

78 / 124

Page 79: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

79 / 124

Page 80: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Group Replication

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

80 / 124

Page 81: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa 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

Page 82: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

82 / 124

Page 83: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliqué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

Page 84: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

84 / 124

Page 85: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce 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

Page 86: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeud

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

86 / 124

Page 87: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeudLe résultat n´est pas communiqué au cluster en retour

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

87 / 124

Page 88: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeudLe résultat n´est pas communiqué au cluster en retour

Réussite: entre dans la queue pour être appliquée

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

88 / 124

Page 89: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeudLe résultat n´est pas communiqué au cluster en retour

Réussite: entre dans la queue pour être appliquéeÉchec: la transaction est rejetée

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

89 / 124

Page 90: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeudLe résultat n´est pas communiqué au cluster en retour

Réussite: entre dans la queue pour ê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

Page 91: Jeudis du Libre - MySQL InnoDB Cluster

CertificationLa certification est le processus qui a pour but de répondre à cette unique question:

est-ce-que cette écriture (transaction) peut être appliquée ?en se basant sur les transactions précédentes qui ne sont pas encore appliquéesce type de conflit provient toujours des autres membres du groupe

La certification se fait sur chaque membre du groupeDoit être déterministe sur chaque noeudLe résultat n´est pas communiqué au cluster en retour

Réussite: entre dans la queue pour être appliquéeÉchec: la transaction est rejetée

Sérialisée par l´ordre établi dans GCS/XCOM + GTIDLe coût varie en fonction du nombres d'index et d'enregistrements

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

91 / 124

Page 92: Jeudis du Libre - MySQL InnoDB Cluster

GTIDLes GTIDs utilisés sont identiques aux GTID utilisés en réplication asynchrone.

mysql> SELECT * FROM performance_schema.replication_connection_status\G ************************** 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

Page 93: Jeudis du Libre - MySQL InnoDB Cluster

Mais c'est le GTID du cluster qui est mélangé aux éventuels autres

mysql> show master status\G ************************** 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

Page 94: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes 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

Page 95: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes données doivent impérativement être sauvergardées dans des tables en InnoDBChaques table doit avoir une clé primaire

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

95 / 124

Page 96: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes données doivent impérativement être sauvergardées dans des tables en InnoDBChaques table doit avoir une clé primaireNe fonctionne qu´en IPV4

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

96 / 124

Page 97: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes données doivent impérativement être sauvergardées dans des tables en InnoDBChaques table doit avoir une clé primaireNe fonctionne qu´en IPV4Un bon réseau avec peu de latence est important

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

97 / 124

Page 98: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes données doivent impérativement être sauvergardées dans des tables en InnoDBChaques table doit avoir une clé primaireNe fonctionne qu´en IPV4Un bon réseau avec peu de latence est importantUn maximum de 9 membres par groupe

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

98 / 124

Page 99: Jeudis du Libre - MySQL InnoDB Cluster

ExigencesLes données doivent impérativement être sauvergardées dans des tables en InnoDBChaques table doit avoir une clé primaireNe fonctionne qu´en IPV4Un bon réseau avec peu de latence est importantUn maximum de 9 membres par groupelog-bin doit être activé et seul le format ROW est supporté

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

99 / 124

Page 100: Jeudis du Libre - MySQL InnoDB Cluster

Exigences (2)les GTIDs doivent être activés

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

100 / 124

Page 101: Jeudis du Libre - MySQL InnoDB Cluster

Exigences (2)les GTIDs doivent être activésLes meta données de réplication doivent être sauvergardées dans des tablessystèmes

--master-info-repository=TABLE --relay-log-info-repository=TABLE

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

101 / 124

Page 102: Jeudis du Libre - MySQL InnoDB Cluster

Exigences (2)les GTIDs doivent être activésLes meta données de réplication doivent être sauvergardées dans des tablessystè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

Page 103: Jeudis du Libre - MySQL InnoDB Cluster

Exigences (2)les GTIDs doivent être activésLes meta données de réplication doivent être sauvergardées dans des tablessystè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

Page 104: Jeudis du Libre - MySQL InnoDB Cluster

LimitesLe checksum des évenements répliqués n´est pas supporté

--binlog-checksum=NONE

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

104 / 124

Page 105: Jeudis du Libre - MySQL InnoDB Cluster

LimitesLe checksum des évenements répliqués n´est pas supporté

--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

Page 106: Jeudis du Libre - MySQL InnoDB Cluster

LimitesLe checksum des évenements répliqués n´est pas supporté

--binlog-checksum=NONE

Les "Savepoints" ne sont pas supportés avant 5.7.19 et 8.0.1On ne peut utiliser SERIALIZABLE comme niveau d'isolation des transactions

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

106 / 124

Page 107: Jeudis du Libre - MySQL InnoDB Cluster

LimitesLe checksum des évenements répliqués n´est pas supporté

--binlog-checksum=NONE

Les "Savepoints" ne sont pas supportés avant 5.7.19 et 8.0.1On ne peut utiliser SERIALIZABLE comme niveau d'isolation des transactionshttp://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

Page 108: Jeudis du Libre - MySQL InnoDB Cluster

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

108 / 124

Page 109: Jeudis du Libre - MySQL InnoDB Cluster

MySQL RouterMySQL Router 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) en acheminantefficacement le trafic vers les serveurs MySQL appropriés.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

109 / 124

Page 110: Jeudis du Libre - MySQL InnoDB Cluster

MySQL RouterMySQL Router 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) en acheminantefficacement le trafic vers les serveurs MySQL appropriés.

MySQL Router ne nécessite aucune configuration, il se configure automatiquement grâceaux meta-données du MySQL InnoDB Cluster.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

110 / 124

Page 111: Jeudis du Libre - MySQL InnoDB Cluster

MySQL RouterMySQL Router 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) en acheminantefficacement le trafic vers les serveurs MySQL appropriés.

MySQL Router ne nécessite aucune configuration, il se configure automatiquement grâceaux meta-données du MySQL InnoDB Cluster.

Le dévelopement de MySQL Router est focalisé sur les étapes suivantes du cluster: lesharding.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

111 / 124

Page 112: Jeudis du Libre - MySQL InnoDB Cluster

ProxySQLPour des besoins plus avancés, nous collaborons également avec ProxySQL pour avoir lesupport natif de Group Replication & de MySQL InnoDB Cluster.

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

112 / 124

Page 113: Jeudis du Libre - MySQL InnoDB Cluster

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

113 / 124

Page 114: Jeudis du Libre - MySQL InnoDB Cluster

MySQL ShellMySQL Shell est in interface interactive en Javascript, Python, ou SQL qui prend en chargele développment et l´administration du serveur MySQL. MySQL Shell peut être utilisé poureffectuer 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

Page 115: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell fournit:

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

115 / 124

Page 116: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell fournit:

la possibilité d´effectuer des opérations interactives et de "batch"

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

116 / 124

Page 117: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell 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

Page 118: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell fournit:

la possibilité d´effectuer des opérations interactives et de "batch"l´utilisation d'API CRUD Document et relationnellesdes résultats sous le format traditionnels (tables), JSON, Tab Separated

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

118 / 124

Page 119: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell fournit:

la possibilité d´effectuer des opérations interactives et de "batch"l´utilisation d'API CRUD Document et relationnellesdes résultats sous le format traditionnels (tables), JSON, Tab Separatedun accès aux protocoles MySQL Standard and X

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

119 / 124

Page 120: Jeudis du Libre - MySQL InnoDB Cluster

MySQL Shell (2)MySQL Shell fournit:

la possibilité d´effectuer des opérations interactives et de "batch"l´utilisation d'API CRUD Document et relationnellesdes résultats sous le format traditionnels (tables), JSON, Tab Separatedun accès aux protocoles MySQL Standard and Xet plus encore...

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

120 / 124

Page 121: Jeudis du Libre - MySQL InnoDB Cluster

Commandes pour déployer un cluster enutilisant l'adminAPI du MySQL Shell:mysql-js> var i1 = '[email protected]:3306';mysql-js> var i2 = '[email protected]:3306';mysql-js> var i3 = '[email protected]: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

Page 122: Jeudis du Libre - MySQL InnoDB Cluster

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: MegaMotDePasseinnodbcluster::mysql_bind_interface: eth1innodbcluster::cluster_name: JeudisDuLibreinnodbcluster::grant::user: fredinnodbcluster::grant::password: fredinnodbcluster::seed: instance01.jdl

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

122 / 124

Page 123: Jeudis du Libre - MySQL InnoDB Cluster

Ressourceshttp://lefred.be/content/mysql-innodb-cluster-mysql-shell-starter-guide/

http://lefred.be/content/mysql-innodb-cluster-automated-installation-with-puppet/

http://lefred.be/content/category/mysql/group-replication/

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

123 / 124

Page 124: Jeudis du Libre - MySQL InnoDB Cluster

Merci

Des Questions ?

Copyright @ 2017 Oracle and/or its affiliates. All rights reserved.

124 / 124