
{"id":2951,"date":"2019-04-11T09:28:16","date_gmt":"2019-04-11T08:28:16","guid":{"rendered":"http:\/\/dasini.net\/blog\/?p=2951"},"modified":"2019-09-03T07:37:49","modified_gmt":"2019-09-03T06:37:49","slug":"mysql-innodb-cluster-howto-1-monitor-your-cluster","status":"publish","type":"post","link":"https:\/\/dasini.net\/blog\/2019\/04\/11\/mysql-innodb-cluster-howto-1-monitor-your-cluster\/","title":{"rendered":"MySQL InnoDB Cluster &#8211; HowTo #1 &#8211; Monitor your cluster"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/dasini.net\/blog\/wp-content\/uploads\/Sakila_on_a_Rock_smal_tiles-make_seamless_by_olivier_dasini_800x444.JPG\" alt=\"Sakila HA by Olivier DASINI\"\/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">How do I\u2026 Monitor the status &amp; the configuration of my cluster?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Short answer<\/h3>\n\n\n\n<p>Use:<\/p>\n\n\n\n<p style=\"text-align:left\" class=\"has-medium-font-size\"> <strong><a rel=\"noreferrer noopener\" aria-label=\"status (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/dev\/mysqlsh-api-javascript\/8.0\/classmysqlsh_1_1dba_1_1_cluster.html#af517c5f41a3d1104124b06bad029f423\" target=\"_blank\">status<\/a><\/strong>()<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_7\">Long answer&#8230;<\/h3>\n\n\n\n<p>Assuming you already have a <a rel=\"noreferrer noopener\" aria-label=\"MySQL InnoDB Cluster (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-introduction.html\" target=\"_blank\">MySQL InnoDB Cluster<\/a> up and running. If not, please  <a rel=\"noreferrer noopener\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-userguide.html\" target=\"_blank\">RTFM<\/a> \ud83d\ude42<br>Additionally you can read <a href=\"http:\/\/dasini.net\/blog\/2019\/09\/03\/tutoriel-deployer-mysql-8-0-innodb-cluster-09-2019\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\">this tutorial<\/a> and this <a rel=\"noreferrer noopener\" aria-label=\"article (opens in a new tab)\" href=\"https:\/\/lefred.be\/content\/mysql-innodb-cluster-howto-install-it-from-scratch\/\" target=\"_blank\">article<\/a> from my colleague <a rel=\"noreferrer noopener\" aria-label=\"lefred (opens in a new tab)\" href=\"https:\/\/lefred.be\/\" target=\"_blank\">lefred<\/a> or <a rel=\"noreferrer noopener\" href=\"http:\/\/mysqlhk.blogspot.com\/2019\/05\/mysql-innodb-cluster-setup-on-windows.html\" target=\"_blank\">this one on Windows Platform<\/a> from my colleague <a rel=\"noreferrer noopener\" href=\"http:\/\/mysqlhk.blogspot.com\/\" target=\"_blank\">Ivan<\/a>.  <\/p>\n\n\n\n<p>I&rsquo;m using <a rel=\"noreferrer noopener\" aria-label=\"MySQL (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/downloads\/mysql\/\" target=\"_blank\">MySQL<\/a> 8.0.<strong>15<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL localhost:33060+ JS> session.sql('SELECT VERSION()')\n+-----------+\n| VERSION() |\n+-----------+\n| 8.0.15    |\n+-----------+<\/code><\/pre>\n\n\n\n<p>Let&rsquo;s connect to my cluster<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh root@localhost --cluster\n\nPlease provide the password for 'root@localhost': ****\nMySQL Shell 8.0.15\n\nCopyright (c) 2016, 2019, Oracle and\/or its affiliates. All rights reserved.\nOracle is a registered trademark of Oracle Corporation and\/or its affiliates.\nOther names may be trademarks of their respective owners.\n\nType '\\help' or '\\?' for help; '\\quit' to exit.\nCreating a session to 'root@localhost'\nFetching schema names for autocompletion... Press ^C to stop.\nYour MySQL connection id is 1520 (X protocol)\nServer version: 8.0.15 MySQL Community Server - GPL\nNo default schema selected; type \\use &lt;schema> to set one.\nYou are connected to a member of cluster 'pocCluster'.\nVariable 'cluster' is set.\nUse cluster.status() in scripting mode to get status of this cluster or cluster.help() for more commands.<\/code><\/pre>\n\n\n\n<p>The \u00ab\u00a0<strong>&#8211; &#8211; cluster<\/strong>\u00a0\u00bb argument enables cluster management by setting the  global variable.<br> This variable is a reference to the MySQL InnoDB Cluster object session. It will give you access (among others) to the status() method that allows you to check and monitor the cluster.<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Ask for help<\/h3>\n\n\n\n<p>The built-in help is simply awesome!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL localhost:33060+ JS> cluster.help('status')\nNAME\n      status - Describe the status of the cluster.\n\nSYNTAX\n      &lt;Cluster>.status([options])\n\nWHERE\n      options: Dictionary with options.\n\nRETURNS\n       A JSON object describing the status of the cluster.\n\nDESCRIPTION\n      This function describes the status of the cluster including its\n      ReplicaSets and Instances. The following options may be given to control\n      the amount of information gathered and returned.\n\n      - extended: if true, includes information about transactions processed by\n        connection and applier, as well as groupName and memberId values.\n      - queryMembers: if true, connect to each Instance of the ReplicaSets to\n        query for more detailed stats about the replication machinery.\n\nEXCEPTIONS\n      MetadataError in the following scenarios:\n\n      - If the Metadata is inaccessible.\n      - If the Metadata update operation failed.<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Cluster status<\/h3>\n\n\n\n<p>So let&rsquo;s discover the status of our cluster<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL localhost:33060+ JS> cluster.status()\n{\n    \"clusterName\": \"pocCluster\", \n    \"defaultReplicaSet\": {\n        \"name\": \"default\", \n        \"primary\": \"172.19.0.11:3306\", \n        \"ssl\": \"REQUIRED\", \n        \"status\": \"OK\", \n        \"statusText\": \"Cluster is ONLINE and can tolerate up to ONE failure.\", \n        \"topology\": {\n            \"172.19.0.11:3306\": {\n                \"address\": \"172.19.0.11:3306\", \n                \"mode\": \"R\/W\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\"\n            }, \n            \"172.19.0.12:3306\": {\n                \"address\": \"172.19.0.12:3306\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\"\n            }, \n            \"172.19.0.13:3306\": {\n                \"address\": \"172.19.0.13:3306\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\"\n            }\n        }, \n        \"topologyMode\": \"Single-Primary\"\n    }, \n    \"groupInformationSourceMember\": \"172.19.0.11:3306\"\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><u>Note<\/u>:<br> The instance&rsquo;s state in the cluster directly influences the information provided in the status report. Therefore ensure the instance you are connected to has a status of <strong>ONLINE<\/strong>.<\/p><\/blockquote>\n\n\n\n<p>As you can see, by default status() gives you a lot of relevant information.<br> Thus it could be used to monitor your cluster although the best tool available to monitor your MySQL InnoDB Cluster (but also <a rel=\"noreferrer noopener\" aria-label=\"MySQL Replication (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/replication.html\" target=\"_blank\">MySQL Replication<\/a>, <a rel=\"noreferrer noopener\" aria-label=\"MySQL NDB Cluster (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-cluster.html\" target=\"_blank\">MySQL NDB Cluster<\/a> and obviously your standalone MySQL servers) is <a rel=\"noreferrer noopener\" aria-label=\"MySQL Enterprise Monitor (opens in a new tab)\" href=\"https:\/\/www.mysql.com\/products\/enterprise\/monitor.html\" target=\"_blank\"><strong>MySQL Enterprise Monitor<\/strong><\/a>. <\/p>\n\n\n\n<p>More details with \u00ab\u00a0<a href=\"https:\/\/www.mysql.com\/why-mysql\/white-papers\/a-guide-to-mysql-enterprise-monitor\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"A Guide to MySQL Enterprise Monitor (opens in a new tab)\">A Guide to MySQL Enterprise Monitor<\/a>\u00ab\u00a0.<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Extended cluster status<\/h3>\n\n\n\n<p>MySQL Group Replication provides several metrics and detailed information about the underlying cluster in MySQL InnoDB clusters. <br>These metrics which are used for monitoring are based on these <a rel=\"noreferrer noopener\" aria-label=\"Performance Schema tables (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/performance-schema-replication-tables.html\" target=\"_blank\">Performance Schema tables<\/a>.<\/p>\n\n\n\n<p>Some of these information are available through <a rel=\"noreferrer noopener\" aria-label=\"MySQL Shell (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/downloads\/shell\/\" target=\"_blank\"><strong>MySQL Shell<\/strong><\/a>. You can control the amount of information gathered and returned with 2 options: <strong><em>extended<\/em><\/strong> &amp; <strong><em>queryMembers<\/em><\/strong>.<\/p>\n\n\n\n\n\n<h4 class=\"wp-block-heading\">extended<\/h4>\n\n\n\n<p>if enabled, includes information about groupName and memberID for each member; and general statistics about the number of transactions checked, proposed, rejected by members\u2026<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL localhost:33060+ JS> cluster.status({extended:true})\n{\n    \"clusterName\": \"pocCluster\", \n    \"defaultReplicaSet\": {\n        \"groupName\": \"72568575-561c-11e9-914c-0242ac13000b\", \n        \"name\": \"default\", \n        \"primary\": \"172.19.0.11:3306\", \n        \"ssl\": \"REQUIRED\", \n        \"status\": \"OK\", \n        \"statusText\": \"Cluster is ONLINE and can tolerate up to ONE failure.\", \n        \"topology\": {\n            \"172.19.0.11:3306\": {\n                \"address\": \"172.19.0.11:3306\", \n                \"memberId\": \"4a85f6c4-561c-11e9-8401-0242ac13000b\", \n                \"mode\": \"R\/W\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"appliedCount\": 2, \n                    \"checkedCount\": 53, \n                    \"committedAllMembers\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-51\", \n                    \"conflictsDetectedCount\": 0, \n                    \"inApplierQueueCount\": 0, \n                    \"inQueueCount\": 0, \n                    \"lastConflictFree\": \"72568575-561c-11e9-914c-0242ac13000b:56\", \n                    \"proposedCount\": 53, \n                    \"rollbackCount\": 0\n                }\n            }, \n            \"172.19.0.12:3306\": {\n                \"address\": \"172.19.0.12:3306\", \n                \"memberId\": \"4ad75450-561c-11e9-baa8-0242ac13000c\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"appliedCount\": 44, \n                    \"checkedCount\": 43, \n                    \"committedAllMembers\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-41\", \n                    \"conflictsDetectedCount\": 0, \n                    \"inApplierQueueCount\": 0, \n                    \"inQueueCount\": 0, \n                    \"lastConflictFree\": \"72568575-561c-11e9-914c-0242ac13000b:52\", \n                    \"proposedCount\": 0, \n                    \"rollbackCount\": 0\n                }\n            }, \n            \"172.19.0.13:3306\": {\n                \"address\": \"172.19.0.13:3306\", \n                \"memberId\": \"4b77c1ec-561c-11e9-9cc1-0242ac13000d\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"appliedCount\": 42, \n                    \"checkedCount\": 42, \n                    \"committedAllMembers\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-41\", \n                    \"conflictsDetectedCount\": 0, \n                    \"inApplierQueueCount\": 0, \n                    \"inQueueCount\": 0, \n                    \"lastConflictFree\": \"72568575-561c-11e9-914c-0242ac13000b:53\", \n                    \"proposedCount\": 0, \n                    \"rollbackCount\": 0\n                }\n            }\n        }, \n        \"topologyMode\": \"Single-Primary\"\n    }, \n    \"groupInformationSourceMember\": \"172.19.0.11:3306\"\n}<\/code><\/pre>\n\n\n\n\n\n<h4 class=\"wp-block-heading\">queryMembers<\/h4>\n\n\n\n<p>if enabled, includes information about recovery and regular transaction I\/O, applier worker thread statistic and any lags; applier coordinator statistic\u2026<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL localhost:33060+ JS> cluster.status({queryMembers:true})\n{\n    \"clusterName\": \"pocCluster\", \n    \"defaultReplicaSet\": {\n        \"name\": \"default\", \n        \"primary\": \"172.19.0.11:3306\", \n        \"ssl\": \"REQUIRED\", \n        \"status\": \"OK\", \n        \"statusText\": \"Cluster is ONLINE and can tolerate up to ONE failure.\", \n        \"topology\": {\n            \"172.19.0.11:3306\": {\n                \"address\": \"172.19.0.11:3306\", \n                \"mode\": \"R\/W\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"connection\": {\n                        \"lastHeartbeatTimestamp\": \"\", \n                        \"lastQueued\": {\n                            \"endTimestamp\": \"2019-04-03 14:26:33.394755\", \n                            \"immediateCommitTimestamp\": \"\", \n                            \"immediateCommitToEndTime\": null, \n                            \"originalCommitTimestamp\": \"\", \n                            \"originalCommitToEndTime\": null, \n                            \"queueTime\": 0.000077, \n                            \"startTimestamp\": \"2019-04-03 14:26:33.394678\", \n                            \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:13\"\n                        }, \n                        \"receivedHeartbeats\": 0, \n                        \"receivedTransactionSet\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-65\", \n                        \"threadId\": null\n                    }, \n                    \"workers\": [\n                        {\n                            \"lastApplied\": {\n                                \"applyTime\": 0.022927, \n                                \"endTimestamp\": \"2019-04-03 14:26:33.417643\", \n                                \"immediateCommitTimestamp\": \"\", \n                                \"immediateCommitToEndTime\": null, \n                                \"originalCommitTimestamp\": \"\", \n                                \"originalCommitToEndTime\": null, \n                                \"retries\": 0, \n                                \"startTimestamp\": \"2019-04-03 14:26:33.394716\", \n                                \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:13\"\n                            }, \n                            \"threadId\": 58\n                        }\n                    ]\n                }\n            }, \n            \"172.19.0.12:3306\": {\n                \"address\": \"172.19.0.12:3306\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"connection\": {\n                        \"lastHeartbeatTimestamp\": \"\", \n                        \"lastQueued\": {\n                            \"endTimestamp\": \"2019-04-03 15:42:30.855989\", \n                            \"immediateCommitTimestamp\": \"\", \n                            \"immediateCommitToEndTime\": null, \n                            \"originalCommitTimestamp\": \"2019-04-03 15:42:30.854594\", \n                            \"originalCommitToEndTime\": 0.001395, \n                            \"queueTime\": 0.000476, \n                            \"startTimestamp\": \"2019-04-03 15:42:30.855513\", \n                            \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:65\"\n                        }, \n                        \"receivedHeartbeats\": 0, \n                        \"receivedTransactionSet\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-65\", \n                        \"threadId\": null\n                    }, \n                    \"workers\": [\n                        {\n                            \"lastApplied\": {\n                                \"applyTime\": 0.024685, \n                                \"endTimestamp\": \"2019-04-03 15:42:30.880361\", \n                                \"immediateCommitTimestamp\": \"\", \n                                \"immediateCommitToEndTime\": null, \n                                \"originalCommitTimestamp\": \"2019-04-03 15:42:30.854594\", \n                                \"originalCommitToEndTime\": 0.025767, \n                                \"retries\": 0, \n                                \"startTimestamp\": \"2019-04-03 15:42:30.855676\", \n                                \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:65\"\n                            }, \n                            \"threadId\": 54\n                        }\n                    ]\n                }\n            }, \n            \"172.19.0.13:3306\": {\n                \"address\": \"172.19.0.13:3306\", \n                \"mode\": \"R\/O\", \n                \"readReplicas\": {}, \n                \"role\": \"HA\", \n                \"status\": \"ONLINE\", \n                \"transactions\": {\n                    \"connection\": {\n                        \"lastHeartbeatTimestamp\": \"\", \n                        \"lastQueued\": {\n                            \"endTimestamp\": \"2019-04-03 15:42:30.855678\", \n                            \"immediateCommitTimestamp\": \"\", \n                            \"immediateCommitToEndTime\": null, \n                            \"originalCommitTimestamp\": \"2019-04-03 15:42:30.854594\", \n                            \"originalCommitToEndTime\": 0.001084, \n                            \"queueTime\": 0.000171, \n                            \"startTimestamp\": \"2019-04-03 15:42:30.855507\", \n                            \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:65\"\n                        }, \n                        \"receivedHeartbeats\": 0, \n                        \"receivedTransactionSet\": \"4a85f6c4-561c-11e9-8401-0242ac13000b:1-12,\n72568575-561c-11e9-914c-0242ac13000b:1-65\", \n                        \"threadId\": null\n                    }, \n                    \"workers\": [\n                        {\n                            \"lastApplied\": {\n                                \"applyTime\": 0.021354, \n                                \"endTimestamp\": \"2019-04-03 15:42:30.877398\", \n                                \"immediateCommitTimestamp\": \"\", \n                                \"immediateCommitToEndTime\": null, \n                                \"originalCommitTimestamp\": \"2019-04-03 15:42:30.854594\", \n                                \"originalCommitToEndTime\": 0.022804, \n                                \"retries\": 0, \n                                \"startTimestamp\": \"2019-04-03 15:42:30.856044\", \n                                \"transaction\": \"72568575-561c-11e9-914c-0242ac13000b:65\"\n                            }, \n                            \"threadId\": 54\n                        }\n                    ]\n                }\n            }\n        }, \n        \"topologyMode\": \"Single-Primary\"\n    }, \n    \"groupInformationSourceMember\": \"172.19.0.11:3306\"\n}<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">To summarize<\/h3>\n\n\n\n<p>Q: How do I monitor the status &amp; the configuration of my cluster?<br><br>A: Use <em><strong>status()<\/strong><\/em> or <strong><em>status({extended:true})<\/em><\/strong> or <strong><em>status({queryMembers:true})<\/em><\/strong><\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">References<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" aria-label=\"status (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/dev\/mysqlsh-api-javascript\/8.0\/classmysqlsh_1_1dba_1_1_cluster.html#af517c5f41a3d1104124b06bad029f423\" target=\"_blank\">status<\/a>() method<\/li><li> <a rel=\"noreferrer noopener\" aria-label=\"Working with InnoDB Cluster (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-working-with-cluster.html#check-innodb-cluster-status\" target=\"_blank\">Working with InnoDB Cluster<\/a> <\/li><li><a rel=\"noreferrer noopener\" aria-label=\"Working with InnoDB Cluster (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-working-with-cluster.html#check-innodb-cluster-status\" target=\"_blank\"> Checking a cluster&rsquo;s Status with Cluster.status<\/a>()  <\/li><li><a rel=\"noreferrer noopener\" aria-label=\" MySQL InnoDB Cluster \u2013 Extended cluster information and rescan (opens in a new tab)\" href=\"https:\/\/mysqlserverteam.com\/mysql-innodb-cluster-extended-cluster-information-and-rescan\/\" target=\"_blank\"> MySQL InnoDB Cluster \u2013 Extended cluster information and rescan<\/a>  <\/li><li><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/performance-schema-replication-tables.html\"> Performance Schema Replication Tables<\/a>  <\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-userguide.html\" target=\"_blank\">MySQL InnoDB Cluster<\/a> <\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/group-replication.html\" target=\"_blank\">MySQL Group Replication<\/a> <\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/dev.mysql.com\/doc\/mysql-shell\/8.0\/en\/\" target=\"_blank\">MySQL Shell<\/a> <\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/dev.mysql.com\/doc\/mysql-router\/8.0\/en\/\" target=\"_blank\">MySQL Router<\/a> <\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/dasini.net\/blog\/2019\/09\/03\/tutoriel-deployer-mysql-8-0-innodb-cluster-09-2019\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\">Tutoriel \u2013 D\u00e9ployer MySQL 8.0 InnoDB Cluster (09-2019)<\/a><\/li><li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"http:\/\/dasini.net\/blog\/2019\/04\/11\/mysql-innodb-cluster-howto-1-monitor-your-cluster\/\" target=\"_blank\">MySQL InnoDB Cluster \u2013 HowTo #1 \u2013 Monitor your cluster<\/a><\/li><li><a rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"http:\/\/dasini.net\/blog\/2019\/05\/21\/mysql-innodb-cluster-howto-2-validate-an-instance\/\" target=\"_blank\">MySQL InnoDB Cluster \u2013 HowTo #2 \u2013 Validate an instance<\/a> <\/li><\/ul>\n\n\n\n\n\n<div style=\"height:75px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\"><strong>Thanks for using MySQL!<\/strong><\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/groups\/12524512\/\" target=\"_blank\" rel=\"noopener\" title=\"Olivier DASINI on Linkedin\">Follow me on Linkedin<\/a><\/p>\n\n\n\n<p>Watch my videos on my <a href=\"https:\/\/www.youtube.com\/channel\/UC12TulyJsJZHoCmby3Nm3WQ\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Olivier's MySQL Channel\">YouTube channel<\/a> and <a href=\"https:\/\/www.youtube.com\/channel\/UC12TulyJsJZHoCmby3Nm3WQ\/?sub_confirmation=1\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Subscribe\">subscribe<\/a>.<\/p>\n\n\n\n<p>My <a href=\"https:\/\/www.slideshare.net\/freshdaz\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Olivier DASINI on Slideshare\">Slideshare account<\/a>.<\/p>\n\n\n\n<p>My <a href=\"https:\/\/speakerdeck.com\/freshdaz\/\" target=\"_blank\" rel=\"noreferrer noopener\" title=\"Olivier DASINI on Speaker Deck\">Speaker Deck account<\/a>.<\/p>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\"><strong>Thanks for using HeatWave &amp; MySQL!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MySQL InnoDB Cluster &#8211; HowTo #1 &#8211; Monitor your cluster<\/p>\n<p>Q: How do I monitor the status &#038; the configuration of my cluster?<\/p>\n<p>A: Use status() or status({extended:true}) or status({queryMembers:true})?<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[351,355,203],"tags":[343],"class_list":["post-2951","post","type-post","status-publish","format-standard","hentry","category-group-replication-en","category-high-availability","category-mysql-en","tag-group-replication-en"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9LfWW-LB","jetpack-related-posts":[{"id":3086,"url":"https:\/\/dasini.net\/blog\/2019\/05\/21\/mysql-innodb-cluster-howto-2-validate-an-instance\/","url_meta":{"origin":2951,"position":0},"title":"MySQL InnoDB Cluster &#8211; HowTo #2 &#8211; Validate an instance","author":"Olivier DASINI","date":"21 mai 2019","format":false,"excerpt":"Q: Validate an instance for MySQL InnoDB Cluster usage? A: Use check_instance_configuration()","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3193,"url":"https:\/\/dasini.net\/blog\/2019\/07\/09\/mysql-innodb-cluster-recovering-and-provisioning-with-mysqldump\/","url_meta":{"origin":2951,"position":1},"title":"MySQL InnoDB Cluster &#8211;  Recovering and provisioning with mysqldump","author":"Olivier DASINI","date":"9 juillet 2019","format":false,"excerpt":"As the administrator of a cluster, among other tasks, you should be able to restore failed nodes and grow (or shrink) your cluster by adding (or removing) new nodes. In MySQL, as a backup tool (and if your amount of data is not too big), you can use mysqldump a\u2026","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3219,"url":"https:\/\/dasini.net\/blog\/2019\/07\/11\/mysql-innodb-cluster-recovering-and-provisioning-with-mysql-enterprise-backup\/","url_meta":{"origin":2951,"position":2},"title":"MySQL InnoDB Cluster &#8211; Recovering and provisioning with MySQL Enterprise Backup","author":"Olivier DASINI","date":"11 juillet 2019","format":false,"excerpt":"Like I stated in my previous article - MySQL InnoDB Cluster - Recovering and provisioning with mysqldump : \"As the administrator of a cluster, among others tasks, you should be able to restore failed nodes and to add (or remove) new nodes\". Well, I still agree with myself :) MySQL\u2026","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3360,"url":"https:\/\/dasini.net\/blog\/2019\/09\/10\/mysql-innodb-cluster-easy-recovering-and-provisioning\/","url_meta":{"origin":2951,"position":3},"title":"MySQL InnoDB Cluster &#8211; Easy Recovering and provisioning","author":"Olivier DASINI","date":"10 septembre 2019","format":false,"excerpt":"Up to MySQL 8.0.16, to perform these tasks you could: - Use MySQL Enterprise Backup : - Use mysqldump Starting with MySQL 8.0.17, the easiest and recommended method is to use the CLONE feature.","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3852,"url":"https:\/\/dasini.net\/blog\/2020\/11\/05\/automatic-connection-failover-for-asynchronous-replication\/","url_meta":{"origin":2951,"position":4},"title":"Automatic connection failover for Asynchronous Replication","author":"Olivier DASINI","date":"5 novembre 2020","format":false,"excerpt":"Since MySQL 8.0.22 there is a mechanism in asynchronous replication that makes the receiver automatically try to re-establish an asynchronous replication connection to another sender, in case the current connection gets interrupted due to the failure of the current sender.","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2090,"url":"https:\/\/dasini.net\/blog\/2018\/01\/09\/setting-up-proxysql-1-4-with-mysql-5-7-group-replication\/","url_meta":{"origin":2951,"position":5},"title":"Setting up ProxySQL 1.4 with MySQL 5.7 Group Replication","author":"Olivier DASINI","date":"9 janvier 2018","format":false,"excerpt":"There are 3\u00a0pillars for a database architecture: Monitoring, Backup \/ Restore process, High Availability This blog post is about database High Availability; more precisely about one of the best combo of the moment : MySQL 5.7 Group Replication\u00a0: the only native HA solution for MySQL, it's a\u00a0Single\/Multi-master update everywhere replication\u2026","rel":"","context":"Dans &quot;Group Replication&quot;","block_context":{"text":"Group Replication","link":"https:\/\/dasini.net\/blog\/category\/group-replication-en\/"},"img":{"alt_text":"MySQL","src":"https:\/\/i0.wp.com\/dasini.net\/blog\/wp-content\/uploads\/mysql_300x161.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/2951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/comments?post=2951"}],"version-history":[{"count":24,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/2951\/revisions"}],"predecessor-version":[{"id":3412,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/2951\/revisions\/3412"}],"wp:attachment":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/media?parent=2951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/categories?post=2951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/tags?post=2951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}