SlideShare une entreprise Scribd logo
1  sur  74
Télécharger pour lire hors ligne
Frédéric Descamps
Ami des Dauphins
MySQL
Février 2022
Le Cycle d'Une Instance MySQL
Copyright @ 2022 Oracle and/or its affiliates.
Qui suis-je ?
about.me/lefred
2
 
Frédéric Descamps
Copyright @ 2022 Oracle and/or its affiliates.
@lefred
Évangesliste MySQL
Utilise MySQL depuis la version 3.21
passionné devops
habitant en
h ps://lefred.be
3
Copyright @ 2022 Oracle and/or its affiliates.
les bonnes pratiques en 2022
paramètres de con guration
4
je présume lors de ce e présentation que votre système
utilise MySQL 8.0.28 ou plus récent
n'utilise que InnoDB
a les "binary logs" activés
le format des "binary logs" est ROW
utilise GTID
Copyright @ 2022 Oracle and/or its affiliates.
5
Copyright @ 2022 Oracle and/or its affiliates.
Évolution vers la Haute Disponibilité
MySQL 8.0
6
Copyright @ 2022 Oracle and/or its affiliates.
7
Voici où tout commence...
et on n'oublie pas:
on utilise QUE InnoDB
on garde les paramètres de durabilité
par défaut
Une simple instance MySQL
 
Copyright @ 2022 Oracle and/or its affiliates.
8
Une simple instance MySQL
Copyright @ 2022 Oracle and/or its affiliates.
/
/
RPO ?
?
RTO
9
Palier suivant (level up)
La base de données gagne en importance, la perdre totalement pourrait être un problème...
Copyright @ 2022 Oracle and/or its affiliates.
10
Palier suivant (level up)
La base de données gagne en importance, la perdre totalement pourrait être un problème...
RTO → heures
Copyright @ 2022 Oracle and/or its affiliates.
10
Palier suivant (level up)
La base de données gagne en importance, la perdre totalement pourrait être un problème...
RTO → heures
 
RPO → 1 jour
Copyright @ 2022 Oracle and/or its affiliates.
10
Palier suivant (level up)
La base de données gagne en importance, la perdre totalement pourrait être un problème...
RTO → heures
 
RPO → 1 jour
RTO: Recovery Time Objective (combien de temps pour récupérer les données?)
RPO: Recovery Point Objective (combien de données peut-on perdre?)
Copyright @ 2022 Oracle and/or its affiliates.
10
Sauvegarde Physique
Sauvegarde Logique
Pour les sauvegardes logiques, c'est MySQL
Shell Dump & Load Utility qu'il faut utiliser!
Sauvegardes
Copyright @ 2022 Oracle and/or its affiliates.
11
Une simple instance MySQL avec sauvegarde journalière
Copyright @ 2022 Oracle and/or its affiliates.
heures
1 jour
RPO ?
?
RTO
12
Palier suivant (level up)
RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques
minutes maximum !
Copyright @ 2022 Oracle and/or its affiliates.
13
Palier suivant (level up)
RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques
minutes maximum !
RTO → heures
Copyright @ 2022 Oracle and/or its affiliates.
13
Palier suivant (level up)
RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques
minutes maximum !
RTO → heures
 
RPO → minutes
Copyright @ 2022 Oracle and/or its affiliates.
13
Ceci sont les valeurs par défaut de MySQL
8.0:
Des Binlogs Fiables et Durables
On active les logs binaires (binary logs) qui nous perme ent de rejouer les écritures depuis
la dernière sauvegarde(*)
Copyright @ 2022 Oracle and/or its affiliates.
14
Une simple instance MySQL avec sauvegarde journalière
et les binlogs activés
Copyright @ 2022 Oracle and/or its affiliates.
heures
minutes
RPO ?
?
RTO
15
Récupération Pontcuelle - Point-in-Time Recovery (PITR)
Il s'agit de la technique par laquelle un administrateur peut restaurer ou récupérer un
ensemble de données à un certain point dans le passé.
Avec MySQL, la récupération ponctuelle consiste à restaurer un dump des données puis à
rejouer les binlogs depuis et jusqu'à un point précis.
Ce e technique est utilisée pour:
résoudre un problème
pratiquer une migration en temps réel (live migration)
Copyright @ 2022 Oracle and/or its affiliates.
16
Point-in-Time Recovery : comment ça marche ?
day 1
BACKUPS
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
Copyright @ 2022 Oracle and/or its affiliates.
17
Point-in-Time Recovery : comment ça marche ?
day 1
BACKUPS
Binlogs
day 2
nous voulons restaurer
jusqu'à ce point
day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
Copyright @ 2022 Oracle and/or its affiliates.
18
Point-in-Time Recovery : comment ça marche ?
day 1
BACKUPS
Binlogs
day 2
nous voulons restaurer
jusqu'à ce point
day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
1. nous restaurons le dump (jour3)
Copyright @ 2022 Oracle and/or its affiliates.
19
Point-in-Time Recovery : comment ça marche ?
day 1
BACKUPS
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
2
.
n
o
u
s
r
e
j
o
u
o
ns
le
binlog (.008)
1. nous restaurons le dump (jour3)
Copyright @ 2022 Oracle and/or its affiliates.
20
Point-in-Time Recovery : conceptes importants
Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary
logs sont purgés du serveur MySQL:
Copyright @ 2022 Oracle and/or its affiliates.
21
Point-in-Time Recovery : conceptes importants
Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary
logs sont purgés du serveur MySQL:
Copyright @ 2022 Oracle and/or its affiliates.
day 1
BACKUPS
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
21
Point-in-Time Recovery : conceptes importants
Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary
logs sont purgés du serveur MySQL:
Copyright @ 2022 Oracle and/or its affiliates.
day 1
BACKUPS
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
day 1
BACKUPS
points possibles
de récupération
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005 .006 .007 .008 .009 .010
}
21
Palier suivant (level up)
Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre
moins d'une seconde en cas de problème !
Copyright @ 2022 Oracle and/or its affiliates.
22
Palier suivant (level up)
Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre
moins d'une seconde en cas de problème !
RTO → heures
Copyright @ 2022 Oracle and/or its affiliates.
22
Palier suivant (level up)
Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre
moins d'une seconde en cas de problème !
RTO → heures
 
