Commit 7ad4709a authored by Julius Goryavsky's avatar Julius Goryavsky

MDEV-21526: mysqld_multi no longer works with different server binaries

The problem is caused by the fact that adding the
--defaults-group-suffix option to fix MDEV-18863 causes
mysqld to read all options from the appropriate sections
of the config file, including options specific to mysqld_multi.
Reading unknown options (which are not supported by mysqld)
causes mysqld to terminate with an error.

However, the MDEV-18863 problem has been completely fixed
by passing options on the command line, and now there is no
need to specify the --defaults-group-suffix option (we just
need to give priority to options passed through the command
line, so as not to break MDEV-18863).
parent caf10590
...@@ -308,9 +308,7 @@ sub report_mysqlds ...@@ -308,9 +308,7 @@ sub report_mysqlds
sub start_mysqlds() sub start_mysqlds()
{ {
my (@groups, $com, $tmp, $i, @options, $j, $mysqld_found, $suffix_found, $info_sent); my (@groups, $com, $tmp, $i, @options, $j, $mysqld_found, $info_sent);
$suffix_found= 0;
if (!$opt_no_log) if (!$opt_no_log)
{ {
...@@ -349,10 +347,6 @@ sub start_mysqlds() ...@@ -349,10 +347,6 @@ sub start_mysqlds()
$options[$j]= quote_shell_word($options[$j]); $options[$j]= quote_shell_word($options[$j]);
$tmp.= " $options[$j]"; $tmp.= " $options[$j]";
} }
elsif ("--defaults-group-suffix=" eq substr($options[$j], 0, 24))
{
$suffix_found= 1;
}
else else
{ {
$options[$j]= quote_shell_word($options[$j]); $options[$j]= quote_shell_word($options[$j]);
...@@ -369,12 +363,6 @@ sub start_mysqlds() ...@@ -369,12 +363,6 @@ sub start_mysqlds()
$info_sent= 1; $info_sent= 1;
} }
if (!$suffix_found)
{
$com.= " --defaults-group-suffix=";
$com.= substr($groups[$i],6);
}
$com.= $tmp; $com.= $tmp;
if ($opt_wsrep_new_cluster) { if ($opt_wsrep_new_cluster) {
......
...@@ -713,7 +713,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""} ...@@ -713,7 +713,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""}
if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then
INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG
fi fi
# if INNODB_DATA_HOME_DIR env. variable is not set, try to get it from my.cnf # if no command line arg and INNODB_DATA_HOME_DIR environment variable
# is not set, try to get it from my.cnf:
if [ -z "$INNODB_DATA_HOME_DIR" ]; then if [ -z "$INNODB_DATA_HOME_DIR" ]; then
INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '') INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '')
fi fi
...@@ -961,17 +962,25 @@ then ...@@ -961,17 +962,25 @@ then
ib_home_dir=$INNODB_DATA_HOME_DIR ib_home_dir=$INNODB_DATA_HOME_DIR
# Try to set ib_log_dir from the command line: WSREP_LOG_DIR=${WSREP_LOG_DIR:-""}
ib_log_dir=$INNODB_LOG_GROUP_HOME_ARG # Try to set WSREP_LOG_DIR from the command line:
if [ -z "$ib_log_dir" ]; then if [ ! -z "$INNODB_LOG_GROUP_HOME_ARG" ]; then
ib_log_dir=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-log-group-home-dir "") WSREP_LOG_DIR=$INNODB_LOG_GROUP_HOME_ARG
fi fi
if [ -z "$ib_log_dir" ]; then # if no command line arg and WSREP_LOG_DIR is not set,
ib_log_dir=$(parse_cnf --mysqld innodb-log-group-home-dir "") # try to get it from my.cnf:
if [ -z "$WSREP_LOG_DIR" ]; then
WSREP_LOG_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-log-group-home-dir '')
fi fi
if [ -z "$WSREP_LOG_DIR" ]; then
WSREP_LOG_DIR=$(parse_cnf --mysqld innodb-log-group-home-dir '')
fi
ib_log_dir=$WSREP_LOG_DIR
# Try to set ib_undo_dir from the command line: # Try to set ib_undo_dir from the command line:
ib_undo_dir=$INNODB_UNDO_DIR_ARG ib_undo_dir=${INNODB_UNDO_DIR_ARG:-""}
# if no command line arg then try to get it from my.cnf:
if [ -z "$ib_undo_dir" ]; then if [ -z "$ib_undo_dir" ]; then
ib_undo_dir=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-undo-directory "") ib_undo_dir=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-undo-directory "")
fi fi
......
...@@ -112,10 +112,11 @@ fi ...@@ -112,10 +112,11 @@ fi
WSREP_LOG_DIR=${WSREP_LOG_DIR:-""} WSREP_LOG_DIR=${WSREP_LOG_DIR:-""}
# Try to set WSREP_LOG_DIR from the command line: # Try to set WSREP_LOG_DIR from the command line:
if [ -z "$WSREP_LOG_DIR" ]; then if [ ! -z "$INNODB_LOG_GROUP_HOME_ARG" ]; then
WSREP_LOG_DIR=$INNODB_LOG_GROUP_HOME_ARG WSREP_LOG_DIR=$INNODB_LOG_GROUP_HOME_ARG
fi fi
# if WSREP_LOG_DIR env. variable is not set, try to get it from my.cnf # if no command line arg and WSREP_LOG_DIR is not set,
# try to get it from my.cnf:
if [ -z "$WSREP_LOG_DIR" ]; then if [ -z "$WSREP_LOG_DIR" ]; then
WSREP_LOG_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-log-group-home-dir '') WSREP_LOG_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-log-group-home-dir '')
fi fi
...@@ -136,7 +137,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""} ...@@ -136,7 +137,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""}
if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then
INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG
fi fi
# if INNODB_DATA_HOME_DIR env. variable is not set, try to get it from my.cnf # if no command line arg and INNODB_DATA_HOME_DIR environment variable
# is not set, try to get it from my.cnf:
if [ -z "$INNODB_DATA_HOME_DIR" ]; then if [ -z "$INNODB_DATA_HOME_DIR" ]; then
INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '') INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '')
fi fi
......
...@@ -904,7 +904,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""} ...@@ -904,7 +904,8 @@ INNODB_DATA_HOME_DIR=${INNODB_DATA_HOME_DIR:-""}
if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then if [ ! -z "$INNODB_DATA_HOME_DIR_ARG" ]; then
INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG INNODB_DATA_HOME_DIR=$INNODB_DATA_HOME_DIR_ARG
fi fi
# if INNODB_DATA_HOME_DIR env. variable is not set, try to get it from my.cnf # if no command line arg and INNODB_DATA_HOME_DIR environment variable
# is not set, try to get it from my.cnf:
if [ -z "$INNODB_DATA_HOME_DIR" ]; then if [ -z "$INNODB_DATA_HOME_DIR" ]; then
INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '') INNODB_DATA_HOME_DIR=$(parse_cnf mysqld$WSREP_SST_OPT_SUFFIX_VALUE innodb-data-home-dir '')
fi fi
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment