{"id":13418,"date":"2020-02-12T10:30:31","date_gmt":"2020-02-12T09:30:31","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/"},"modified":"2020-02-12T10:30:31","modified_gmt":"2020-02-12T09:30:31","slug":"how-can-docker-help-a-mariadb-cluster-for-disaster-recovery","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/","title":{"rendered":"How can Docker help a MariaDB cluster for Disaster\/Recovery"},"content":{"rendered":"<p style=\"text-align: left\">Mistakes or accidental data deletions can sometimes happen on a productive MariaDB Galera Cluster and this can be disastrous.<br \/>\nThere are so many cases I have heard by customers and hereafter are some of the most common:<br \/>\n&#8211; dropping one column of a table<br \/>\n&#8211; dropping one table<br \/>\n&#8211; updating a big table without a where clause<br \/>\nWhat if it was possible to restore online a subset of data without downtime?<br \/>\n<!--more--><br \/>\nRestoring &amp; recovering using either mysqldump or mariabackup is not satisfying when you have just to recover a subset of data.<br \/>\nIn both case, there will be a downtime and it will be a very long process.<br \/>\n&#8211; with mysqldump: you will have first to stop the application, restore the latest Full backup and then apply all the binary logs until the guilty command.<br \/>\n&#8211; with mariabackup, you will also have to stop the application but additionally the cluster, then restore the latest Full backup on one node, restart the cluster (galera_new_cluster), apply all the binary logs and finally restart the other members in order to be synchronized.<br \/>\nHaving a test server where you can restore\/recover a logical backup can help, you just have then to export the needed data, copy them on the productive host and reload them but still, it will take a lot of time.<\/p>\n<h2>MariaDB Galera Cluster preparation<\/h2>\n<p>&#8220;On a souvent besoin d&#8217;un plus petit que soi&#8221; was saying Jean de La Fontaine in his fable: Le lion et le rat<br \/>\nLet&#8217;s use this proverb to implement this solution, we will need some help from Docker.<br \/>\nUsing a fourth node (the helper), we will deploy 3 containers with a delayed replication of 15minutes, 1hour and 6hours but of course you can choose your own lags.<br \/>\nHere is an overview of my environment.<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster2.jpeg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-37166\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster2.jpeg\" alt=\"MariaDB Galera Cluster\" width=\"850\" height=\"502\" \/><\/a><br \/>\nAs it is mandatory for the replication (Master\/Slave), the first step is to activate the binary logs (binlogs) in the option file (my.cnf) on every master node.<br \/>\nWhy?<br \/>\nBecause they are not activated by default on a Galera Cluster, writesets (transactions) are written to a Galera cache (Gcache) and in case of recovery\/resynchronisation, Galera will perform an Incremental State Transfer by using the Gcache.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">[mysqld]\n# REPLICATION SPECIFIC\nserver_id=3\nbinlog_format=ROW\nlog_bin = \/var\/lib\/mysql\/binlog\nlog_slave_updates = ON\nexpire_logs_days = 7\n\n$ sudo systemctl restart mariadb<\/pre>\n<p>The second step is to create a dedicated user with the &#8220;REPLICATION SLAVE&#8221; privilege for the replication.<br \/>\nWe only need to create it once as it is automically duplicated on the other members<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">MariaDB &gt; create user rpl_user@\u2019192.168.56.%' IDENTIFIED BY 'manager';\nMariaDB &gt; GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%\u2019;\nMariaDB &gt; show grants for 'rpl_user'@'\u2019192.168.56.%';\n+-------------------------------------------------------------------------------------+\n| Grants for rpl_user@% \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 |\n+-------------------------------------------------------------------------------------+\n| GRANT REPLICATION SLAVE ON *.* TO 'rpl_user'@'\u2019192.168.56.%' IDENTIFIED \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 |\n+-------------------------------------------------------------------------------------+<\/pre>\n<p>The third step is to create a Full backup of one of the master node and transfer it on the docker host<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$  mysqldump -uroot -p \\\n--flush-privileges --hex-blob --single-transaction \\\n--triggers --routines --events \\\n--all-databases | gzip -6 -c &gt; mysqldump_complete.sql.gz\n$  scp mysqldump_complete.sql.gz root@192.168.56.205:\/tmp<\/pre>\n<h2>Docker Host preparation<\/h2>\n<p>Now on the Docker host, we create 3 directories for each container<br \/>\n&#8211; <strong>mariadb.conf.d<\/strong>: store MariaDB configuration file, mapped into the container under \/etc\/mysql\/mariadb.conf.d<br \/>\n&#8211; <strong>datadir<\/strong> : store the MariaDB data, mapped to \/var\/lib\/mysql<br \/>\n&#8211; <strong>sql<\/strong> : backup file (dump) &amp; script files to automate replication configuration and startup<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ for val in 15m 1h 6h\n$ do\n$  sudo mkdir -p \/storage\/mariadb-slave-${val}\/mariadb.conf.d\n$  sudo mkdir -p \/storage\/mariadb-slave-${val}\/datadir\n$  sudo mkdir -p \/storage\/mariadb-slave-${val}\/sql\n$ done<\/pre>\n<p>We prepare the MariaDB configuration for every slave &amp; insert the following parameters<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ vi \/storage\/mariadb-slave-15m\/mariadb.conf.d\/my.cnf\n[mysqld]\nserver_id=10015\nbinlog_format=ROW\nlog_bin=binlog\nlog_slave_updates=1\nrelay_log=relay-bin\nexpire_logs_days=7\nread_only=ON<\/pre>\n<p>For the next step, we need to create two scripts for every delayed slave. The first one will only contain the following statement<br \/>\n<code>RESET MASTER;<\/code><br \/>\nThis will delete all old binary log files &amp; start a new binary log file sequence with a suffix of &#8220;.000001&#8221;<br \/>\nThe second one will setup &amp; start the replication. The most important parameter is &#8220;MASTER_DELAY&#8221; as it determines the amount of time in seconds the slave should lag behind the master.<br \/>\n<code>CHANGE MASTER TO MASTER_HOST = '192.168.56.203\u2019, \\<br \/>\nMASTER_USER = 'rpl_user', MASTER_PASSWORD = 'manager\u2019, \\<br \/>\nMASTER_DELAY=900;<br \/>\nSTART SLAVE;<\/code><br \/>\nLast we copy the backup (dump) on every slave &#8220;sql&#8221; directory and renamed it 2_mysqldump.sql.gz<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ cp ~\/mysqldump_complete.tar.gz \/storage\/mariadb-slave-15m\/sql\/2_mysqldump.tar.gz\n$ cp ~\/mysqldump_complete.tar.gz \/storage\/mariadb-slave-1h\/sql\/2_mysqldump.tar.gz\n$ cp ~\/mysqldump_complete.tar.gz \/storage\/mariadb-slave-6h\/sql\/2_mysqldump.tar.gz<\/pre>\n<p>The final look of every &#8220;sql slave directory has to be as following<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ ll \/storage\/mariadb-slave-{15m,1h,6h}\/sql\n-rw-r--r-- 1 mysql mysql     14 Feb 13 14:35 1_Reset_master.sql\n-rw-r--r-- 1 mysql mysql 843584 Feb 13 14:44 2_mysqldump.tar.gz\n-rw-r--r-- 1 mysql mysql    134 Feb 13 14:35 3_setup_slave.sql\n\n-rw-r--r-- 1 mysql mysql 14 Feb 13 14:35 1_Reset_master.sql\n-rw-r--r-- 1 mysql mysql 843584 Feb 13 14:44 2_mysqldump.tar.gz\n-rw-r--r-- 1 mysql mysql 134 Feb 13 14:35 3_setup_slave.sql\n\n-rw-r--r-- 1 mysql mysql 14 Feb 13 14:35 1_Reset_master.sql\n-rw-r--r-- 1 mysql mysql 843584 Feb 13 14:44 2_mysqldump.tar.gz\n-rw-r--r-- 1 mysql mysql 134 Feb 13 14:35 3_setup_slave.sql<\/pre>\n<p>We prefix the SQL scripts with an integer because it determines the execution order when Docker initializes the MariaDB container.<\/p>\n<h2>Containers deployment<\/h2>\n<p>Everything is in place, let\u2019s start and run the 3 MariaDB containers. One last thing, MYSQL_ROOT_PASSWORD must be the same as the MariaDB root password on the master.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ for val in 15m 1h 6h\n$ do\n$  docker run \u2013d \\\n--name mariadb-slave-$val \\\n--hostname mariadb$val \\\n-e MYSQL_ROOT_PASSWORD=manager \\\n-v \/storage\/mariadb-slave-$val\/datadir:\/var\/lib\/mysql \\\n-v \/storage\/mariadb-slave-$val\/mariadb.conf.d:\/etc\/mysql\/mariadb.conf.d \\\n-v \/storage\/mariadb-slave-$val\/sql:\/docker-entrypoint-initdb.d  \\\nmariadb<\/pre>\n<p>We first check if all containers are started.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ docker ps \u2013a\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\nf0f3d674c2f5        mariadb             \"docker-entrypoint.s\u2026\"   3 minutes ago       Up 3 minutes        3306\/tcp            mariadb-slave-15m\n393145021a84        mariadb             \"docker-entrypoint.s\u2026\"   3 minutes ago       Up 3 minutes        3306\/tcp            mariadb-slave-1h\n9d3bc9bd214c        mariadb             \"docker-entrypoint.s\u2026\"   3 minutes ago       Up 3 minutes        3306\/tcp            mariadb-slave-6h<\/pre>\n<p>We then check the log file to see it the slave is connected.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ docker logs -f mariadb-slave-15m\n...\n2019-03-11 10:01:08 0 [Note] mysqld: ready for connections.\nSlave I\/O thread: connected to master 'rpl_user@192.168.56.203:3306',replication started in log 'FIRST' at position 4<\/pre>\n<p>Finally we check the replication status and the delay.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">$ docker exec -it mariadb-slave-15m mysql -uroot -p -e 'show slave status\\G\u2019\nSlave_IO_State: Waiting for master to send event\nMaster_Host: 192.168.56.203\n...\nSlave_IO_Running: Yes\nSlave_SQL_Running: Yes\n\nSQL_Delay: 900\n...\nSlave_SQL_Running_State: Slave has read all relay log; waiting for the slave I\/O thread to update it<\/pre>\n<h2>Conclusion<\/h2>\n<p>So, set up is now over, we will see in another blog post with a typical case how we can restore efficiently and online from such a situation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mistakes or accidental data deletions can sometimes happen on a productive MariaDB Galera Cluster and this can be disastrous. There are so many cases I have heard by customers and hereafter are some of the most common: &#8211; dropping one column of a table &#8211; dropping one table &#8211; updating a big table without a [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":13420,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[1821],"type_dbi":[],"class_list":["post-13418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-mariadb-galera-cluster-backup-recovery-docker-container"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>How can Docker help a MariaDB cluster for Disaster\/Recovery - dbi 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:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How can Docker help a MariaDB cluster for Disaster\/Recovery\" \/>\n<meta property=\"og:description\" content=\"Mistakes or accidental data deletions can sometimes happen on a productive MariaDB Galera Cluster and this can be disastrous. There are so many cases I have heard by customers and hereafter are some of the most common: &#8211; dropping one column of a table &#8211; dropping one table &#8211; updating a big table without a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-12T09:30:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png\" \/>\n\t<meta property=\"og:image:width\" content=\"850\" \/>\n\t<meta property=\"og:image:height\" content=\"502\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"headline\":\"How can Docker help a MariaDB cluster for Disaster\\\/Recovery\",\"datePublished\":\"2020-02-12T09:30:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/\"},\"wordCount\":719,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/MariaDB_cluster.png\",\"keywords\":[\"MariaDB Galera Cluster backup recovery docker container\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/\",\"name\":\"How can Docker help a MariaDB cluster for Disaster\\\/Recovery - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/MariaDB_cluster.png\",\"datePublished\":\"2020-02-12T09:30:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/MariaDB_cluster.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/MariaDB_cluster.png\",\"width\":850,\"height\":502},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How can Docker help a MariaDB cluster for Disaster\\\/Recovery\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/59554f0d99383431eb6ed427e338952b\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g\",\"caption\":\"Open source Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How can Docker help a MariaDB cluster for Disaster\/Recovery - dbi 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:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/","og_locale":"en_US","og_type":"article","og_title":"How can Docker help a MariaDB cluster for Disaster\/Recovery","og_description":"Mistakes or accidental data deletions can sometimes happen on a productive MariaDB Galera Cluster and this can be disastrous. There are so many cases I have heard by customers and hereafter are some of the most common: &#8211; dropping one column of a table &#8211; dropping one table &#8211; updating a big table without a [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/","og_site_name":"dbi Blog","article_published_time":"2020-02-12T09:30:31+00:00","og_image":[{"width":850,"height":502,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png","type":"image\/png"}],"author":"Open source Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Open source Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"headline":"How can Docker help a MariaDB cluster for Disaster\/Recovery","datePublished":"2020-02-12T09:30:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/"},"wordCount":719,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png","keywords":["MariaDB Galera Cluster backup recovery docker container"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/","url":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/","name":"How can Docker help a MariaDB cluster for Disaster\/Recovery - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png","datePublished":"2020-02-12T09:30:31+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MariaDB_cluster.png","width":850,"height":502},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/how-can-docker-help-a-mariadb-cluster-for-disaster-recovery\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How can Docker help a MariaDB cluster for Disaster\/Recovery"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/59554f0d99383431eb6ed427e338952b","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb4fb12e386e8c41fdef0733e8114594cf2653e4f55e9fa2161442b8eaf3f657?s=96&d=mm&r=g","caption":"Open source Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=13418"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/13420"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13418"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}