RPO → moins d'une seconde
Copyright @ 2022 Oracle and/or its affiliates.
22
Activer les GTIDs
Sauvegarder en temps réel les binlogs
sur un autre système (OCI Object
Storage, S3, ...)
VCN
10.0.0.0/16
Public Subnet
10.0.0.0/24
Private Subnet
10.0.1.0/24
MySQL Shell
MySQL
Database Service
Internet
Gateway
Oracle Cloud Infrastructure
Availability Domain 1
Fault Domain 1
mysql-dump-bucket
mysql-binlogs-bucket
Object Storage
dump instance
streambinlogs
Meilleur Point-in-Time Recovery (PITR)
Copyright @ 2022 Oracle and/or its affiliates.
23
avec redémarrage
Activation des GTIDs
Copyright @ 2022 Oracle and/or its affiliates.
24
avec redémarrage sans redémarrage
Activation des GTIDs
Copyright @ 2022 Oracle and/or its affiliates.
24
Sauvegardes des Binlogs
 
Copyright @ 2022 Oracle and/or its affiliates.
25
Sauvegardes des Binlogs
 
Sur un autre système:
mysqlbinlog --raw --read-from-remote-server --stop-never --host 10.0.0.2 
--port 3306 -u getbinlog -ppassword 
--ssl-mode='REQUIRED' binlog.xxxxxx
Copyright @ 2022 Oracle and/or its affiliates.
25
Point-in-Time Recovery : conceptes importants (2)
Comme vous avez pu le constater, nous ne pouvons récupérer qu'à l'heure exacte des
sauvegardes et nous ne pouvons faire une récupération ponctuelle qu'à partir de la dernière
!
C'est pourquoi il est recommandé de délocaliser les binlogs (sur un autre serveur, un NAS, le
cloud, ...).
Cela perme ra d'e ectuer une restauration ponctuelle à n'importe quel moment dans le
temps :
Copyright @ 2022 Oracle and/or its affiliates.
26
Point-in-Time Recovery : conceptes importants (2)
Comme vous avez pu le constater, nous ne pouvons récupérer qu'à l'heure exacte des
sauvegardes et nous ne pouvons faire une récupération ponctuelle qu'à partir de la dernière
!
C'est pourquoi il est recommandé de délocaliser les binlogs (sur un autre serveur, un NAS, le
cloud, ...).
Cela perme ra d'e ectuer une restauration ponctuelle à n'importe quel moment dans le
temps :
Copyright @ 2022 Oracle and/or its affiliates.
}
day 1
BACKUPS
Binlogs
day 2 day 3 day 4
.001
.002
.003 .004 .005
.001
.002
.003
.004
.005
.006 .007 .008 .009 .010
.006
.007
.008
.009
.010
b
i
n
l
o
g
s
t
r
e
a
m
i
n
g
points possibles
de récupération
26
Une simple instance MySQL avec sauvegarde journalière
et archivage externe des binlogs
Copyright @ 2022 Oracle and/or its affiliates.
heures
< 1 seconde
RPO ?
?
RTO
27
Palier suivant (level up)
Mon service est maintenant très important, je voudrais que ma base de données puisse être
de nouveau disponible en quelques minutes en cas d'incident.
Copyright @ 2022 Oracle and/or its affiliates.
28
Palier suivant (level up)
Mon service est maintenant très important, je voudrais que ma base de données puisse être
de nouveau disponible en quelques minutes en cas d'incident.
RTO → minutes
Copyright @ 2022 Oracle and/or its affiliates.
28
Palier suivant (level up)
Mon service est maintenant très important, je voudrais que ma base de données puisse être
de nouveau disponible en quelques minutes en cas d'incident.
RTO → minutes
 
RPO → moins d'une seconde
Copyright @ 2022 Oracle and/or its affiliates.
28
Fondé à partir de la réplication
asynchrone
Mais plus facile... et plus facile, c'est
mieux !
Transfert initial des données
("provisioning") inclus (clone)
2 noeuds ou plus
Basculement manuel (failover)
Routage transparent/automatique des
requêtes avec MySQL Router
MySQL InnoDB ReplicaSet
Copyright @ 2022 Oracle and/or its affiliates.
29
MySQL InnoDB ReplicaSet
Copyright @ 2022 Oracle and/or its affiliates.
30
MySQL InnoDB ReplicaSet
Connecté au serveur actuel:
JS > dba.con gureReplicaSetInstance()
JS > rs=dba.createReplicaSet('myreplicaset')
Sur le nouveau serveur où seul MySQL est installé (serveur et shell):
JS > dba.con gureReplicaSetInstance()
Et de nouveau sur l'instance principale:
JS > rs.addInstance('mysql-2')
Copyright @ 2022 Oracle and/or its affiliates.
31
MySQL InnoDB ReplicaSet - examples
Copyright @ 2022 Oracle and/or its affiliates.
32
MySQL InnoDB ReplicaSet - examples
Copyright @ 2022 Oracle and/or its affiliates.
33
MySQL InnoDB ReplicaSet - examples
Copyright @ 2022 Oracle and/or its affiliates.
34
MySQL Router
MySQL Router est très simple a con gurer, il su t d'utiliser la commande bootstrap!
Copyright @ 2022 Oracle and/or its affiliates.
35
MySQL Router
Et comme d'habitude visible avec MySQL Shell
Copyright @ 2022 Oracle and/or its affiliates.
36
MySQL InnoDB ReplicaSet - Basculement Manuel
Copyright @ 2022 Oracle and/or its affiliates.
MySQL Shell est connecté à MySQL InnoDB ReplicaSet via MySQL Router.
37
MySQL InnoDB ReplicaSet - Basculement Manuel
Copyright @ 2022 Oracle and/or its affiliates.
38
MySQL RelicaSet
Copyright @ 2022 Oracle and/or its affiliates.
minutes
< 1 seconde
RPO ?
?
RTO
rto >
39
Palier suivant (level up)
Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours
disponible (basculment automatique) et ne jamais perdre de données !
Copyright @ 2022 Oracle and/or its affiliates.
40
Palier suivant (level up)
Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours
disponible (basculment automatique) et ne jamais perdre de données !
RTO → secondes
Copyright @ 2022 Oracle and/or its affiliates.
40
Palier suivant (level up)
Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours
disponible (basculment automatique) et ne jamais perdre de données !
RTO → secondes
 
RPO → 0
Copyright @ 2022 Oracle and/or its affiliates.
40
Fondé à partir de Group Replication
Mais plus simple... et c'est toujours
mieux
Transfert des données initiales inclus
(clone)
3 noeuds ou plus (un nombre impair est
recommandé)
Basculement Automatique
Utilise MySQL Router
Niveaux de consistances des données
con gurable
MySQL InnoDB Cluster
Copyright @ 2022 Oracle and/or its affiliates.
41
MySQL InnoDB Cluster
Copyright @ 2022 Oracle and/or its affiliates.
42
Sur le serveur "Primary" de notre
ReplicaSet:
JS > dba.dropMetadataSchema()
JS > cluster=dba.createCluster('mycluster')
Et sur l'instance "Secondary":
SQL > STOP REPLICA;
SQL > RESET ALL REPLICA;
Et à nouveau sur le nouveau "Primary" du
Cluster:
JS > cluster.addInstance('mysql-2')
MySQL InnoDB Cluster
On peut maintenant ajouter un troisième
membre pour béné cier du basculement
automatique:
Copyright @ 2022 Oracle and/or its affiliates.
43
Sur le serveur "Primary" de notre
ReplicaSet:
JS > dba.dropMetadataSchema()
JS > cluster=dba.createCluster('mycluster')
Et sur l'instance "Secondary":
SQL > STOP REPLICA;
SQL > RESET ALL REPLICA;
Et à nouveau sur le nouveau "Primary" du
Cluster:
JS > cluster.addInstance('mysql-2')
JS > dba.con gureInstance()
À partir d'une instance du cluster:
JS > cluster=dba.getCluster()
JS > cluster.addInstance('mysql-3')
En n, on peut recon gurer le routeur:
# mysqlrouter --bootstrap 
clusteradmin@single-mysql:3306 
--conf-use-gr-noti cations 
--user mysqlrouter --force
# systemctl restart mysqlrouter
MySQL InnoDB Cluster
On peut maintenant ajouter un troisième
membre pour béné cier du basculement
automatique:
Copyright @ 2022 Oracle and/or its affiliates.
43
MySQL InnoDB Cluster
Copyright @ 2022 Oracle and/or its affiliates.
44
MySQL InnoDB Cluster
Copyright @ 2022 Oracle and/or its affiliates.
secondes
0
RPO ?
?
RTO
rto >
45
Palier suivant (level up)
Et si quelque chose arrivait à notre centre de données ?
Copyright @ 2022 Oracle and/or its affiliates.
46
Palier suivant (level up)
Et si quelque chose arrivait à notre centre de données ?
Comment déployer un plan de reprise en cas de catastrophe (Disaster Recovery) ?
Copyright @ 2022 Oracle and/or its affiliates.
46
Palier suivant (level up)
Et si quelque chose arrivait à notre centre de données ?
Comment déployer un plan de reprise en cas de catastrophe (Disaster Recovery) ?
Copyright @ 2022 Oracle and/or its affiliates.
MySQL InnoDB ClusterSet !!
46
L'évolution ultime !
disponible depuis MySQL 8.0.27
support du "fencing" depuis 8.0.28
MySQL InnoDB ClusterSet
Copyright @ 2022 Oracle and/or its affiliates.
47
Fruit de plusieurs transformations au cours des sorties précédentes:
8.0.22: Automatic Connection Failover (Async Replication Channels)
8.0.23: Automatic Connection Failover (Async Replication Channels using Group
Replication)
8.0.24: transformation de skip-replica-start en variable globale, persistante et en
lecture-seule
8.0.26: Ajout d'actions pour les membres de Group Replication (ex: super_read_only
con gurable)
8.0.26: Ajout d'un UUID spéci que pour les évènements liés aux changements
structurels du Groupe (View_change_log_event)
8.0.27: la con guration de l'Asynchronous Replication Channel suit automatiquement le
Primary.
Copyright @ 2022 Oracle and/or its affiliates.
48
MySQL InnoDB ClusterSet
Copyright @ 2022 Oracle and/or its affiliates.
49
MySQL InnoDB ClusterSet
Copyright @ 2022 Oracle and/or its affiliates.
On peut également déployer des architectures plus complexes !
49
MySQL InnoDB ClusterSet
Copyright @ 2022 Oracle and/or its affiliates.
On peut également déployer des architectures plus complexes !
49
MySQL InnoDB ClusterSet
Copyright @ 2022 Oracle and/or its affiliates.
secondes
0
RPO ?
?
RTO
possible rpo>0
rto >
50
Extra
Depuis MySQL 8.0.19, les connecteurs supportent également dns-srv qui avec un
"discovery service" tel que Consul, peut remplacer MySQL Router quand il est impossible
de l'installer sur les serveurs d'applications:
Copyright @ 2022 Oracle and/or its affiliates.
51
Extra
Depuis MySQL 8.0.19, les connecteurs supportent également dns-srv qui avec un
"discovery service" tel que Consul, peut remplacer MySQL Router quand il est impossible
de l'installer sur les serveurs d'applications:
Copyright @ 2022 Oracle and/or its affiliates.
51
Des Questions
?
Copyright @ 2022 Oracle and/or its affiliates.
52

Contenu connexe

Tendances

Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesQuang Tu LE
 
Administration oracle7
Administration oracle7Administration oracle7
Administration oracle7Lucian Carabet
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Concepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationConcepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationSoukaina Boujadi
 
Oracle Database Vault
Oracle Database VaultOracle Database Vault
Oracle Database VaultKhalid ALLILI
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1infcom
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesEDB
 
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Olivier DASINI
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008MRamo2s
 
Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g noble Bajoli
 

Tendances (12)

Game of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de donnéesGame of upgrades to liferay dxp - ep1: Migration de données
Game of upgrades to liferay dxp - ep1: Migration de données
 
Oracle Cluster Rac
Oracle Cluster RacOracle Cluster Rac
Oracle Cluster Rac
 
Administration oracle7
Administration oracle7Administration oracle7
Administration oracle7
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Concepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupérationConcepts de sauvegarde et de récupération
Concepts de sauvegarde et de récupération
 
Test
TestTest
Test
 
Oracle Database Vault
Oracle Database VaultOracle Database Vault
Oracle Database Vault
 
Dba oracle-v1
Dba oracle-v1Dba oracle-v1
Dba oracle-v1
 
Comment sauvegarder correctement vos données
Comment sauvegarder correctement vos donnéesComment sauvegarder correctement vos données
Comment sauvegarder correctement vos données
 
Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1Les nouveautés de MySQL 5.1
Les nouveautés de MySQL 5.1
 
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008Jp perez correction quizz oracle mairie de paris acma 2007 2008
Jp perez correction quizz oracle mairie de paris acma 2007 2008
 
Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g Administration des base de donnees sous oracle 10g
Administration des base de donnees sous oracle 10g
 

Similaire à Confoo 2022 - le cycle d'une instance MySQL

Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysChristophe Villeneuve
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureMicrosoft
 
Récupération d’un Active Directory: comment repartir en confiance après une c...
Récupération d’un Active Directory: comment repartir en confiance après une c...Récupération d’un Active Directory: comment repartir en confiance après une c...
Récupération d’un Active Directory: comment repartir en confiance après une c...Identity Days
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Microsoft
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Oracle Cloud Café - Cloud backup et Disaster recovery
Oracle Cloud Café - Cloud backup et Disaster recoveryOracle Cloud Café - Cloud backup et Disaster recovery
Oracle Cloud Café - Cloud backup et Disaster recoverySorathaya Sirimanotham
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
REX Kubernetes - Iguane Solutions
REX Kubernetes - Iguane SolutionsREX Kubernetes - Iguane Solutions
REX Kubernetes - Iguane SolutionsSally Laouacheria
 
Presentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPresentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPriscilleGANKIA
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà Microsoft Technet France
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà Microsoft Décideurs IT
 
[Café techno] Symantec NetBackup 7.6 - 12/2013
[Café techno] Symantec NetBackup 7.6 - 12/2013[Café techno] Symantec NetBackup 7.6 - 12/2013
[Café techno] Symantec NetBackup 7.6 - 12/2013Groupe D.FI
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...Frederic Descamps
 
Solutions de sauvegarde et PRA avec Microsoft Azure
Solutions de sauvegarde et PRA avec Microsoft Azure Solutions de sauvegarde et PRA avec Microsoft Azure
Solutions de sauvegarde et PRA avec Microsoft Azure Microsoft Technet France
 

Similaire à Confoo 2022 - le cycle d'une instance MySQL (20)

Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans AzureDéployez votre site PHP / MariaDB, simplement et rapidement dans Azure
Déployez votre site PHP / MariaDB, simplement et rapidement dans Azure
 
Récupération d’un Active Directory: comment repartir en confiance après une c...
Récupération d’un Active Directory: comment repartir en confiance après une c...Récupération d’un Active Directory: comment repartir en confiance après une c...
Récupération d’un Active Directory: comment repartir en confiance après une c...
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Fusion io
Fusion ioFusion io
Fusion io
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Oracle Cloud Café - Cloud backup et Disaster recovery
Oracle Cloud Café - Cloud backup et Disaster recoveryOracle Cloud Café - Cloud backup et Disaster recovery
Oracle Cloud Café - Cloud backup et Disaster recovery
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
REX Kubernetes - Iguane Solutions
REX Kubernetes - Iguane SolutionsREX Kubernetes - Iguane Solutions
REX Kubernetes - Iguane Solutions
 
Presentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptxPresentation du SGBD Oracle DATABASE.pptx
Presentation du SGBD Oracle DATABASE.pptx
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
 
En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà En route vers Active Directory 2012 R2 et au-delà
En route vers Active Directory 2012 R2 et au-delà
 
[Café techno] Symantec NetBackup 7.6 - 12/2013
[Café techno] Symantec NetBackup 7.6 - 12/2013[Café techno] Symantec NetBackup 7.6 - 12/2013
[Café techno] Symantec NetBackup 7.6 - 12/2013
 
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
MySQL Innovation & Cloud Day - Document Store avec MySQL HeatWave Database Se...
 
Solutions de sauvegarde et PRA avec Microsoft Azure
Solutions de sauvegarde et PRA avec Microsoft Azure Solutions de sauvegarde et PRA avec Microsoft Azure
Solutions de sauvegarde et PRA avec Microsoft Azure
 

Plus de Frederic Descamps

MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionFrederic Descamps
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsFrederic Descamps
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfFrederic Descamps
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8Frederic Descamps
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022Frederic Descamps
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodeFrederic Descamps
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesFrederic Descamps
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemFrederic Descamps
 
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
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database ServiceFrederic Descamps
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Frederic Descamps
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021Frederic Descamps
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDSFrederic Descamps
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...Frederic Descamps
 
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native -  Why to use MySQL 8.0 and how to use it on oci with MDSCloud native -  Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDSFrederic Descamps
 

Plus de Frederic Descamps (20)

MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code ExtensionMySQL Day Roma - MySQL Shell and Visual Studio Code Extension
MySQL Day Roma - MySQL Shell and Visual Studio Code Extension
 
RivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and HistogramsRivieraJUG - MySQL Indexes and Histograms
RivieraJUG - MySQL Indexes and Histograms
 
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdfRivieraJUG - MySQL 8.0 - What's new for developers.pdf
RivieraJUG - MySQL 8.0 - What's new for developers.pdf
 
MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8MySQL User Group NL - MySQL 8
MySQL User Group NL - MySQL 8
 
State of the Dolphin - May 2022
State of the Dolphin - May 2022State of the Dolphin - May 2022
State of the Dolphin - May 2022
 
Percona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio CodePercona Live 2022 - MySQL Shell for Visual Studio Code
Percona Live 2022 - MySQL Shell for Visual Studio Code
 
Percona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database SystemPercona Live 2022 - The Evolution of a MySQL Database System
Percona Live 2022 - The Evolution of a MySQL Database System
 
Percona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL ArchitecturesPercona Live 2022 - MySQL Architectures
Percona Live 2022 - MySQL Architectures
 
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database SystemLinuxFest Northwest 2022 - The Evolution of a MySQL Database System
LinuxFest Northwest 2022 - The Evolution of a MySQL Database System
 
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
 
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
Pi Day 2022 -  from IoT to MySQL HeatWave Database ServicePi Day 2022 -  from IoT to MySQL HeatWave Database Service
Pi Day 2022 - from IoT to MySQL HeatWave Database Service
 
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...FOSDEM 2022 MySQL Devroom:  MySQL 8.0 - Logical Backups, Snapshots and Point-...
FOSDEM 2022 MySQL Devroom: MySQL 8.0 - Logical Backups, Snapshots and Point-...
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0Les nouveautés de MySQL 8.0
Les nouveautés de MySQL 8.0
 
State of The Dolphin - May 2021
State of The Dolphin - May 2021State of The Dolphin - May 2021
State of The Dolphin - May 2021
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
 
Deploying Magento on OCI with MDS
Deploying Magento on OCI with MDSDeploying Magento on OCI with MDS
Deploying Magento on OCI with MDS
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
 
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
From single MySQL instance to High Availability: the journey to MySQL InnoDB ...
 
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native -  Why to use MySQL 8.0 and how to use it on oci with MDSCloud native -  Why to use MySQL 8.0 and how to use it on oci with MDS
Cloud native - Why to use MySQL 8.0 and how to use it on oci with MDS
 

