
{"id":3086,"date":"2019-05-21T09:18:04","date_gmt":"2019-05-21T08:18:04","guid":{"rendered":"http:\/\/dasini.net\/blog\/?p=3086"},"modified":"2019-09-03T07:36:16","modified_gmt":"2019-09-03T06:36:16","slug":"mysql-innodb-cluster-howto-2-validate-an-instance","status":"publish","type":"post","link":"https:\/\/dasini.net\/blog\/2019\/05\/21\/mysql-innodb-cluster-howto-2-validate-an-instance\/","title":{"rendered":"MySQL InnoDB Cluster &#8211; HowTo #2 &#8211; Validate an instance"},"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\" id=\"mce_0\">How do I\u2026 Validate an instance for MySQL InnoDB Cluster usage?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_1\">Short answer<\/h3>\n\n\n\n<p>Use:<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><a href=\"https:\/\/dev.mysql.com\/doc\/dev\/mysqlsh-api-javascript\/8.0\/classmysqlsh_1_1dba_1_1_dba.html#aef7387e5a7be5b449af2559bb4e66099\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"checkInstanceConfiguration (opens in a new tab)\">checkInstanceConfiguration<\/a>()<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_4\">Long answer&#8230;<\/h3>\n\n\n\n<p>In this article I assuming you already know what is <a rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/group-replication.html\" target=\"_blank\">MySQL Group Replication<\/a> &amp; <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-userguide.html\" target=\"_blank\">MySQL InnoDB Cluster<\/a>.<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\" href=\"https:\/\/lefred.be\/content\/mysql-innodb-cluster-howto-install-it-from-scratch\/\" target=\"_blank\">article<\/a> from my colleague <a rel=\"noreferrer noopener\" href=\"https:\/\/lefred.be\/\" target=\"_blank\">lefred<\/a> or <a rel=\"noreferrer noopener\" aria-label=\"this one on Windows Platform (opens in a new tab)\" 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\" aria-label=\"Ivan (opens in a new tab)\" href=\"http:\/\/mysqlhk.blogspot.com\/\" target=\"_blank\">Ivan<\/a>. <\/p>\n\n\n\n<p>During the cluster creation process or when you want to add a node to a running cluster, the chosen MySQL instance must be <strong>valid for an InnoDB Cluster<\/strong> usage. <br>That is, be compliant with <a rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/group-replication-requirements.html\" target=\"_blank\">Group Replication <\/a><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/group-replication-requirements.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"r (s\u2019ouvre dans un nouvel onglet)\">r<\/a><a rel=\"noreferrer noopener\" aria-label=\" (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/group-replication-requirements.html\" target=\"_blank\">equirements<\/a>.<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\"MySQL Shell (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/mysql-shell\/8.0\/en\/\" target=\"_blank\">MySQL Shell<\/a> provide a simple and easy way to check if your instance is valid: <a rel=\"noreferrer noopener\" aria-label=\"checkInstanceConfiguration (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/dev\/mysqlsh-api-javascript\/8.0\/classmysqlsh_1_1dba_1_1_dba.html#aef7387e5a7be5b449af2559bb4e66099\" target=\"_blank\">checkInstanceConfiguration<\/a>()<\/p>\n\n\n\n<p>I&rsquo;m using <a href=\"https:\/\/dev.mysql.com\/downloads\/shell\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"MySQL Shell (opens in a new tab)\">MySQL Shell<\/a> 8.0.<strong>16<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh\nMySQL Shell 8.0.16\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.\n\nMySQL JS> <\/code><\/pre>\n\n\n\n<p>In this scenario my cluster is not created yet. However the logic would have been the same for adding a node to a running cluster.<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_7\">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 JS> dba.help('checkInstanceConfiguration')\nNAME\n      checkInstanceConfiguration - Validates an instance for MySQL InnoDB\n                                   Cluster usage.\n\nSYNTAX\n      dba.checkInstanceConfiguration(instance[, options])\n\nWHERE\n      instance: An instance definition.\n      options: Data for the operation.\n\nRETURNS\n       A descriptive text of the operation result.\n\nDESCRIPTION\n      This function reviews the instance configuration to identify if it is\n      valid for usage with group replication. Use this to check for possible\n      configuration issues on MySQL instances before creating a cluster with\n      them or adding them to an existing cluster.\n\n      The instance definition is the connection data for the instance.\n\n      For additional information on connection data use \\? connection.\n\n      Only TCP\/IP connections are allowed for this function.\n\n      The options dictionary may contain the following options:\n\n      - mycnfPath: Optional path to the MySQL configuration file for the\n        instance. Alias for verifyMyCnf\n      - verifyMyCnf: Optional path to the MySQL configuration file for the\n        instance. If this option is given, the configuration file will be\n        verified for the expected option values, in addition to the global\n        MySQL system variables.\n      - password: The password to get connected to the instance.\n      - interactive: boolean value used to disable the wizards in the command\n        execution, i.e. prompts are not provided to the user and confirmation\n        prompts are not shown.\n\n      The connection password may be contained on the instance definition,\n      however, it can be overwritten if it is specified on the options.\n\n      The returned descriptive text of the operation result indicates whether\n      the instance is valid for InnoDB Cluster usage or not. If not, a table\n      containing the following information is presented:\n\n      - Variable: the invalid configuration variable.\n      - Current Value: the current value for the invalid configuration\n        variable.\n      - Required Value: the required value for the configuration variable.\n      - Note: the action to be taken.\n\n      The note can be one of the following:\n\n      - Update the config file and update or restart the server variable.\n      - Update the config file and restart the server.\n      - Update the config file.\n      - Update the server variable.\n      - Restart the server.\n\nEXCEPTIONS\n      ArgumentError in the following scenarios:\n\n      - If the instance parameter is empty.\n      - If the instance definition is invalid.\n      - If the instance definition is a connection dictionary but empty.\n\n      RuntimeError in the following scenarios:\n\n      - If the instance accounts are invalid.\n      - If the instance is offline.\n      - If the instance is already part of a Replication Group.\n      - If the instance is already part of an InnoDB Cluster.\n      - If the given the instance cannot be used for Group Replication.<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mce_9\">Check Instance Configuration<\/h3>\n\n\n\n<p>In order to check a MySQL instance I must connect to that instance, either by connecting to that instance with MySQL Shell or by providing the connection data to the function:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL JS> dba.checkInstanceConfiguration('root@172.20.0.11')\nValidating MySQL instance at 172.20.0.11:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node1\n\nChecking whether existing tables comply with Group Replication requirements...\nWARNING: The following tables do not have a Primary Key or equivalent column: \ntest.squares, test.people, test.animal\n\nGroup Replication requires tables to use InnoDB and have a PRIMARY KEY or PRIMARY KEY Equivalent (non-null unique key). Tables that do not follow these requirements will be readable but not updateable when used with Group Replication. If your applications make updates (INSERT, UPDATE or DELETE) to these tables, ensure they use the InnoDB storage engine and have a PRIMARY KEY or PRIMARY KEY Equivalent.\n\nChecking instance configuration...\n\nSome configuration options need to be fixed:\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| Variable                 | Current Value | Required Value | Note                                             |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| binlog_checksum          | CRC32         | NONE           | Update the server variable                       |\n| enforce_gtid_consistency | OFF           | ON             | Update read-only variable and restart the server |\n| gtid_mode                | OFF           | ON             | Update read-only variable and restart the server |\n| server_id                | 1             | &lt;unique ID>    | Update read-only variable and restart the server |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n\nSome variables need to be changed, but cannot be done dynamically on the server.\nPlease use the dba.configureInstance() command to repair these issues.\n\n{\n    \"config_errors\": [\n        {\n            \"action\": \"server_update\", \n            \"current\": \"CRC32\", \n            \"option\": \"binlog_checksum\", \n            \"required\": \"NONE\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"OFF\", \n            \"option\": \"enforce_gtid_consistency\", \n            \"required\": \"ON\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"OFF\", \n            \"option\": \"gtid_mode\", \n            \"required\": \"ON\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"1\", \n            \"option\": \"server_id\", \n            \"required\": \"&lt;unique ID>\"\n        }\n    ], \n    \"status\": \"error\"\n}<\/code><\/pre>\n\n\n\n<p>The output depends on the instance current status.<br>In my case 3 tables do not meet the requirements because of lack of Primary key (or non-null unique key).<br>Also I need to set correctly 4 variables and I must restart the MySQL instance because of 3 of them.<\/p>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Automation<\/h3>\n\n\n\n<p>It is not always convenient (or recommended) to do these kind of task manually. <br>MySQL Shell is built in regards to <a rel=\"noreferrer noopener\" aria-label=\"DevOps usage (opens in a new tab)\" href=\"https:\/\/mysqlserverteam.com\/mysql-shell-api-command-line-integration-for-devops\/\" target=\"_blank\">DevOps usage<\/a> : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh -e \"dba.checkInstanceConfiguration('root@172.20.0.12')\"\nValidating MySQL instance at 172.20.0.12:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node2\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\n\nSome configuration options need to be fixed:\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| Variable                 | Current Value | Required Value | Note                                             |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| binlog_checksum          | CRC32         | NONE           | Update the server variable                       |\n| enforce_gtid_consistency | OFF           | ON             | Update read-only variable and restart the server |\n| gtid_mode                | OFF           | ON             | Update read-only variable and restart the server |\n| server_id                | 1             | &lt;unique ID>    | Update read-only variable and restart the server |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n\nSome variables need to be changed, but cannot be done dynamically on the server.\nPlease use the dba.configureInstance() command to repair these issues.<\/code><\/pre>\n\n\n\n<p>Or even <strong>more practical<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh -- dba checkInstanceConfiguration --user=root --host=172.20.0.13\nValidating MySQL instance at 172.20.0.13:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node3\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\n\nSome configuration options need to be fixed:\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| Variable                 | Current Value | Required Value | Note                                             |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n| binlog_checksum          | CRC32         | NONE           | Update the server variable                       |\n| enforce_gtid_consistency | OFF           | ON             | Update read-only variable and restart the server |\n| gtid_mode                | OFF           | ON             | Update read-only variable and restart the server |\n| server_id                | 1             | &lt;unique ID>    | Update read-only variable and restart the server |\n+--------------------------+---------------+----------------+--------------------------------------------------+\n\nSome variables need to be changed, but cannot be done dynamically on the server.\nPlease use the dba.configureInstance() command to repair these issues.\n\n{\n    \"config_errors\": [\n        {\n            \"action\": \"server_update\", \n            \"current\": \"CRC32\", \n            \"option\": \"binlog_checksum\", \n            \"required\": \"NONE\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"OFF\", \n            \"option\": \"enforce_gtid_consistency\", \n            \"required\": \"ON\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"OFF\", \n            \"option\": \"gtid_mode\", \n            \"required\": \"ON\"\n        }, \n        {\n            \"action\": \"restart\", \n            \"current\": \"1\", \n            \"option\": \"server_id\", \n            \"required\": \"&lt;unique ID>\"\n        }\n    ], \n    \"status\": \"error\"\n}<\/code><\/pre>\n\n\n\n<p>An other option is to create a script and pass it to MySQL Shell.<br>A very simple (and naive) example could be:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat \/tmp\/servers.js\ndba.checkInstanceConfiguration('root@172.20.0.11');\ndba.checkInstanceConfiguration('root@172.20.0.12');\ndba.checkInstanceConfiguration('root@172.20.0.13');<\/code><\/pre>\n\n\n\n<p>then process the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh  -f \/tmp\/servers.js\nValidating MySQL instance at 172.20.0.11:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node1\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\nInstance configuration is compatible with InnoDB cluster\n\nThe instance '172.20.0.11:3306' is valid for InnoDB cluster usage.\n\nValidating MySQL instance at 172.20.0.12:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node2\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\nInstance configuration is compatible with InnoDB cluster\n\nThe instance '172.20.0.12:3306' is valid for InnoDB cluster usage.\n\nValidating MySQL instance at 172.20.0.13:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node3\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\nInstance configuration is compatible with InnoDB cluster\n\nThe instance '172.20.0.13:3306' is valid for InnoDB cluster usage.<\/code><\/pre>\n\n\n\n<p>In the previous scenario all the MySQL instances was set properly before the check.<br><br><\/p>\n\n\n\n<p>Note that all that has been done previously in <strong>Javascript<\/strong> can also be done in <strong>Python<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL 172.20.0.11:33060+ JS> \\py\nSwitching to Python mode...\n\nMySQL 172.20.0.11:33060+ Py> dba.check_instance_configuration()\nValidating MySQL instance at 172.20.0.11:3306 for use in an InnoDB cluster...\n\nThis instance reports its own address as mysql_node1\n\nChecking whether existing tables comply with Group Replication requirements...\nNo incompatible tables detected\n\nChecking instance configuration...\nInstance configuration is compatible with InnoDB cluster\n\nThe instance '172.20.0.11:3306' is valid for InnoDB cluster usage.\n\n{\n    \"status\": \"ok\"\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mysqlsh root@172.20.0.11 --py -f check_servers.py\n...<\/code><\/pre>\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mce_10\">To summarize<\/h2>\n\n\n\n<p>Q: How do I validate an instance for MySQL InnoDB Cluster usage?<br><br>A: Use <strong>check_instance_configuration<\/strong><em><strong>()<\/strong><\/em> <\/p>\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"mce_0\">References<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a rel=\"noreferrer noopener\" aria-label=\"checkInstanceConfiguration (opens in a new tab)\" href=\"https:\/\/dev.mysql.com\/doc\/dev\/mysqlsh-api-javascript\/8.0\/classmysqlsh_1_1dba_1_1_dba.html#aef7387e5a7be5b449af2559bb4e66099\" target=\"_blank\">checkInstanceConfiguration<\/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> Using <a href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/mysql-innodb-cluster-working-with-cluster.html#check-instance-configuration\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"dba.checkInstanceConfiguration (opens in a new tab)\">dba.checkInstanceConfiguration<\/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>Q: Validate an instance for MySQL InnoDB Cluster usage?<\/p>\n<p>A: Use check_instance_configuration() <\/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-3086","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-NM","jetpack-related-posts":[{"id":2951,"url":"https:\/\/dasini.net\/blog\/2019\/04\/11\/mysql-innodb-cluster-howto-1-monitor-your-cluster\/","url_meta":{"origin":3086,"position":0},"title":"MySQL InnoDB Cluster &#8211; HowTo #1 &#8211; Monitor your cluster","author":"Olivier DASINI","date":"11 avril 2019","format":false,"excerpt":"MySQL InnoDB Cluster - HowTo #1 - Monitor your cluster Q: How do I monitor the status & the configuration of my cluster? A: Use status() or status({extended:true}) or status({queryMembers:true})?","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":3086,"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":3086,"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":3086,"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":3086,"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":3086,"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\/3086","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=3086"}],"version-history":[{"count":33,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/3086\/revisions"}],"predecessor-version":[{"id":3411,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/3086\/revisions\/3411"}],"wp:attachment":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/media?parent=3086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/categories?post=3086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/tags?post=3086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}