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).
This commit is contained in:
parent
caf105905a
commit
7ad4709a3b
@ -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()
|
|||||||
$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()
|
|||||||
$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:-""}
|
|||||||
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
|
|||||||
|
|
||||||
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
|
||||||
|
if [ -z "$WSREP_LOG_DIR" ]; then
|
||||||
|
WSREP_LOG_DIR=$(parse_cnf --mysqld innodb-log-group-home-dir '')
|
||||||
fi
|
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
|
|||||||
|
|
||||||
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:-""}
|
|||||||
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:-""}
|
|||||||
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user