Confoo 2022 - le cycle d'une instance MySQL

  • 1. Frédéric Descamps Ami des Dauphins MySQL Février 2022 Le Cycle d'Une Instance MySQL
  • 2. Copyright @ 2022 Oracle and/or its affiliates. Qui suis-je ? about.me/lefred 2
  • 3.   Frédéric Descamps Copyright @ 2022 Oracle and/or its affiliates. @lefred Évangesliste MySQL Utilise MySQL depuis la version 3.21 passionné devops habitant en h ps://lefred.be 3
  • 4. Copyright @ 2022 Oracle and/or its affiliates. les bonnes pratiques en 2022 paramètres de con guration 4
  • 5. je présume lors de ce e présentation que votre système utilise MySQL 8.0.28 ou plus récent n'utilise que InnoDB a les "binary logs" activés le format des "binary logs" est ROW utilise GTID Copyright @ 2022 Oracle and/or its affiliates. 5
  • 6. Copyright @ 2022 Oracle and/or its affiliates. Évolution vers la Haute Disponibilité MySQL 8.0 6
  • 7. Copyright @ 2022 Oracle and/or its affiliates. 7
  • 8. Voici où tout commence... et on n'oublie pas: on utilise QUE InnoDB on garde les paramètres de durabilité par défaut Une simple instance MySQL   Copyright @ 2022 Oracle and/or its affiliates. 8
  • 9. Une simple instance MySQL Copyright @ 2022 Oracle and/or its affiliates. / / RPO ? ? RTO 9
  • 10. Palier suivant (level up) La base de données gagne en importance, la perdre totalement pourrait être un problème... Copyright @ 2022 Oracle and/or its affiliates. 10
  • 11. Palier suivant (level up) La base de données gagne en importance, la perdre totalement pourrait être un problème... RTO → heures Copyright @ 2022 Oracle and/or its affiliates. 10
  • 12. Palier suivant (level up) La base de données gagne en importance, la perdre totalement pourrait être un problème... RTO → heures   RPO → 1 jour Copyright @ 2022 Oracle and/or its affiliates. 10
  • 13. Palier suivant (level up) La base de données gagne en importance, la perdre totalement pourrait être un problème... RTO → heures   RPO → 1 jour RTO: Recovery Time Objective (combien de temps pour récupérer les données?) RPO: Recovery Point Objective (combien de données peut-on perdre?) Copyright @ 2022 Oracle and/or its affiliates. 10
  • 14. Sauvegarde Physique Sauvegarde Logique Pour les sauvegardes logiques, c'est MySQL Shell Dump & Load Utility qu'il faut utiliser! Sauvegardes Copyright @ 2022 Oracle and/or its affiliates. 11
  • 15. Une simple instance MySQL avec sauvegarde journalière Copyright @ 2022 Oracle and/or its affiliates. heures 1 jour RPO ? ? RTO 12
  • 16. Palier suivant (level up) RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques minutes maximum ! Copyright @ 2022 Oracle and/or its affiliates. 13
  • 17. Palier suivant (level up) RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques minutes maximum ! RTO → heures Copyright @ 2022 Oracle and/or its affiliates. 13
  • 18. Palier suivant (level up) RPO d'un jour ? Vraiment ?? Il faut absolument réduire la perte des donnés à quelques minutes maximum ! RTO → heures   RPO → minutes Copyright @ 2022 Oracle and/or its affiliates. 13
  • 19. Ceci sont les valeurs par défaut de MySQL 8.0: Des Binlogs Fiables et Durables On active les logs binaires (binary logs) qui nous perme ent de rejouer les écritures depuis la dernière sauvegarde(*) Copyright @ 2022 Oracle and/or its affiliates. 14
  • 20. Une simple instance MySQL avec sauvegarde journalière et les binlogs activés Copyright @ 2022 Oracle and/or its affiliates. heures minutes RPO ? ? RTO 15
  • 21. Récupération Pontcuelle - Point-in-Time Recovery (PITR) Il s'agit de la technique par laquelle un administrateur peut restaurer ou récupérer un ensemble de données à un certain point dans le passé. Avec MySQL, la récupération ponctuelle consiste à restaurer un dump des données puis à rejouer les binlogs depuis et jusqu'à un point précis. Ce e technique est utilisée pour: résoudre un problème pratiquer une migration en temps réel (live migration) Copyright @ 2022 Oracle and/or its affiliates. 16
  • 22. Point-in-Time Recovery : comment ça marche ? day 1 BACKUPS Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 Copyright @ 2022 Oracle and/or its affiliates. 17
  • 23. Point-in-Time Recovery : comment ça marche ? day 1 BACKUPS Binlogs day 2 nous voulons restaurer jusqu'à ce point day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 Copyright @ 2022 Oracle and/or its affiliates. 18
  • 24. Point-in-Time Recovery : comment ça marche ? day 1 BACKUPS Binlogs day 2 nous voulons restaurer jusqu'à ce point day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 1. nous restaurons le dump (jour3) Copyright @ 2022 Oracle and/or its affiliates. 19
  • 25. Point-in-Time Recovery : comment ça marche ? day 1 BACKUPS Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 2 . n o u s r e j o u o ns le binlog (.008) 1. nous restaurons le dump (jour3) Copyright @ 2022 Oracle and/or its affiliates. 20
  • 26. Point-in-Time Recovery : conceptes importants Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary logs sont purgés du serveur MySQL: Copyright @ 2022 Oracle and/or its affiliates. 21
  • 27. Point-in-Time Recovery : conceptes importants Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary logs sont purgés du serveur MySQL: Copyright @ 2022 Oracle and/or its affiliates. day 1 BACKUPS Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 21
  • 28. Point-in-Time Recovery : conceptes importants Généralement, après qu'une sauvegarde a été e ectuée et véri ée, les chiers des binary logs sont purgés du serveur MySQL: Copyright @ 2022 Oracle and/or its affiliates. day 1 BACKUPS Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 day 1 BACKUPS points possibles de récupération Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 } 21
  • 29. Palier suivant (level up) Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre moins d'une seconde en cas de problème ! Copyright @ 2022 Oracle and/or its affiliates. 22
  • 30. Palier suivant (level up) Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre moins d'une seconde en cas de problème ! RTO → heures Copyright @ 2022 Oracle and/or its affiliates. 22
  • 31. Palier suivant (level up) Mes données sont critiques et j'ai une charge (workload) importante... je voudrais perdre moins d'une seconde en cas de problème ! RTO → heures   RPO → moins d'une seconde Copyright @ 2022 Oracle and/or its affiliates. 22
  • 32. Activer les GTIDs Sauvegarder en temps réel les binlogs sur un autre système (OCI Object Storage, S3, ...) VCN 10.0.0.0/16 Public Subnet 10.0.0.0/24 Private Subnet 10.0.1.0/24 MySQL Shell MySQL Database Service Internet Gateway Oracle Cloud Infrastructure Availability Domain 1 Fault Domain 1 mysql-dump-bucket mysql-binlogs-bucket Object Storage dump instance streambinlogs Meilleur Point-in-Time Recovery (PITR) Copyright @ 2022 Oracle and/or its affiliates. 23
  • 33. avec redémarrage Activation des GTIDs Copyright @ 2022 Oracle and/or its affiliates. 24
  • 34. avec redémarrage sans redémarrage Activation des GTIDs Copyright @ 2022 Oracle and/or its affiliates. 24
  • 35. Sauvegardes des Binlogs   Copyright @ 2022 Oracle and/or its affiliates. 25
  • 36. Sauvegardes des Binlogs   Sur un autre système: mysqlbinlog --raw --read-from-remote-server --stop-never --host 10.0.0.2 --port 3306 -u getbinlog -ppassword --ssl-mode='REQUIRED' binlog.xxxxxx Copyright @ 2022 Oracle and/or its affiliates. 25
  • 37. Point-in-Time Recovery : conceptes importants (2) Comme vous avez pu le constater, nous ne pouvons récupérer qu'à l'heure exacte des sauvegardes et nous ne pouvons faire une récupération ponctuelle qu'à partir de la dernière ! C'est pourquoi il est recommandé de délocaliser les binlogs (sur un autre serveur, un NAS, le cloud, ...). Cela perme ra d'e ectuer une restauration ponctuelle à n'importe quel moment dans le temps : Copyright @ 2022 Oracle and/or its affiliates. 26
  • 38. Point-in-Time Recovery : conceptes importants (2) Comme vous avez pu le constater, nous ne pouvons récupérer qu'à l'heure exacte des sauvegardes et nous ne pouvons faire une récupération ponctuelle qu'à partir de la dernière ! C'est pourquoi il est recommandé de délocaliser les binlogs (sur un autre serveur, un NAS, le cloud, ...). Cela perme ra d'e ectuer une restauration ponctuelle à n'importe quel moment dans le temps : Copyright @ 2022 Oracle and/or its affiliates. } day 1 BACKUPS Binlogs day 2 day 3 day 4 .001 .002 .003 .004 .005 .001 .002 .003 .004 .005 .006 .007 .008 .009 .010 .006 .007 .008 .009 .010 b i n l o g s t r e a m i n g points possibles de récupération 26
  • 39. Une simple instance MySQL avec sauvegarde journalière et archivage externe des binlogs Copyright @ 2022 Oracle and/or its affiliates. heures < 1 seconde RPO ? ? RTO 27
  • 40. Palier suivant (level up) Mon service est maintenant très important, je voudrais que ma base de données puisse être de nouveau disponible en quelques minutes en cas d'incident. Copyright @ 2022 Oracle and/or its affiliates. 28
  • 41. Palier suivant (level up) Mon service est maintenant très important, je voudrais que ma base de données puisse être de nouveau disponible en quelques minutes en cas d'incident. RTO → minutes Copyright @ 2022 Oracle and/or its affiliates. 28
  • 42. Palier suivant (level up) Mon service est maintenant très important, je voudrais que ma base de données puisse être de nouveau disponible en quelques minutes en cas d'incident. RTO → minutes   RPO → moins d'une seconde Copyright @ 2022 Oracle and/or its affiliates. 28
  • 43. Fondé à partir de la réplication asynchrone Mais plus facile... et plus facile, c'est mieux ! Transfert initial des données ("provisioning") inclus (clone) 2 noeuds ou plus Basculement manuel (failover) Routage transparent/automatique des requêtes avec MySQL Router MySQL InnoDB ReplicaSet Copyright @ 2022 Oracle and/or its affiliates. 29
  • 44. MySQL InnoDB ReplicaSet Copyright @ 2022 Oracle and/or its affiliates. 30
  • 45. MySQL InnoDB ReplicaSet Connecté au serveur actuel: JS > dba.con gureReplicaSetInstance() JS > rs=dba.createReplicaSet('myreplicaset') Sur le nouveau serveur où seul MySQL est installé (serveur et shell): JS > dba.con gureReplicaSetInstance() Et de nouveau sur l'instance principale: JS > rs.addInstance('mysql-2') Copyright @ 2022 Oracle and/or its affiliates. 31
  • 46. MySQL InnoDB ReplicaSet - examples Copyright @ 2022 Oracle and/or its affiliates. 32
  • 47. MySQL InnoDB ReplicaSet - examples Copyright @ 2022 Oracle and/or its affiliates. 33
  • 48. MySQL InnoDB ReplicaSet - examples Copyright @ 2022 Oracle and/or its affiliates. 34
  • 49. MySQL Router MySQL Router est très simple a con gurer, il su t d'utiliser la commande bootstrap! Copyright @ 2022 Oracle and/or its affiliates. 35
  • 50. MySQL Router Et comme d'habitude visible avec MySQL Shell Copyright @ 2022 Oracle and/or its affiliates. 36
  • 51. MySQL InnoDB ReplicaSet - Basculement Manuel Copyright @ 2022 Oracle and/or its affiliates. MySQL Shell est connecté à MySQL InnoDB ReplicaSet via MySQL Router. 37
  • 52. MySQL InnoDB ReplicaSet - Basculement Manuel Copyright @ 2022 Oracle and/or its affiliates. 38
  • 53. MySQL RelicaSet Copyright @ 2022 Oracle and/or its affiliates. minutes < 1 seconde RPO ? ? RTO rto > 39
  • 54. Palier suivant (level up) Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours disponible (basculment automatique) et ne jamais perdre de données ! Copyright @ 2022 Oracle and/or its affiliates. 40
  • 55. Palier suivant (level up) Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours disponible (basculment automatique) et ne jamais perdre de données ! RTO → secondes Copyright @ 2022 Oracle and/or its affiliates. 40
  • 56. Palier suivant (level up) Maintenant mon service est très très important, je voudrais qu'il soit quasiment toujours disponible (basculment automatique) et ne jamais perdre de données ! RTO → secondes   RPO → 0 Copyright @ 2022 Oracle and/or its affiliates. 40
  • 57. Fondé à partir de Group Replication Mais plus simple... et c'est toujours mieux Transfert des données initiales inclus (clone) 3 noeuds ou plus (un nombre impair est recommandé) Basculement Automatique Utilise MySQL Router Niveaux de consistances des données con gurable MySQL InnoDB Cluster Copyright @ 2022 Oracle and/or its affiliates. 41
  • 58. MySQL InnoDB Cluster Copyright @ 2022 Oracle and/or its affiliates. 42
  • 59. Sur le serveur "Primary" de notre ReplicaSet: JS > dba.dropMetadataSchema() JS > cluster=dba.createCluster('mycluster') Et sur l'instance "Secondary": SQL > STOP REPLICA; SQL > RESET ALL REPLICA; Et à nouveau sur le nouveau "Primary" du Cluster: JS > cluster.addInstance('mysql-2') MySQL InnoDB Cluster On peut maintenant ajouter un troisième membre pour béné cier du basculement automatique: Copyright @ 2022 Oracle and/or its affiliates. 43
  • 60. Sur le serveur "Primary" de notre ReplicaSet: JS > dba.dropMetadataSchema() JS > cluster=dba.createCluster('mycluster') Et sur l'instance "Secondary": SQL > STOP REPLICA; SQL > RESET ALL REPLICA; Et à nouveau sur le nouveau "Primary" du Cluster: JS > cluster.addInstance('mysql-2') JS > dba.con gureInstance() À partir d'une instance du cluster: JS > cluster=dba.getCluster() JS > cluster.addInstance('mysql-3') En n, on peut recon gurer le routeur: # mysqlrouter --bootstrap clusteradmin@single-mysql:3306 --conf-use-gr-noti cations --user mysqlrouter --force # systemctl restart mysqlrouter MySQL InnoDB Cluster On peut maintenant ajouter un troisième membre pour béné cier du basculement automatique: Copyright @ 2022 Oracle and/or its affiliates. 43
  • 61. MySQL InnoDB Cluster Copyright @ 2022 Oracle and/or its affiliates. 44
  • 62. MySQL InnoDB Cluster Copyright @ 2022 Oracle and/or its affiliates. secondes 0 RPO ? ? RTO rto > 45
  • 63. Palier suivant (level up) Et si quelque chose arrivait à notre centre de données ? Copyright @ 2022 Oracle and/or its affiliates. 46
  • 64. Palier suivant (level up) Et si quelque chose arrivait à notre centre de données ? Comment déployer un plan de reprise en cas de catastrophe (Disaster Recovery) ? Copyright @ 2022 Oracle and/or its affiliates. 46
  • 65. Palier suivant (level up) Et si quelque chose arrivait à notre centre de données ? Comment déployer un plan de reprise en cas de catastrophe (Disaster Recovery) ? Copyright @ 2022 Oracle and/or its affiliates. MySQL InnoDB ClusterSet !! 46
  • 66. L'évolution ultime ! disponible depuis MySQL 8.0.27 support du "fencing" depuis 8.0.28 MySQL InnoDB ClusterSet Copyright @ 2022 Oracle and/or its affiliates. 47
  • 67. Fruit de plusieurs transformations au cours des sorties précédentes: 8.0.22: Automatic Connection Failover (Async Replication Channels) 8.0.23: Automatic Connection Failover (Async Replication Channels using Group Replication) 8.0.24: transformation de skip-replica-start en variable globale, persistante et en lecture-seule 8.0.26: Ajout d'actions pour les membres de Group Replication (ex: super_read_only con gurable) 8.0.26: Ajout d'un UUID spéci que pour les évènements liés aux changements structurels du Groupe (View_change_log_event) 8.0.27: la con guration de l'Asynchronous Replication Channel suit automatiquement le Primary. Copyright @ 2022 Oracle and/or its affiliates. 48
  • 68. MySQL InnoDB ClusterSet Copyright @ 2022 Oracle and/or its affiliates. 49
  • 69. MySQL InnoDB ClusterSet Copyright @ 2022 Oracle and/or its affiliates. On peut également déployer des architectures plus complexes ! 49
  • 70. MySQL InnoDB ClusterSet Copyright @ 2022 Oracle and/or its affiliates. On peut également déployer des architectures plus complexes ! 49
  • 71. MySQL InnoDB ClusterSet Copyright @ 2022 Oracle and/or its affiliates. secondes 0 RPO ? ? RTO possible rpo>0 rto > 50
  • 72. Extra Depuis MySQL 8.0.19, les connecteurs supportent également dns-srv qui avec un "discovery service" tel que Consul, peut remplacer MySQL Router quand il est impossible de l'installer sur les serveurs d'applications: Copyright @ 2022 Oracle and/or its affiliates. 51
  • 73. Extra Depuis MySQL 8.0.19, les connecteurs supportent également dns-srv qui avec un "discovery service" tel que Consul, peut remplacer MySQL Router quand il est impossible de l'installer sur les serveurs d'applications: Copyright @ 2022 Oracle and/or its affiliates. 51
  • 74. Des Questions ? Copyright @ 2022 Oracle and/or its affiliates. 52