From da32afc0b29ccb7fafa7241dd6e43e2591186acb Mon Sep 17 00:00:00 2001 From: benthompson15 Date: Wed, 12 Feb 2020 10:01:26 -0600 Subject: [PATCH] Merge pull request #1023 from LinuxJedi/mariadb-systemctl MCOL-3718 Use systemd instead of mysql-Columnstore --- dbcon/mysql/CMakeLists.txt | 2 +- dbcon/mysql/mysql-Columnstore | 486 ------------------ .../columnstore-post-install.in | 2 - .../columnstore-pre-uninstall.in | 10 +- oam/install_scripts/columnstore.in | 8 +- oam/install_scripts/post-mysql-install | 42 +- oam/oamcpp/liboamcpp.cpp | 128 +++-- oamapps/columnstoreSupport/configReport.sh | 10 +- procmon/processmonitor.cpp | 13 +- .../clusterTester/columnstoreClusterTester.sh | 4 +- 10 files changed, 161 insertions(+), 544 deletions(-) delete mode 100755 dbcon/mysql/mysql-Columnstore diff --git a/dbcon/mysql/CMakeLists.txt b/dbcon/mysql/CMakeLists.txt index 8f1610c02..85c13f2a1 100644 --- a/dbcon/mysql/CMakeLists.txt +++ b/dbcon/mysql/CMakeLists.txt @@ -52,7 +52,7 @@ install(FILES syscatalog_mysql.sql calshowprocesslist.sql columnstore_info.sql DESTINATION ${ENGINE_SUPPORTDIR} COMPONENT columnstore-engine) -install(PROGRAMS install_mcs_mysql.sh mysql-Columnstore +install(PROGRAMS install_mcs_mysql.sh DESTINATION ${ENGINE_SBINDIR} COMPONENT columnstore-engine) install(FILES columnstore.cnf diff --git a/dbcon/mysql/mysql-Columnstore b/dbcon/mysql/mysql-Columnstore deleted file mode 100755 index 5c5305726..000000000 --- a/dbcon/mysql/mysql-Columnstore +++ /dev/null @@ -1,486 +0,0 @@ -#!/bin/sh -# Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB -# This file is public domain and comes with NO WARRANTY of any kind - -# MySQL daemon start/stop script. - -# Usually this is put in /etc/init.d (at least on machines SYSV R4 based -# systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/K01mysql. -# When this is done the mysql server will be started when the machine is -# started and shut down when the systems goes down. - -# Comments to support chkconfig on RedHat Linux -# chkconfig: 2345 64 36 -# description: A very fast and reliable SQL database engine. - -# Comments to support LSB init script conventions -### BEGIN INIT INFO -# Provides: mysql -# Required-Start: $local_fs $network $remote_fs -# Should-Start: ypbind nscd ldap ntpd xntpd -# Required-Stop: $local_fs $network $remote_fs -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: start and stop MySQL -# Description: MySQL is a very fast and reliable SQL database engine. -### END INIT INFO - -# If you install MySQL on some other places than /usr/local/mariadb/columnstore/mysql, then you -# have to do one of the following things for this script to work: -# -# - Run this script from within the MySQL installation directory -# - Create a /etc/my.cnf file with the following information: -# [mysqld] -# basedir= -# - Add the above to any other configuration file (for example ~/.my.ini) -# and copy my_print_defaults to /usr/bin -# - Add the path to the mysql-installation-directory to the basedir variable -# below. -# -# If you want to affect other MySQL variables, you should make your changes -# in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files. - -# If you change base dir, you must also change datadir. These may get -# overwritten by settings in the MySQL configuration files. - - -# Source function library. -if [ -f /etc/init.d/functions ]; then - . /etc/init.d/functions -fi - -# Default value, in seconds, afterwhich the script should timeout waiting -# for server start. -# Value here is overriden by value in my.cnf. -# 0 means don't wait at all -# Negative numbers mean to wait indefinitely -service_startup_timeout=90 -user=`whoami 2>/dev/null` - -# Lock directory -lockdir=/var/lock/subsys - -lock_file_path="$lockdir/mysql-Columnstore" - -# The following variables are only set for letting mysql.server find things. - -# Set some defaults -mysqld_pid_file_path= -if test -z "$basedir" -then - basedir=/usr - bindir=/usr/bin - if test -z "$datadir" - then - datadir=/var/lib/mysql - fi - sbindir=/usr/bin - bindir=/usr/bin -else - bindir="$basedir/bin" - if test -z "$datadir" - then - datadir="$basedir/data" - fi - sbindir="$basedir/sbin" - if test -f "$basedir/sbin/mysqld" - then - bindir="$basedir/bin" - else - bindir="$basedir/bin" - fi -fi - -# datadir_set is used to determine if datadir was set (and so should be -# *not* set inside of the --basedir= handler.) -datadir_set= - -# -# Use LSB init script functions for printing messages, if possible -# -lsb_functions="/lib/lsb/init-functions" -if test -f $lsb_functions ; then - . $lsb_functions >/dev/null 2>&1 -else - # Include non-LSB RedHat init functions to make systemctl redirect work - init_functions="/etc/init.d/functions" - if test -f $init_functions; then - . $init_functions >/dev/null 2>&1 - fi - log_success_msg() - { - echo " SUCCESS! $@" - } - log_failure_msg() - { - echo " ERROR! $@" - } -fi - -PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin" -export PATH - -mode=$1 # start or stop - -[ $# -ge 1 ] && shift - -case `echo "testing\c"`,`echo -n testing` in - *c*,-n*) echo_n= echo_c= ;; - *c*,*) echo_n=-n echo_c= ;; - *) echo_n= echo_c='\c' ;; -esac - -parse_server_arguments() { - for arg do - case "$arg" in - --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` - bindir="$basedir/bin" - if test -z "$datadir_set"; then - datadir="$basedir/data" - fi - sbindir="$basedir/sbin" - if test -f "$basedir/sbin/mysqld" - then - bindir="$basedir/bin" - else - bindir="$basedir/bin" - fi - #bindir="$basedir/bin" - ;; - --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` - datadir_set=1 - ;; - --log-basename=*|--hostname=*|--loose-log-basename=*) - mysqld_pid_file_path=`echo "$arg.pid" | sed -e 's/^[^=]*=//'` - ;; - --pid-file=*) mysqld_pid_file_path=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; - --service-startup-timeout=*) service_startup_timeout=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; - esac - done -} - -# Get arguments from the my.cnf file, -# the only group, which is read from now on is [mysqld] -if test -x ./bin/my_print_defaults -then - print_defaults="./bin/my_print_defaults" -elif test -x $bindir/my_print_defaults -then - print_defaults="$bindir/my_print_defaults" -elif test -x $bindir/mysql_print_defaults -then - print_defaults="$bindir/mysql_print_defaults" -else - # Try to find basedir in /etc/my.cnf - conf=/etc/my.cnf - print_defaults= - if test -r $conf - then - subpat='^[^=]*basedir[^=]*=\(.*\)$' - dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf` - for d in $dirs - do - d=`echo $d | sed -e 's/[ ]//g'` - if test -x "$d/bin/my_print_defaults" - then - print_defaults="$d/bin/my_print_defaults" - break - fi - if test -x "$d/bin/mysql_print_defaults" - then - print_defaults="$d/bin/mysql_print_defaults" - break - fi - done - fi - - # Hope it's in the PATH ... but I doubt it - test -z "$print_defaults" && print_defaults="my_print_defaults" -fi - -# -# Read defaults file from 'basedir'. If there is no defaults file there -# check if it's in the old (depricated) place (datadir) and read it from there -# - -extra_args="" -if test -r "$basedir/my.cnf" -then - extra_args="-e $basedir/my.cnf" -else - if test -r "$datadir/my.cnf" - then - extra_args="-e $datadir/my.cnf" - fi -fi - -parse_server_arguments `$print_defaults $extra_args --mysqld mysql.server` -parse_server_arguments "$@" - -# wait for the pid file to disappear -wait_for_gone () { - pid="$1" # process ID of the program operating on the pid-file - pid_file_path="$2" # path to the PID file. - - i=0 - crash_protection="by checking again" - - while test $i -ne $service_startup_timeout ; do - - if kill -0 "$pid" 2>/dev/null; then - : # the server still runs - else - if test ! -s "$pid_file_path"; then - # no server process and no pid-file? great, we're done! - log_success_msg - return 0 - fi - - # pid-file exists, the server process doesn't. - # it must've crashed, and mysqld_safe will restart it - if test -n "$crash_protection"; then - crash_protection="" - sleep 5 - continue # Check again. - fi - - kill_by_pid - # Cannot help it - log_failure_msg "The server quit without updating PID file ($pid_file_path)." - return 1 # not waiting any more. - fi - - echo $echo_n ".$echo_c" - i=`expr $i + 1` - sleep 1 - - done - - log_failure_msg - kill_by_pid - - return 1 -} - -wait_for_ready () { - - i=0 - while test $i -ne $service_startup_timeout ; do - - if $bindir/mysqladmin ping >/dev/null 2>&1; then - log_success_msg - return 0 - elif kill -0 $! 2>/dev/null ; then - : # mysqld_safe is still running - else - # mysqld_safe is no longer running, abort the wait loop - break - fi - - echo $echo_n ".$echo_c" - i=`expr $i + 1` - sleep 1 - - done - - log_failure_msg - return 1 -} -# -# Set pid file if not given -# -if test -z "$mysqld_pid_file_path" -then - mysqld_pid_file_path=$datadir/`hostname`.pid -else - case "$mysqld_pid_file_path" in - /* ) ;; - * ) mysqld_pid_file_path="$datadir/$mysqld_pid_file_path" ;; - esac -fi - -# source other config files -[ -f /etc/default/mysql ] && . /etc/default/mysql -[ -f /etc/sysconfig/mysql ] && . /etc/sysconfig/mysql -[ -f /etc/conf.d/mysql ] && . /etc/conf.d/mysql - -kill_by_pid() { - # let's see if we can kill the 2 mysql procs by hand - # get the our mysql from ps - eval $(ps -ef | grep "bin/mysqld" | grep -v grep | head -1 | awk '{printf "pid=%d\n", $2}') - - if [ -n "$pid" ]; then - ppid=$(ps -o ppid= -p $pid) - kill -9 $ppid - sleep 1 - kill -9 $pid - echo $echo_n "Force shutting down (no/bad pid file)" - log_success_msg - exit 0 - fi - return -} - -case "$mode" in - 'start') - # Start daemon - - # Safeguard (relative paths, core dumps..) - cd $basedir - - echo $echo_n "Starting MySQL" - if test -x $bindir/mysqld_safe - then - # Give extra arguments to mysqld with the my.cnf file. This script - # may be overwritten at next upgrade. - $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" >/dev/null 2>&1 & - wait_for_ready; return_value=$? - - # Make lock for RedHat / SuSE - if test -w "$lockdir" - then - touch "$lock_file_path" - fi - - exit $return_value - else - log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" - fi - ;; - - 'stop') - # Stop daemon. We use a signal here to avoid having to know the - # root password. - - if test -s "$mysqld_pid_file_path" - then - mysqld_pid=`cat "$mysqld_pid_file_path"` - - if (kill -0 $mysqld_pid 2>/dev/null) - then - echo $echo_n "Shutting down MySQL" - kill $mysqld_pid - # mysqld should remove the pid file when it exits, so wait for it. - wait_for_gone $mysqld_pid "$mysqld_pid_file_path"; return_value=$? - else - log_failure_msg "MySQL server process #$mysqld_pid is not running!" - kill_by_pid - rm "$mysqld_pid_file_path" - fi - - # Delete lock for RedHat / SuSE - if test -f "$lock_file_path" - then - rm -f "$lock_file_path" - fi - exit $return_value - else - kill_by_pid - log_failure_msg "MySQL server PID file could not be found!" - fi - ;; - - 'restart') - # Stop the service and regardless of whether it was - # running or not, start it again. - if $0 stop "$@"; then - if ! $0 start "$@"; then - log_failure_msg "Failed to restart server." - exit 1 - fi - else - log_failure_msg "Failed to stop running server, so refusing to try to start." - exit 1 - fi - ;; - - 'reload'|'force-reload') - if test -s "$mysqld_pid_file_path" ; then - read mysqld_pid < "$mysqld_pid_file_path" - kill -HUP $mysqld_pid && log_success_msg "Reloading service MySQL" - touch "$mysqld_pid_file_path" - else - log_failure_msg "MySQL PID file could not be found!" - exit 1 - fi - ;; - 'status') - # First, check to see if pid file exists - if test -s "$mysqld_pid_file_path" ; then - read mysqld_pid < "$mysqld_pid_file_path" - if kill -0 $mysqld_pid 2>/dev/null ; then - log_success_msg "MySQL running ($mysqld_pid)" - exit 0 - else - log_failure_msg "MySQL is not running, but PID file exists" - exit 1 - fi - else - # Try to find appropriate mysqld process - mysqld_pid=`pidof $bindir/mysqld` - - # test if multiple pids exist - pid_count=`echo $mysqld_pid | wc -w` - if test $pid_count -gt 1 ; then - log_failure_msg "Multiple MySQL running but PID file could not be found ($mysqld_pid)" - exit 5 - elif test -z $mysqld_pid ; then - if test -f "$lock_file_path" ; then - log_failure_msg "MySQL is not running, but lock file ($lock_file_path) exists" - exit 2 - fi - log_failure_msg "MySQL is not running" - exit 3 - else - log_failure_msg "MySQL is running but PID file could not be found" - exit 4 - fi - fi - ;; - 'configtest') - # Safeguard (relative paths, core dumps..) - cd $basedir - echo $echo_n "Testing MySQL configuration syntax" - daemon=$bindir/mysqld - if test -x $bindir/mysqld - then - daemon=$bindir/mysqld - elif test -x $sbindir/mysqld - then - daemon=$sbindir/mysqld - elif test -x `which mysqld` - then - daemon=`which mysqld` - else - log_failure_msg "Unable to locate the mysqld binary!" - exit 1 - fi - help_out=`$daemon --help 2>&1`; r=$? - if test "$r" != 0 ; then - log_failure_msg "$help_out" - log_failure_msg "There are syntax errors in the server configuration. Please fix them!" - else - log_success_msg "Syntax OK" - fi - exit $r - ;; - 'bootstrap') - if test "$_use_systemctl" == 1 ; then - log_failure_msg "Please use galera_new_cluster to start the mariadb service with --wsrep-new-cluster" - exit 1 - fi - # Bootstrap the cluster, start the first node - # that initiate the cluster - echo $echo_n "Bootstrapping the cluster.. " - $0 start $other_args --wsrep-new-cluster - exit $? - ;; - *) - # usage - basename=`basename "$0"` - echo "Usage: $basename {start|stop|restart|reload|force-reload|status|configtest|bootstrap} [ MySQL server options ]" - exit 1 - ;; -esac - -exit 0 diff --git a/oam/install_scripts/columnstore-post-install.in b/oam/install_scripts/columnstore-post-install.in index 2e253de53..c0384295f 100755 --- a/oam/install_scripts/columnstore-post-install.in +++ b/oam/install_scripts/columnstore-post-install.in @@ -108,7 +108,6 @@ fi if [ $user = "root" ]; then #setup the columnstore service script rm -f /etc/init.d/columnstore >/dev/null 2>&1 - rm -f /etc/init.d/mysql-Columnstore >/dev/null 2>&1 rm -f /etc/default/columnstore systemctl=`which systemctl 2>/dev/null` @@ -170,7 +169,6 @@ mcsSetConfig -d Installation LockFileDirectory $lockdir mkdir $lockdir >/dev/null 2>&1 -rm -f $lockdir/mysql-Columnstore rm -f $lockdir/columnstore #backup copy of Alarm Config File diff --git a/oam/install_scripts/columnstore-pre-uninstall.in b/oam/install_scripts/columnstore-pre-uninstall.in index 38f20686e..41896c937 100755 --- a/oam/install_scripts/columnstore-pre-uninstall.in +++ b/oam/install_scripts/columnstore-pre-uninstall.in @@ -25,7 +25,14 @@ done #stop services columnstore stop > /dev/null 2>&1 -mysql-Columnstore stop > /dev/null 2>&1 + +# Test we are using systemd +systemctl cat mariadb.service > /dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 +else + pkill mysqld +fi cloud=`mcsGetConfig Installation Cloud` if [ $cloud = "amazon-ec2" ] || [ $cloud = "amazon-vpc" ]; then @@ -55,7 +62,6 @@ rm -f /var/lib/columnstore/local/moveDbrootTransactionLog lockdir=`mcsGetConfig Installation LockFileDirectory` rm -f $lockdir/columnstore -rm -f $lockdir/mysql-Columnstore # delete core files #rm -f /var/log/mariadb/columnstore/corefiles/* > /dev/null 2>&1 diff --git a/oam/install_scripts/columnstore.in b/oam/install_scripts/columnstore.in index 8686b6683..9ef7cf7ad 100644 --- a/oam/install_scripts/columnstore.in +++ b/oam/install_scripts/columnstore.in @@ -93,7 +93,13 @@ stop() { RETVAL=$? rm -f $lockdir/columnstore fuser -k 8604/tcp > /dev/null 2>&1 - mysql-Columnstore stop > /dev/null 2>&1 + # Test we are using systemd + systemctl cat mariadb.service > /dev/null 2>&1 + if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 + else + pkill mysqld + fi pkill ProcMon pkill ProcMgr return $RETVAL diff --git a/oam/install_scripts/post-mysql-install b/oam/install_scripts/post-mysql-install index d8deaff73..81808c5da 100755 --- a/oam/install_scripts/post-mysql-install +++ b/oam/install_scripts/post-mysql-install @@ -11,7 +11,13 @@ checkForError() { if [ `cat ${tmpdir}/error.check | wc -c` -ne 0 ]; then echo "MySQL Password file missing or incorrect, check .my.cnf file" rm -f ${tmpdir}/error.check - mysql-Columnstore stop + # Test we are using systemd + systemctl cat mariadb.service > /dev/null 2>&1 + if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 + else + pkill mysqld + fi sleep 2 exit 2; fi @@ -54,9 +60,23 @@ for arg in "$@"; do done # Restart in the same way that mysqld will be started normally. -mysql-Columnstore stop >/dev/null 2>&1 +# Test we are using systemd +systemctl cat mariadb.service > /dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 +else + pkill mysqld +fi sleep 2 -mysql-Columnstore start --skip-grant-tables +export MYSQL_OPTS="--skip-grant-tables" +# Test we are using systemd +systemctl cat mariadb.service > /dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl start mariadb.service +else + /usr/bin/mysqld_safe --skip-grant-tables & +fi +unset MYSQL_OPTS sleep 5 @@ -65,12 +85,24 @@ install_mcs_mysql.sh --tmpdir=$tmpdir checkForError if [ $? -ne 0 ]; then echo "ERROR: Invalid password in .my.cnf, or Columnstore plugin install missing" - mysql-Columnstore stop + # Test we are using systemd + systemctl cat mariadb.service > /dev/null 2>&1 + if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 + else + pkill mysqld + fi sleep 2 exit 2; fi -mysql-Columnstore stop +# Test we are using systemd +systemctl cat mariadb.service > /dev/null 2>&1 +if [ $? -eq 0 ]; then + systemctl stop mariadb.service > /dev/null 2>&1 +else + pkill mysqld +fi exit 0 diff --git a/oam/oamcpp/liboamcpp.cpp b/oam/oamcpp/liboamcpp.cpp index 5fb72f387..c0a020a10 100644 --- a/oam/oamcpp/liboamcpp.cpp +++ b/oam/oamcpp/liboamcpp.cpp @@ -7750,7 +7750,7 @@ int Oam::sendDeviceNotification(std::string deviceName, NOTIFICATION_TYPE type, * * Function: actionMysqlCalpont * - * Purpose: mysql-Columnstore service command + * Purpose: systemctl mariadb.service command * ****************************************************************************/ @@ -7790,24 +7790,33 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) else return; - // check if mysql-Columnstore is installed - string mysqlscript = "mysql-Columnstore"; + string mysqlscript = "systemctl"; string command; string pidtmp = tmpdir + "/mysql.pid"; + int no_systemd = system("systemctl cat mariadb.server > /dev/null 2>&1"); + switch (action) { case MYSQL_START: { - command = "start > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + if (no_systemd) + { + system("/usr/bin/mysqld_safe &"); + } + command = "start"; break; } case MYSQL_STOP: { - command = "stop > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + if (no_systemd) + { + system("pkill mysqld"); + } + command = "stop"; //set process status try @@ -7822,25 +7831,38 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) case MYSQL_RESTART: { - command = "restart > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + if (no_systemd) + { + system("pkill mysqld"); + system("/usr/bin/mysqld_safe &"); + } + command = "restart"; break; } case MYSQL_RELOAD: { - command = "reload > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + if (no_systemd) + { + system("pkill -HUP mysqld"); + } + command = "reload"; break; } case MYSQL_FORCE_RELOAD: { - command = "force-reload > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + if (no_systemd) + { + system("pkill -HUP mysqld"); + } + command = "force-reload"; break; } case MYSQL_STATUS: { - command = "status > " + tmpdir + "/mysql.status"; + command = "status"; break; } @@ -7852,19 +7874,36 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) } //RUN COMMAND - string cmd = mysqlscript + " " + command; - system(cmd.c_str()); + if (!no_systemd) + { + string cmd = mysqlscript + " " + command + " mariadb.service > " + tmpdir + "/actionMysqlCalpont.log 2>&1"; + system(cmd.c_str()); + } if (action == MYSQL_START || action == MYSQL_RESTART) { - //get pid - char buf[512]; - FILE *cmd_pipe = popen("pidof -s mysqld", "r"); + pid_t pid = 0; + // Loop check because we mysqld may not start immediately + for (int i=0; i < 10; i++) + { + //get pid + char buf[512]; + FILE *cmd_pipe = popen("pidof -s mysqld", "r"); - fgets(buf, 512, cmd_pipe); - pid_t pid = strtoul(buf, NULL, 10); + fgets(buf, 512, cmd_pipe); + pid = strtoul(buf, NULL, 10); - pclose( cmd_pipe ); + pclose( cmd_pipe ); + + if (pid) + { + break; + } + else + { + sleep(2); + } + } if (!pid) { @@ -7888,11 +7927,11 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) getProcessStatus("mysqld", moduleName, procstat); int state = procstat.ProcessOpState; pid_t pidStatus = procstat.ProcessID; - + pid_t pid = 0; string mysqlStatus = tmpdir + "/mysql.status"; - if (checkLogStatus(mysqlStatus, "MySQL running")) + if ( state != ACTIVE ) { - if ( state != ACTIVE ) + for (int i=0; i < 10; i++) { //get pid char buf[512]; @@ -7903,17 +7942,26 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) pclose( cmd_pipe ); - //set process status - try + if (pid) { - setProcessStatus("mysqld", moduleName, ACTIVE, pid); + //set process status + try + { + setProcessStatus("mysqld", moduleName, ACTIVE, pid); + } + catch (...) + {} + return; + } + else + { + sleep(2); } - catch (...) - {} - - return; } - else + } + else + { + for (int i=0; i < 10; i++) { //check if pid has changed char buf[512]; @@ -7924,18 +7972,28 @@ void Oam::actionMysqlCalpont(MYSQLCALPONT_ACTION action) pclose( cmd_pipe ); - if ( pidStatus != pid ) + if (pid) { - //set process status - try + if ( pidStatus != pid ) { - setProcessStatus("mysqld", moduleName, ACTIVE, pid); + //set process status + try + { + setProcessStatus("mysqld", moduleName, ACTIVE, pid); + } + catch (...) + {} + break; } - catch (...) - {} + } + else + { + sleep(2); } } - + } + if (pid) + { //check module status, if DEGRADED set to ACTIVE int opState; bool degraded; diff --git a/oamapps/columnstoreSupport/configReport.sh b/oamapps/columnstoreSupport/configReport.sh index a74bc995d..b81125127 100755 --- a/oamapps/columnstoreSupport/configReport.sh +++ b/oamapps/columnstoreSupport/configReport.sh @@ -25,9 +25,6 @@ if [ -n "$chkconfig" ]; then echo "################# chkconfig --list | grep columnstore #################" echo " " chkconfig --list | grep columnstore 2>/dev/null - echo "################# chkconfig --list | grep mysql-Columnstore #################" - echo " " - chkconfig --list | grep mysql-Columnstore 2>/dev/null fi systemctl=`which systemctl 2>/dev/null` @@ -37,9 +34,9 @@ if [ -n "$systemctl" ]; then echo "################# systemctl list-unit-files --type=service | grep columnstore #################" echo " " systemctl list-unit-files --type=service | grep columnstore 2>/dev/null - echo "################# systemctl list-unit-files --type=service | grep mysql-Columnstore #################" + echo "################# systemctl list-unit-files --type=service | grep mariadb #################" echo " " - systemctl list-unit-files --type=service | grep mysql-Columnstore 2>/dev/null + systemctl list-unit-files --type=service | grep mariadb 2>/dev/null fi updaterc=`which update-rc.d 2>/dev/null` @@ -49,9 +46,6 @@ if [ -n "$updaterc" ]; then echo "################# service --status-all | grep columnstore #################" echo " " service --status-all | grep columnstore 2>/dev/null - echo "################# service --status-all | grep mysql-Columnstore #################" - echo " " - service --status-all | grep mysql-Columnstore 2>/dev/null fi diff --git a/procmon/processmonitor.cpp b/procmon/processmonitor.cpp index 6138a305c..e2da321ee 100644 --- a/procmon/processmonitor.cpp +++ b/procmon/processmonitor.cpp @@ -1514,8 +1514,17 @@ void ProcessMonitor::processMessage(messageqcpp::ByteStream msg, messageqcpp::IO system(cmd.c_str()); cmd = "post-mysql-install >> " + tmpLogDir + "/rpminstall"; system(cmd.c_str()); - cmd = "mysql-Columnstore start > " + tmpLogDir + "/mysqldstart"; - system(cmd.c_str()); + int ret = system("systemctl cat mariadb.service > /dev/null 2>&1"); + if (!ret) + { + cmd = "systemctl start mariadb.service > " + tmpLogDir + "/mysqldstart"; + system(cmd.c_str()); + } + else + { + cmd = "/usr/bin/mysqld_safe & > " + tmpLogDir + "/mysqldstart"; + system(cmd.c_str()); + } string tmpFile = tmpLogDir + "/mysqldstart"; ifstream file (tmpFile.c_str()); diff --git a/utils/clusterTester/columnstoreClusterTester.sh b/utils/clusterTester/columnstoreClusterTester.sh index 282a4fade..ce968ec8f 100755 --- a/utils/clusterTester/columnstoreClusterTester.sh +++ b/utils/clusterTester/columnstoreClusterTester.sh @@ -753,7 +753,7 @@ checkMysqlPassword() #get MariaDB password pass=true - `mysql-Columnstore start > /dev/null 2>&1` + `systemctl start mariadb.service > /dev/null 2>&1` `mariadb-command-line.sh > /dev/null 2>&1` if [ "$?" -eq 2 ]; then echo "${bold}Failed${normal}, Local Node MariaDB login failed with missing password file, /root/.my.cnf" @@ -763,7 +763,7 @@ checkMysqlPassword() `/bin/cp -f mariadb-command-line.sh ${tmpDir}/.` for ipadd in "${NODE_IPADDRESS[@]}"; do - `remote_command.sh $ipadd $PASSWORD mysql-Columnstore start > /dev/null 2>&1` + `remote_command.sh $ipadd $PASSWORD systemctl start mariadb.service > /dev/null 2>&1` `remote_scp_put.sh $ipadd $PASSWORD ${tmpDir}/mariadb-command-line.sh 1 > ${tmpDir}/remote_scp_put_check 2>&1` if [ "$?" -ne 0 ]; then echo "Error running remote_scp_put.sh to $ipadd Node, check ${tmpDir}/remote_scp_put_check"