{"id":8900,"date":"2022-02-18T22:14:26","date_gmt":"2022-02-18T21:14:26","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=8900"},"modified":"2022-02-18T22:35:16","modified_gmt":"2022-02-18T21:35:16","slug":"restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/","title":{"rendered":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900&#038;title=Restauration%20point-in-time%20avec%20MariaDB%20Galera%20Cluster%20et%20mariabackup\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Restauration%20point-in-time%20avec%20MariaDB%20Galera%20Cluster%20et%20mariabackup&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>Hello \u00e0 toutes \/ tous,<\/p>\n<p>Restaurer tout un cluster actif-actif comme <a href=\"https:\/\/galeracluster.com\/\">Galera cluster<\/a> \u00e0 un point dans le temps peut \u00eatre une op\u00e9ration fastidieuse, et sous la pression on peut rapidement s&#8217;emm\u00ealer les pinceaux. C&#8217;est donc une bonne id\u00e9e de pouvoir pratiquer cet exercice au calme, en utilisant un bac \u00e0 sable, via des conteneurs par exemple. Si vous souhaitez refaire l&#8217;exercice, vous pourrez retrouver la base sakila utilis\u00e9e dans cet article <a href=\"https:\/\/downloads.mysql.com\/docs\/sakila-db.zip\">ici<\/a>.<\/p>\n<p>On se propose aujourd&#8217;hui de pr\u00e9senter une m\u00e9thode de restauration d&#8217;objet dans un cluster MariaDB Galera \u00e0 3 noeuds:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/galera-1024x255.png\" alt=\"\" width=\"640\" height=\"159\" class=\"aligncenter size-large wp-image-8901\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/galera-1024x255.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/galera-300x75.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/galera-768x191.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/galera.png 1172w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Un arbitre sera ajout\u00e9 mais ne sera activ\u00e9 que temporairement afin de permettre de maintenir un nombre de votants impair lors du retrait d&#8217;un des noeuds. <\/p>\n<p><strong>Le sc\u00e9nario<\/strong>: un utilisateur supprime les donn\u00e9es de la table <em>sakila.rental<\/em>. On souhaite restaurer cette table uniquement. Noter que l&#8217;on pourrait restaurer toute la base pour limiter les risques de violation de contraintes lors de la restauration, mais pour simplifier partons du principe que la table vid\u00e9e par erreur est isol\u00e9e du reste du mod\u00e8le de donn\u00e9es. La m\u00e9thode pour restaurer toute la base serait similaire.<\/p>\n<h2>Le principe : <\/h2>\n<p>1) Activer l\u2019arbitre et stopper le n\u0153ud 3, afin que l\u2019\u00e9quilibre des votes soit maintenu.<br \/>\n2) Red\u00e9marrer le n\u0153ud 3 en standalone sans configuration cluster.<br \/>\n3) Rechercher dans les journaux binaires soit en ligne soit sauvegard\u00e9s la position correspondant \u00e0 la transaction de suppression des donn\u00e9es de <em>rental<\/em>.<br \/>\n4) Restaurer la sauvegarde mariabackup compl\u00e8te puis les journaux dans l\u2019ordre jusqu\u2019\u00e0 cette position (non inclue).<br \/>\n5) Apr\u00e8s v\u00e9rification, r\u00e9exporter simplement la table <em>rental<\/em>.<br \/>\n6) La r\u00e9importer dans un des deux n\u0153uds actifs, les modifications seront imm\u00e9diatement synchronis\u00e9es avec le n\u0153ud restant.<br \/>\n7) R\u00e9int\u00e9grer le n\u0153ud 3 dans le cluster, ce qui red\u00e9clenchera une resynchronisation totale via <a href=\"https:\/\/mariadb.com\/kb\/en\/introduction-to-state-snapshot-transfers-ssts\/\">SST<\/a>.<br \/>\n8) Couper l\u2019arbitre qui ne nous sert plus. <\/p>\n<h2>Pr\u00e9requis : les logs binaires<\/h2>\n<p>Evidemment pour pouvoir restaurer les modifications interm\u00e9diaires, il faut que les logs binaires soient activ\u00e9s. Il y a une petite subtilit\u00e9 sur Galera, comme les modifications peuvent \u00eatre faites en local mais aussi venir de n&#8217;importe quel autre noeud du cluster (on rappelle que Galera est un cluster actif\/actif en lecture et en \u00e9criture), il faut pouvoir enregistrer tous les ordres de modification quelle que soit leur provenance. Pour cela on activera en plus de log-bin et log-bin-index, le param\u00e8tre <a href=\"https:\/\/mariadb.com\/kb\/en\/replication-and-binary-log-system-variables\/#log_slave_updates\">log-slave-updates=1<\/a>. <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~#  vi \/etc\/mysql\/my.cnf\r\n(\u2026)\r\nlog_bin\t\t\t= \/var\/log\/mysql\/mariadb-bin\r\nlog_bin_index\t\t= \/var\/log\/mysql\/mariadb-bin.index\r\nlog_slave_updates\t= 1\r\nexpire_logs_days\t= 10\r\n<\/pre>\n<h2>Le r\u00f4le de l&#8217;arbitre :<\/h2>\n<p><a href=\"https:\/\/galeracluster.com\/library\/documentation\/arbitrator.html\">L&#8217;arbitre <\/a>est un composant sp\u00e9cial dans un cluster Galera (on retrouve le m\u00eame principe dans d&#8217;autres clusters comme <a href=\"https:\/\/docs.mongodb.com\/manual\/core\/replica-set-arbiter\/\">les Replica Sets MongoDB<\/a>, etc&#8230;) c&#8217;est un noeud qui ne peut pas h\u00e9berger de donn\u00e9es mais peut participer au vote du quorum. En g\u00e9n\u00e9ral comme les clusters n\u00e9cessitent un nombre impair de votants pour limiter les risques de <a href=\"https:\/\/en.wikipedia.org\/wiki\/Split-brain_(computing)\">split-brain<\/a>, on l&#8217;utilise lorsque l&#8217;on ne peut pas d\u00e9ployer plus de 2 noeuds de donn\u00e9es par faute de moyens , volum\u00e9trie, etc&#8230;  <\/p>\n<p>Il ne contient pas la distribution MariaDB + Galera mais seulement un binaire <em>garbd <\/em>installable via un package sur la plupart des distributions : <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galerarb:~# apt-get install galera-arbitrator-3\r\n<\/pre>\n<p>Son fichier de configuration est minimaliste, il contient simplement le nom du cluster Galera et la liste des noeuds:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galerarb:~# vi garbd.conf \r\naddress = &quot;gcomm:\/\/10.186.157.38,10.186.157.242,10.186.157.196&quot;\r\ngroup = &quot;TestCluster&quot;\r\n<\/pre>\n<p>Il peut se d\u00e9marrer via un service systemd qu&#8217;il faudra cr\u00e9er \u00e0 la main, mais dans notre cas on ne l&#8217;activera qu&#8217;\u00e0 la demande donc on ne lancera le processus garbd qu&#8217;\u00e0 la main, en mode daemon, de la fa\u00e7on suivante:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galerarb:~# \/usr\/bin\/garbd --cfg \/root\/garbd.conf \\ \r\n--daemon --log \/var\/log\/garbd.log\r\n<\/pre>\n<h2>Etape 1 : choix d&#8217;un noeud de restauration et \u00e9vinction manuelle du cluster.<\/h2>\n<p>On pourrait choisir d&#8217;utiliser une <em>burn instance<\/em>, c&#8217;est \u00e0 dire une instance qu&#8217;on ne d\u00e9ploierait que pour restaurer, r\u00e9exporter, puis qui serait supprim\u00e9e ensuite (par exemple sous forme d&#8217;un conteneur Docker ou LXD) . Dans notre cas, nous allons sacrifier un noeud du cluster, et nous allons lui substituer l&#8217;arbitre pour maintenir l&#8217;\u00e9quilibre des votants. <\/p>\n<p>Donc en premier lieu, nous allons d\u00e9marrer l&#8217;arbitre comme vu plus haut, et stopper le noeud galera3 qui sera notre noeud de restauration:<\/p>\n<p>Sur galerarb:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galerarb:~# \/usr\/bin\/garbd --cfg \/root\/garbd.conf \\ \r\n--daemon --log \/var\/log\/garbd.log\r\n<\/pre>\n<p>et v\u00e9rifier qu&#8217;il est bien vu comme int\u00e9gr\u00e9 au cluster dans le fichier de log d&#8217;un autre noeud:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n(...)\r\n2022-02-16 15:46:54 0 [Note] WSREP: Member 3.0 (garb) synced with group.\r\n(...)\r\n<\/pre>\n<p>Sur galera3 : <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~# systemctl stop mariadb.service\r\n<\/pre>\n<p>M\u00eame chose, toujours valider dans le log d&#8217;un autre noeud que le cluster voit bien les modifications \u00e0 chaque fois:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n2022-02-17 10:34:27 0 [Note] WSREP:  cleaning up b0ccc293 (tcp:\/\/10.186.157.196:4567)\r\n<\/pre>\n<p>Je conseille de d\u00e9dier une fen\u00eatre XTERM \u00e0 un tail -f du fichier de log sur l&#8217;un des 2 autres noeuds du cluster, dans notre cas galera1 ou galera2. <\/p>\n<p>Nous allons ensuite sortir manuellement galera3 du cluster en commentant sa configuration wsrep:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~# vi \/etc\/mysql\/mariadb.conf.d\/60-galera.cnf \r\n(...)\r\n# Cluster Configuration\r\n# wsrep_provider           = \/usr\/lib\/galera\/libgalera_smm.so\r\n# wsrep_cluster_address    = gcomm:\/\/10.186.157.38,10.186.157.242,10.186.157.196\r\n# wsrep_cluster_name       = TestCluster\r\n# wsrep_on                 = ON\r\n\r\nroot@galera3:~# systemctl start mariadb.service\r\n<\/pre>\n<p>Il faudra penser \u00e0 d\u00e9sactiver des t\u00e2ches automatiques, en crontab par exemple, notamment des t\u00e2ches de MCO comme des backups de logs binaires qui pourraient perturber notre op\u00e9ration de restauration. <\/p>\n<h2>D\u00e9terminer la cha\u00eene compl\u00e8te de fichiers \u00e0 restaurer<\/h2>\n<p>A partir de l\u00e0, notre service est toujours accessible, partiellement car une des tables est vide. En fonction de la criticit\u00e9 de la table, cela peut avoir des cons\u00e9quences importantes sur la disponibilit\u00e9 des applications, donc il ne faut pas tra\u00eener. <\/p>\n<p>Tout d&#8217;abord, notre cha\u00eene de backup commence par un backup complet mariabackup, et est compl\u00e9t\u00e9 r\u00e9guli\u00e8rement par des sauvegardes de journaux binaires. Voyons ce que nous avons en local:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~\/SCRIPTS# ls -lrat \/mariabackup\r\n-rw-r--r--  1 root  root   3666109 Feb 17 10:05 MARIABACKUP__20220217_100457.xb.gz\r\ndrwxr-xr-x  2 mysql mysql     4096 Feb 17 10:24 .\r\n-rw-r--r--  1 root  root  44573785 Feb 17 10:24 BINLOGS_20220217_102428.tar.gz\r\n-rw-r--r--  1 root  root     203021 Feb 17 11:07 BINLOGS_20220217_110741.tar.gz\r\n<\/pre>\n<p>Nous avons un backup complet et deux backups de journaux en ligne. Il faut commencer par extraire le backup complet qui a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 sous forme de stream et v\u00e9rifier \u00e0 partir de quel binlog et quelle position commence la cha\u00eene de backup. Nous allons cr\u00e9er un sous r\u00e9pertoire ~RESTORE dans lequel nous pourrons reverser tous les fichiers n\u00e9cessaires \u00e0 la restauration. <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup# mkdir \/mariabackup\/RESTORE\r\nroot@galera3:\/mariabackup# chown -R mysql:mysql \/mariabackup\/RESTORE\r\n\r\nroot@galera3:\/mariabackup# gzip -d MARIABACKUP__20220217_100457.xb.gz\r\nroot@galera3:\/mariabackup# cd RESTORE\/\r\nroot@galera3:\/mariabackup\/RESTORE# mbstream -x &lt; ..\/MARIABACKUP__20220217_100457.xb\r\n\r\nroot@galera3:\/mariabackup\/RESTORE# ls -lrat \r\ntotal 77900\r\ndrwxr-xr-x 3 mysql mysql     4096 Feb 17 10:40 ..\r\n-rw-r----- 1 root  root  79691776 Feb 17 10:40 ibdata1\r\ndrwx------ 2 root  root      4096 Feb 17 10:40 performance_schema\r\ndrwx------ 2 root  root      4096 Feb 17 10:40 mysql\r\ndrwx------ 2 root  root      4096 Feb 17 10:40 sakila\r\n-rw-r----- 1 root  root     16384 Feb 17 10:40 aria_log.00000001\r\n-rw-r----- 1 root  root       578 Feb 17 10:40 xtrabackup_info\r\n-rw-r----- 1 root  root        41 Feb 17 10:40 xtrabackup_galera_info\r\n-rw-r----- 1 root  root        79 Feb 17 10:40 xtrabackup_checkpoints\r\n-rw-r----- 1 root  root        31 Feb 17 10:40 xtrabackup_binlog_info\r\n-rw-r----- 1 root  root       389 Feb 17 10:40 mariadb-bin.000049\r\n-rw-r----- 1 root  root      2560 Feb 17 10:40 ib_logfile0\r\n-rw-r----- 1 root  root      4874 Feb 17 10:40 ib_buffer_pool\r\n-rw-r----- 1 root  root       324 Feb 17 10:40 backup-my.cnf\r\n-rw-r----- 1 root  root        52 Feb 17 10:40 aria_log_control\r\ndrwxr-xr-x 5 mysql mysql     4096 Feb 17 10:40 .\r\n<\/pre>\n<p>Le fichier xtrabackup_binlog_info contient les informations de binlog et position recherch\u00e9es (l&#8217;\u00e9quivalent du &#8211;master-data de mysqldump)<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# cat xtrabackup_binlog_info\r\nmariadb-bin.000049\t389\t0-1-329\r\n<\/pre>\n<p>OK donc on sait qu&#8217;il faudra restaurer au moins \u00e0 partir du log binaire mariadb-bin.000049, mais dans notre cas il n&#8217;est plus en ligne :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nMariaDB [(none)]&gt; show binary logs ;\r\n+--------------------+-----------+\r\n| Log_name           | File_size |\r\n+--------------------+-----------+\r\n| mariadb-bin.000055 |    403132 |\r\n| mariadb-bin.000056 |      2740 |\r\n| mariadb-bin.000057 |       599 |\r\n| mariadb-bin.000058 |       599 |\r\n| mariadb-bin.000059 |      1094 |\r\n| mariadb-bin.000060 |       412 |\r\n| mariadb-bin.000061 |       344 |\r\n+--------------------+-----------+\r\n7 rows in set (0.000 sec)\r\n<\/pre>\n<p>Il faudra donc le restaurer \u00e0 partir d&#8217;une sauvegarde :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~ # tar -ztvf \/mariabackup\/BINLOGS_20220217_102428.tar.gz | grep 'mariadb-bin.000049'\r\n-rw-rw---- mysql\/adm  30817312 2022-02-17 10:16 mariadb-bin.000049\r\n<\/pre>\n<p>Nous avons le backup complet et le d\u00e9but de la cha\u00eene de sauvegarde, maintenant il faut trouver le point d&#8217;arr\u00eat de la restauration, c&#8217;est \u00e0 dire la transaction qui pr\u00e9c\u00e8de le delete sur <em>sakila.rental<\/em>. C&#8217;est la partie un peu fastidieuse du processus, o\u00f9 il faut partir \u00e0 la p\u00eache au bon fichier et \u00e0 la bonne position:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# tar -zxf ..\/BINLOGS_20220217_102428.tar.gz \r\n\r\nroot@galera3:\/mariabackup\/RESTORE# ls -lrat \r\ntotal 117136\r\n-rw-rw---- 1 mysql adm     402493 Feb 16 16:25 mariadb-bin.000033\r\n-rw-rw---- 1 mysql adm        438 Feb 16 16:25 mariadb-bin.000034\r\n-rw-rw---- 1 mysql adm        412 Feb 16 16:27 mariadb-bin.000035\r\n-rw-rw---- 1 mysql adm    4591827 Feb 16 16:51 mariadb-bin.000036\r\n-rw-rw---- 1 mysql adm        367 Feb 16 16:51 mariadb-bin.000037\r\n-rw-rw---- 1 mysql adm    4592833 Feb 16 16:53 mariadb-bin.000038\r\n-rw-rw---- 1 mysql adm        367 Feb 17 07:39 mariadb-bin.000039\r\n-rw-rw---- 1 mysql adm        770 Feb 17 07:58 mariadb-bin.000040\r\n-rw-rw---- 1 mysql adm        438 Feb 17 08:16 mariadb-bin.000041\r\n-rw-rw---- 1 mysql adm        438 Feb 17 08:20 mariadb-bin.000042\r\n-rw-rw---- 1 mysql adm        438 Feb 17 08:22 mariadb-bin.000043\r\n-rw-rw---- 1 mysql adm        438 Feb 17 08:24 mariadb-bin.000044\r\n-rw-rw---- 1 mysql adm        438 Feb 17 08:25 mariadb-bin.000045\r\n-rw-rw---- 1 mysql adm        412 Feb 17 09:33 mariadb-bin.000046\r\n-rw-rw---- 1 mysql adm        367 Feb 17 09:33 mariadb-bin.000047\r\n-rw-rw---- 1 mysql adm    2413649 Feb 17 10:05 mariadb-bin.000048\r\n-rw-rw---- 1 mysql adm   30817312 Feb 17 10:16 mariadb-bin.000049\r\n-rw-rw---- 1 mysql adm   31345403 Feb 17 10:19 mariadb-bin.000050\r\n-rw-rw---- 1 mysql adm   11424743 Feb 17 10:19 mariadb-bin.000051\r\n-rw-rw---- 1 mysql adm   11424743 Feb 17 10:19 mariadb-bin.000052\r\n-rw-rw---- 1 mysql adm   11424743 Feb 17 10:19 mariadb-bin.000053\r\n-rw-rw---- 1 mysql adm   11424743 Feb 17 10:19 mariadb-bin.000054\r\ndrwxr-xr-x 3 mysql mysql     4096 Feb 17 10:40 ..\r\ndrwxr-xr-x 2 mysql mysql     4096 Feb 17 10:57 .\r\n\r\nroot@galera3:\/mariabackup\/RESTORE# for file in mariadb-bin.000049 mariadb-bin.000050 mariadb-bin.000051 mariadb-bin.000052 mariadb-bin.000053 mariadb-bin.000054\r\n&gt; do \r\n&gt; echo &quot;${file}&quot; \r\n&gt; mysqlbinlog ${file} --base64-output=decode-rows | grep -in &quot;delete from rental&quot;\r\n&gt; done\r\nmariadb-bin.000049\r\n212555:#Q&gt; delete from rental_1466 where return_date &gt; '2005-07-01 00:00:00'\r\n487940:#Q&gt; delete from rental_1471 where return_date &gt; '2005-07-01 00:00:00'\r\nmariadb-bin.000050\r\n496895:#Q&gt; delete from rental_1475 where return_date &gt; '2005-07-01 00:00:00'\r\nmariadb-bin.000051\r\n141460:#Q&gt; delete from rental_1477 where return_date &gt; '2005-07-01 00:00:00'\r\nmariadb-bin.000052\r\n141460:#Q&gt; delete from rental_1476 where return_date &gt; '2005-07-01 00:00:00'\r\nmariadb-bin.000053\r\n141460:#Q&gt; delete from rental_1479 where return_date &gt; '2005-07-01 00:00:00'\r\nmariadb-bin.000054\r\n141458:#Q&gt; delete from rental_1478 where return_date &gt; '2005-07-01 00:00:00'\r\n<\/pre>\n<p>On voit ici que les deletes concernent des tables diff\u00e9rentes de la table <em>rental<\/em>, ce sont des tables d\u00e9riv\u00e9es mais pas la table d&#8217;origine, il faut continuer les recherches dans le second backup:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# tar -zxf ..\/BINLOGS_20220217_110741.tar.gz\r\nroot@galera3:\/mariabackup\/RESTORE# for file in mariadb-bin.000055 mariadb-bin.000056 mariadb-bin.000057 mariadb-bin.000058 mariadb-bin.000059 mariadb-bin.000060 \r\n&gt; do \r\n&gt; echo &quot;${file}&quot; \r\n&gt; mysqlbinlog ${file} --base64-output=decode-rows | grep -in &quot;delete from rental&quot;\r\n&gt; done\r\nmariadb-bin.000055\r\n31:#Q&gt; delete from rental\r\nmariadb-bin.000056\r\nmariadb-bin.000057\r\nmariadb-bin.000058\r\nmariadb-bin.000059\r\nmariadb-bin.000060\r\n<\/pre>\n<p>On a donc trouv\u00e9, le delete se trouve dans le binlog  mariadb-bin.000055, reste \u00e0 trouver la position:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# mysqlbinlog mariadb-bin.000055 | more\r\n(...)\r\n# at 299\r\n#220217 10:19:09 server id 1  end_log_pos 344 CRC32 0x3eb16ee1 \tBinlog checkpoint mariadb-bin.000054\r\n# at 344\r\n#220217 10:19:09 server id 1  end_log_pos 389 CRC32 0xefa5a7e6 \tBinlog checkpoint mariadb-bin.000055\r\n# at 389\r\n#220217 10:26:22 server id 1  end_log_pos 431 CRC32 0x628184fc \tGTID 0-1-344 trans\r\n\/*!100101 SET @@session.skip_parallel_replication=0*\/\/*!*\/;\r\n\/*!100001 SET @@session.gtid_domain_id=0*\/\/*!*\/;\r\n\/*!100001 SET @@session.server_id=1*\/\/*!*\/;\r\n\/*!100001 SET @@session.gtid_seq_no=344*\/\/*!*\/;\r\nSTART TRANSACTION\r\n\/*!*\/;\r\n# at 431\r\n# at 472\r\n#220217 10:26:22 server id 1  end_log_pos 472 CRC32 0xd222415b \tAnnotate_rows:\r\n#Q&gt; delete from rental\r\n#220217 10:26:22 server id 1  end_log_pos 532 CRC32 0x34accc81 \tTable_map: `sakila`.`rental` mapped to number 64 (has triggers)\r\n# at 532\r\n#220217 10:26:22 server id 1  end_log_pos 594 CRC32 0xd312376b \tTable_map: `sakila`.`payment` mapped to number 63 (has triggers)\r\n(...)\r\n<\/pre>\n<p>Notre transaction est \u00e0 la position 389 dans le fichier mariadb-bin.000055. <\/p>\n<p><strong>En conclusion, notre s\u00e9quence de restauration sera la suivante:<\/strong><br \/>\na. Restauration du backup complet<br \/>\nb. Restauration du journal mariadb-bin.000049 \u00e0 partir de la position 389<br \/>\nc. Restauration des journaux mariadb-bin.000050 \u00e0 mariadb-bin.000054 complets<br \/>\nd. Restauration du journal mariadb-bin.000055 jusqu&#8217;\u00e0 la position 389 non comprise.<\/p>\n<h2>Restauration de la s\u00e9quence de backup sur le noeud 3 et r\u00e9export de la table rental<\/h2>\n<p>Pour restaurer le backup complet mariabackup, il faut couper le noeud 3 et vider son datadir:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# systemctl stop mariadb.service\r\nroot@galera3:\/mariabackup\/RESTORE# cd \/var\/lib\/mysql\r\nroot@galera3:\/var\/lib\/mysql# rm -rf *\r\n<\/pre>\n<p>Puis pr\u00e9parer le backup et restaurer:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/var\/lib\/mysql# mariabackup --prepare \\ \r\n--target-dir=\/mariabackup\/RESTORE\/ \r\nmariabackup based on MariaDB server 10.3.34-MariaDB debian-linux-gnu (x86_64)\r\n[00] 2022-02-17 10:53:28 cd to \/mariabackup\/RESTORE\/\r\n(...)\r\n00] 2022-02-17 10:53:29 Last binlog file \/var\/log\/mysql\/mariadb-bin.000048, position 402837\r\n[00] 2022-02-17 10:53:29 completed OK!\r\n\r\nroot@galera3:\/var\/lib\/mysql# mariabackup --copy-back \\\r\n--target-dir=\/mariabackup\/RESTORE\/ \\\r\n--user=mariabackup --password=********\r\nmariabackup based on MariaDB server 10.3.34-MariaDB debian-linux-gnu (x86_64)\r\n[01] 2022-02-17 10:52:21 Copying ib_logfile0 to \/var\/lib\/mysql\/ib_logfile0\r\n[01] 2022-02-17 10:52:21         ...done\r\n[01] 2022-02-17 10:52:21 Copying ibdata1 to \/var\/lib\/mysql\/ibdata1\r\n(...)\r\n[01] 2022-02-17 10:52:22 Copying .\/xtrabackup_info to \/var\/lib\/mysql\/xtrabackup_info\r\n[01] 2022-02-17 10:52:22         ...done\r\n[00] 2022-02-17 10:52:22 completed OK!\r\n\r\n<\/pre>\n<p>Ne pas oublier de bien r\u00e9attribuer les droits en fin de s\u00e9quence, avant de red\u00e9marrer le service:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/var\/lib\/mysql# chown -R mysql:mysql *\r\nroot@galera3:\/var\/lib\/mysql# systemctl start mariadb.service\r\n<\/pre>\n<p>Ensuite nous pouvons restaurer notre s\u00e9quence de logs binaires:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# mysqlbinlog \\\r\n\/mariabackup\/RESTORE\/mariadb-bin.000049 \\\r\n--start-position=389 | mysql\r\n\r\nroot@galera3:\/mariabackup\/RESTORE# for file in \/mariabackup\/RESTORE\/mariadb-bin.000050 \/mariabackup\/RESTORE\/mariadb-bin.000051 \/mariabackup\/RESTORE\/mariadb-bin.000052 \/mariabackup\/RESTORE\/mariadb-bin.000053 \/mariabackup\/RESTORE\/mariadb-bin.000054\r\n&gt; do\r\n&gt;\techo &quot;Restoring ${file}...&quot;\r\n&gt;\tmysqlbinlog ${file} | mysql\r\n&gt; done\r\n\r\nroot@galera3:\/mariabackup\/RESTORE# mysqlbinlog \\\r\n\/mariabackup\/RESTORE\/mariadb-bin.000055 \\\r\n--stop-position=389 | mysql\r\n<\/pre>\n<p>Et v\u00e9rifier que les donn\u00e9es de la table <em>rental <\/em>ont bien \u00e9t\u00e9 r\u00e9cup\u00e9r\u00e9es, puis les r\u00e9exporter:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:\/mariabackup\/RESTORE# mysql \\\r\n--execute=&quot;select count(1) from sakila.rental;&quot;\r\n+----------+\r\n| count(1) |\r\n+----------+\r\n|    16044 |\r\n+----------+\r\n\r\nroot@galera3:\/mariabackup\/RESTORE# mysqldump \\\r\n--user=root --socket=\/var\/run\/mysqld\/mysqld.sock \u2013password=***** \\\r\nsakila rental &gt; \/mariabackup\/rental.sql\r\n<\/pre>\n<h2>R\u00e9import de la table dans un autre noeud du cluster<\/h2>\n<p>N&#8217;importe quel noeud en Primary \/ Synced fera l&#8217;affaire. La r\u00e9execution du fichier SQL sera ensuite r\u00e9pliqu\u00e9e en synchrone sur l&#8217;autre noeud. <\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera1:\/mariabackup# mysql sakila &lt; rental.sql\r\n<\/pre>\n<p>V\u00e9rifier que les donn\u00e9es sont bien pr\u00e9sentes sur tous les noeuds galera1, galera2, avant de r\u00e9int\u00e9grer galera3.  <\/p>\n<h2>R\u00e9int\u00e9gration de galera3 dans le cluster et arr\u00eat de l&#8217;arbitre<\/h2>\n<p>Il suffit simplement de d\u00e9commenter les param\u00e8tres wsrep dans le fichier de configuration de MariaDB sur galera3, et red\u00e9marrer le service :<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galera3:~# vi \/etc\/mysql\/mariadb.conf.d\/60-galera.cnf \r\n(...)\r\n Cluster Configuration\r\nwsrep_provider           = \/usr\/lib\/galera\/libgalera_smm.so\r\nwsrep_cluster_address    = gcomm:\/\/10.186.157.38,10.186.157.242,10.186.157.196\r\nwsrep_cluster_name       = TestCluster\r\nwsrep_on                 = ON\r\nwsrep_sst_method = mariabackup\r\nwsrep_sst_donor = galera1, galera2\r\nwsrep_sst_auth = mariabackup:capdata\r\n(...)\r\n\r\nroot@galera3:\/var\/lib\/mysql# systemctl restart mariadb.service\r\n<\/pre>\n<p>Un SST sera d\u00e9clench\u00e9 pour remettre le noeud galera3 \u00e0 jour depuis un <em>donor <\/em>disponible (ici galera1):<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n2022-02-17 13:21:03 0 [Note] WSREP: Member 0.0 (galera3) synced with group.\r\n<\/pre>\n<p>Et enfin nous n&#8217;avons plus besoin de l&#8217;arbitre, nous sommes revenus en nominal:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@galerarb:~# killall garbd\r\n<\/pre>\n<p>Penser \u00e0 bien r\u00e9activer les t\u00e2ches comment\u00e9es sur galera3 pendant la phase de recherche et restauration des donn\u00e9es. Et le tour est jou\u00e9 !<\/p>\n<p>A+ pour d&#8217;autre articles !<br \/>\n~David<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900&#038;title=Restauration%20point-in-time%20avec%20MariaDB%20Galera%20Cluster%20et%20mariabackup\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Restauration%20point-in-time%20avec%20MariaDB%20Galera%20Cluster%20et%20mariabackup&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8900\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Hello \u00e0 toutes \/ tous, Restaurer tout un cluster actif-actif comme Galera cluster \u00e0 un point dans le temps peut \u00eatre une op\u00e9ration fastidieuse, et sous la pression on peut rapidement s&#8217;emm\u00ealer les pinceaux. C&#8217;est donc une bonne id\u00e9e de&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":8905,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[21,385,386],"class_list":["post-8900","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysql","tag-cluster","tag-galera","tag-point-in-time-recovery"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Hello \u00e0 toutes \/ tous, Restaurer tout un cluster actif-actif comme Galera cluster \u00e0 un point dans le temps peut \u00eatre une op\u00e9ration fastidieuse, et sous la pression on peut rapidement s&#8217;emm\u00ealer les pinceaux. C&#8217;est donc une bonne id\u00e9e de&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-18T21:14:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-18T21:35:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/top-free-file-recovery-software.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"413\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup\",\"datePublished\":\"2022-02-18T21:14:26+00:00\",\"dateModified\":\"2022-02-18T21:35:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\"},\"wordCount\":2574,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"cluster\",\"galera\",\"point in time recovery\"],\"articleSection\":[\"MySQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\",\"name\":\"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2022-02-18T21:14:26+00:00\",\"dateModified\":\"2022-02-18T21:35:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/","og_locale":"fr_FR","og_type":"article","og_title":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG","og_description":"Hello \u00e0 toutes \/ tous, Restaurer tout un cluster actif-actif comme Galera cluster \u00e0 un point dans le temps peut \u00eatre une op\u00e9ration fastidieuse, et sous la pression on peut rapidement s&#8217;emm\u00ealer les pinceaux. C&#8217;est donc une bonne id\u00e9e de&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2022-02-18T21:14:26+00:00","article_modified_time":"2022-02-18T21:35:16+00:00","og_image":[{"width":600,"height":413,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/02\/top-free-file-recovery-software.png","type":"image\/png"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup","datePublished":"2022-02-18T21:14:26+00:00","dateModified":"2022-02-18T21:35:16+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/"},"wordCount":2574,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["cluster","galera","point in time recovery"],"articleSection":["MySQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/","url":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/","name":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2022-02-18T21:14:26+00:00","dateModified":"2022-02-18T21:35:16+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/restauration-point-in-time-avec-mariadb-galera-cluster-et-mariabackup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Restauration point-in-time avec MariaDB Galera Cluster et mariabackup"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8900","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=8900"}],"version-history":[{"count":4,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8900\/revisions"}],"predecessor-version":[{"id":8906,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8900\/revisions\/8906"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/8905"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=8900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=8900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=8900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}