Bug #84121 cluster.addInstance fails when adding a mysql server with SSL support disabled
Submitted: 8 Dec 2016 17:38 Modified: 9 Dec 2016 6:39
Reporter: Eduardo Alapisco Arambula Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Document Store: MySQL Shell Severity:S2 (Serious)
Version:1.0.6 OS:Windows (Server 2012)
Assigned to: CPU Architecture:Any
Tags: sysqa_mysqlHA

[8 Dec 2016 17:38] Eduardo Alapisco Arambula
Description:
cluster.addInstance fails when adding a mysql server with SSL support disabled

Example: 

mysql-js> cluster.addInstance('root@vilma15:3004')
{"info":"A new instance will be added to the InnoDB cluster. Depending on the am
ount of data on the cluster this might take from a few seconds to several hours.
"}
Please provide the password for 'root@vilma15:3004':
{"info":"Adding instance to the cluster ..."}

{"error":"Cluster.addInstance: ERROR: Error executing the 'join-replicaset' comm
and: MySQL Instance 'vilma15@3004' has SSL support disabled. Use the option to s
kip SSL if you want to proceed with the configuration without SSL support. (Runt
imeError)"}

How to repeat:
1.- Start 2 local mysql server instances

1.1 Uncompress the mysql server zip file to a local dir, example:
C:\server\mysql-5.7.17-winx64

1.2 Create a data directory inside the server directory 
C:\server\mysql-5.7.17-winx64\data

1.3 Create a data2 directory inside the server directory 
C:\server\mysql-5.7.17-winx64\data2

1.4 Create a temprary directory 
C:\tmp

1.5 Create another temprary directory 
C:\tmp2

1.6 Create a init.sql file 
C:\server\init.sql

1.7 Put the following contents in it
USE mysql;

UPDATE user SET host='%' WHERE user='root' AND host='localhost';

1.8 Open cmd and start server 1 using the following commands:

C:/server/mysql-5.7.17-winx64/bin/mysqld.exe --no-defaults --initialize-insecure --basedir="C:/server/mysql-5.7.17-winx64/bin/" --datadir="C:/server/mysql-5.7.17-winx64/data" --tmpdir=C:\tmp --lc-messages-dir="C:/server/mysql-5.7.17-winx64/share"  --init-file=C:\server\init.sql

C:/server/mysql-5.7.17-winx64/bin/mysqld.exe --no-defaults --enforce-gtid-consistency --log-slave-updates --binlog-format=row --transaction-write-set-extraction=XXHASH64 --binlog-checksum=NONE --core-file --loose-group-replication-start-on-boot=false --gtid-mode=ON --secure-file-priv= --relay_log_info_repository=TABLE --master_info_repository=TABLE --port=3002 --loose-mysqlx-port=3003 --basedir="C:/server/mysql-5.7.17-winx64/bin/" --datadir="C:/server/mysql-5.7.17-winx64/data" --tmpdir=C:\tmp --pid-file=C:\tmp\mysqld.pid  --core-file --server-id=1 --lc-messages-dir="C:/server/mysql-5.7.17-winx64/share"   --socket=C:\tmp\JETmysql3002.sock --report_host=vilma15 --report_port=3002 --relay-log=vilma15-relay-bin
 --plugin_dir=C:/server/mysql-5.7.17-winx64/lib/plugin --character-sets-dir=C:/server/mysql-5.7.17-winx64/share/charsets --log-bin=C:/tmp/log

1.9 Open cmd and start server 2 using the following commands:

C:/server/mysql-5.7.17-winx64/bin/mysqld.exe --no-defaults --initialize-insecure --basedir="C:/server/mysql-5.7.17-winx64/bin/" --datadir="C:/server/mysql-5.7.17-winx64/data2" --tmpdir=C:\tmp2 --lc-messages-dir="C:/server/mysql-5.7.17-winx64/share"  --init-file=C:\server\init.sql

C:/server/mysql-5.7.17-winx64/bin/mysqld.exe --no-defaults --enforce-gtid-consistency --log-slave-updates --binlog-format=row --transaction-write-set-extraction=XXHASH64 --binlog-checksum=NONE --core-file --loose-group-replication-start-on-boot=false --gtid-mode=ON --secure-file-priv= --relay_log_info_repository=TABLE --master_info_repository=TABLE --port=3004 --loose-mysqlx-port=3005 --basedir="C:/server/mysql-5.7.17-winx64/bin/" --datadir="C:/server/mysql-5.7.17-winx64/data2" --tmpdir=C:\tmp2 --pid-file=C:\tmp2\mysqld.pid  --core-file --server-id=1 --lc-messages-dir="C:/server/mysql-5.7.17-winx64/share"   --socket=C:\tmp\JETmysql3004.sock --report_host=vilma15 --report_port=3004 --relay-log=vilma15-relay-bin
 --plugin_dir=C:/server/mysql-5.7.17-winx64/lib/plugin --character-sets-dir=C:/server/mysql-5.7.17-winx64/share/charsets --log-bin=C:/tmp2/log

2.- Open cmd and execute the shell with the following parameters:

C:\shell\mysql-shell-1.0.6-windows-labs-x86-64bit\bin\mysqlsh.exe --node --log-level=1 --json=raw --js --interactive=full --force --node

3.- Connect to the first server 
\connect -c root:@vilma15:3002

4.- Create a cluster 

cluster = dba.createCluster('myCluster',{multiMaster:false, force:false, memberSsl:false});

5.- Use addInstance to add the second mysql server, provide the password manually
cluster.addInstance('root@vilma15:3004')

Output 

mysql-js> cluster.addInstance('root@vilma15:3004')
{"info":"A new instance will be added to the InnoDB cluster. Depending on the am
ount of data on the cluster this might take from a few seconds to several hours.
"}
Please provide the password for 'root@vilma15:3004':
{"info":"Adding instance to the cluster ..."}

{"error":"Cluster.addInstance: ERROR: Error executing the 'join-replicaset' comm
and: MySQL Instance 'vilma15@3004' has SSL support disabled. Use the option to s
kip SSL if you want to proceed with the configuration without SSL support. (Runt
imeError)"}

Note that the dba.checkInstance says that the second server instance is ok to use:

mysql-js> dba.checkInstanceConfig('root@vilma15:3004')
Please provide the password for 'root@vilma15:3004':
{"info":"Validating instance..."}

{"status":"ok"}
{"status":"ok"}
mysql-js>
[9 Dec 2016 6:39] MySQL Verification Team
Thank you for the report.