diff --git a/.gitignore b/.gitignore index 05ad703b0..2da248da3 100644 --- a/.gitignore +++ b/.gitignore @@ -145,6 +145,7 @@ oam/install_scripts/mcs-primproc.service oam/install_scripts/mcs-stop-controllernode.sh oam/install_scripts/mcs-workernode.service oam/install_scripts/mcs-writeengineserver.service +oam/install_scripts/mcs-storagemanager.service oam/install_scripts/mcs_module_installer.sh oam/install_scripts/slave-rep-columnstore.sh oam/install_scripts/startupTests.sh diff --git a/dbcon/mysql/columnstore.cnf b/dbcon/mysql/columnstore.cnf index 629401c7c..f8ceed866 100644 --- a/dbcon/mysql/columnstore.cnf +++ b/dbcon/mysql/columnstore.cnf @@ -1,6 +1,4 @@ [mysqld] -lower_case_table_names=1 - plugin-load-add=ha_columnstore.so # Enable compression by default on create, set to NONE to turn off diff --git a/dbcon/mysql/install_mcs_mysql.sh.in b/dbcon/mysql/install_mcs_mysql.sh.in index 9b8db01d2..27b76e2b0 100755 --- a/dbcon/mysql/install_mcs_mysql.sh.in +++ b/dbcon/mysql/install_mcs_mysql.sh.in @@ -1,15 +1,9 @@ #!/bin/bash -# -# $Id$ -# -rpmmode=install pwprompt=" " for arg in "$@"; do - if [ `expr -- "$arg" : '--rpmmode='` -eq 10 ]; then - rpmmode="`echo $arg | awk -F= '{print $2}'`" - elif [ `expr -- "$arg" : '--tmpdir='` -eq 9 ]; then + if [ `expr -- "$arg" : '--tmpdir='` -eq 9 ]; then tmpdir="`echo $arg | awk -F= '{print $2}'`" else echo "ignoring unknown argument: $arg" 1>&2 diff --git a/oam/install_scripts/CMakeLists.txt b/oam/install_scripts/CMakeLists.txt index 3e6b7762a..cffcdbc8b 100644 --- a/oam/install_scripts/CMakeLists.txt +++ b/oam/install_scripts/CMakeLists.txt @@ -47,6 +47,8 @@ install(PROGRAMS columnstore-post-install mcs-stop-controllernode.sh mcs-loadbrm.py mcs-start-storagemanager.py + mariadb-columnstore-start.sh + mariadb-columnstore-stop.sh DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) install(FILES mariadb-columnstore.service diff --git a/oam/install_scripts/columnstore-post-install.in b/oam/install_scripts/columnstore-post-install.in index f7deb07b6..8fe097b7a 100755 --- a/oam/install_scripts/columnstore-post-install.in +++ b/oam/install_scripts/columnstore-post-install.in @@ -5,13 +5,43 @@ # Post-install steps for columnstore install running_systemd() { - if [ "$(ps --no-headers -o comm 1)" == "systemd" ]; then + if [ "$(ps --no-headers -o comm 1)" = "systemd" ]; then echo 0 else echo 1 fi } +checkForError() { + # check for password error + grep "ERROR 1045" ${tmpDir}/mysql_install.log > ${tmpDir}/error.check + 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 + exit 2; + fi + + rm -f ${tmpDir}/error.check + + #--------------------------------------------------------------------------- + # See if engine columnstore exist + #--------------------------------------------------------------------------- + echo "checking for engine columnstore..." + su -s /bin/sh -c 'mysql --execute="show engines"' mysql 2> ${tmpDir}/post-mysql-install.log | grep -i columnstore + + # + # Add compressiontype column to SYSCOLUMN if applicable + # + if [ $? -ne 0 ]; then + echo "columnstore doesn't exist" + exit 1 + fi + + echo "columnstore exist" + + return 0; +} + rpmmode=install user=`whoami 2>/dev/null` @@ -174,36 +204,40 @@ mkdir $lockdir >/dev/null 2>&1 rm -f $lockdir/columnstore -#check and get amazon env variables -aws=`which aws 2>/dev/null` -if [ -z "aws" ]; then - MCSgetCredentials.sh >/dev/null 2>&1 +# This was the last place of postConfigure. RIP + +/usr/sbin/install_mcs_mysql.sh --tmpdir=$tmpDir + +# Restart MDB to enable plugin +systemctl cat mariadb.service > /dev/null 2>&1 +if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then + systemctl restart mariadb.service > /dev/null 2>&1 +else + pkill mysqld > /dev/null 2>&1 + /usr/bin/mysqld_safe & fi -postConfigure +checkForError +if [ $? -ne 0 ]; then + echo "ERROR: Invalid password in .my.cnf, or Columnstore plugin install missing" +fi systemctl cat mariadb-columnstore.service > /dev/null 2>&1 if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then systemctl start mariadb-columnstore - - # Wait for all columnstore to be ready, DDLProc is final process in startup order - while [ -z "$(pgrep -x DDLProc)" ]; - do - sleep 1 - done + sleep 1 + dbbuilder 7 > $tmpDir/dbbuilder.log 2>&1 fi -dbbuilder 7 > $tmpDir/dbbuilder.log - if [ $stop_mysqld -eq 1 ];then # Make sure we stop mariadb since it wasn't running prior to columnstore installation systemctl cat mariadb.service > /dev/null 2>&1 if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then systemctl stop mariadb.service > /dev/null 2>&1 else - pkill mysqld + pkill mysqld > /dev/null 2>&1 fi - fi + sleep 2 exit 0 diff --git a/oam/install_scripts/columnstore-pre-uninstall.in b/oam/install_scripts/columnstore-pre-uninstall.in index ae6b88690..5b6e840b2 100755 --- a/oam/install_scripts/columnstore-pre-uninstall.in +++ b/oam/install_scripts/columnstore-pre-uninstall.in @@ -5,7 +5,7 @@ # pre-uninstall steps for columnstore install running_systemd() { - if [ "$(ps --no-headers -o comm 1)" == "systemd" ]; then + if [ "$(ps --no-headers -o comm 1)" = "systemd" ]; then echo 0 else echo 1 @@ -17,7 +17,7 @@ systemctl cat mariadb-columnstore.service > /dev/null 2>&1 if [ $? -eq 0 ] && [ $(running_systemd) -eq 0 ]; then systemctl stop mariadb-columnstore >/dev/null 2>&1 else - PROGS='StorageManager workernode controllernode PrimProc ExeMgr DMLProc DDLProc WriteEngineServer' + PROGS='PrimProc ExeMgr DMLProc DDLProc WriteEngineServer StorageManager controllernode workernode' kill $(pidof $PROGS) > /dev/null sleep 3 kill -9 $(pidof $PROGS) > /dev/null @@ -51,9 +51,6 @@ rm -rf /tmp/columnstore_tmp_files lockdir=`mcsGetConfig Installation LockFileDirectory` rm -f $lockdir/columnstore -# delete core files -#rm -f /var/log/mariadb/columnstore/corefiles/* > /dev/null 2>&1 - #uninstall MariaDB Columnstore system logging columnstoreSyslogSetup.sh uninstall >/dev/null 2>&1 @@ -118,6 +115,9 @@ rm -f @ENGINE_SYSCONFDIR@/columnstore/AlarmConfig.xml.installSave #remove OAMdbrootCheck file rm -f /var/lib/columnstore/data*/OAMdbrootCheck > /dev/null 2>&1 +rm -f /etc/rsyslog.d/49-columnstore.conf > /dev/null 2>&1 +rm -rf /tmp/columnstore_tmp_files > /dev/null 2>&1 + #tell user to run post configure script echo " " echo "Mariab Columnstore uninstall completed" diff --git a/oam/install_scripts/columnstore.in b/oam/install_scripts/columnstore.in index c9f612af4..cc97bd663 100644 --- a/oam/install_scripts/columnstore.in +++ b/oam/install_scripts/columnstore.in @@ -18,7 +18,7 @@ ### END INIT INFO running_systemd() { - if [ "$(ps --no-headers -o comm 1)" == "systemd" ]; then + if [ "$(ps --no-headers -o comm 1)" = "systemd" ]; then echo 0 else echo 1 diff --git a/oam/install_scripts/mariadb-columnstore-start.sh b/oam/install_scripts/mariadb-columnstore-start.sh new file mode 100644 index 000000000..1c4a3fce1 --- /dev/null +++ b/oam/install_scripts/mariadb-columnstore-start.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# This script allows to gracefully start MCS + +/bin/systemctl start mcs-storagemanager +/bin/systemctl start mcs-loadbrm +/bin/systemctl start mcs-workernode +/bin/systemctl start mcs-controllernode +/bin/systemctl start mcs-primproc +/bin/systemctl start mcs-writeengineserver +/bin/systemctl start mcs-exemgr +/bin/systemctl start mcs-dmlproc +/bin/systemctl start mcs-ddlproc + +exit 0 diff --git a/oam/install_scripts/mariadb-columnstore-stop.sh b/oam/install_scripts/mariadb-columnstore-stop.sh new file mode 100644 index 000000000..267a82646 --- /dev/null +++ b/oam/install_scripts/mariadb-columnstore-stop.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# This script allows to gracefully shut down MCS + +/bin/systemctl stop mcs-dmlproc +/bin/systemctl stop mcs-ddlproc +/bin/systemctl stop mcs-exemgr +/bin/systemctl stop mcs-writeengineserver +/bin/systemctl stop mcs-primproc +/bin/systemctl stop mcs-controllernode +/bin/systemctl stop mcs-workernode +/bin/systemctl stop mcs-storagemanager + +exit 0 diff --git a/oam/install_scripts/mariadb-columnstore.service.in b/oam/install_scripts/mariadb-columnstore.service.in index 9eb786ace..42b0182c7 100644 --- a/oam/install_scripts/mariadb-columnstore.service.in +++ b/oam/install_scripts/mariadb-columnstore.service.in @@ -5,7 +5,8 @@ Description=mariadb-columnstore Type=oneshot # Execute a dummy program -ExecStart=/bin/true +ExecStart=@ENGINE_BINDIR@/mariadb-columnstore-start.sh +ExecStop=@ENGINE_BINDIR@/mariadb-columnstore-stop.sh # This service shall be considered active after start RemainAfterExit=yes diff --git a/oam/install_scripts/mcs-controllernode.service.in b/oam/install_scripts/mcs-controllernode.service.in index 1ac114c68..6a8e40c5b 100644 --- a/oam/install_scripts/mcs-controllernode.service.in +++ b/oam/install_scripts/mcs-controllernode.service.in @@ -9,6 +9,3 @@ ExecStartPre=/usr/bin/env bash -c "systemctl start mcs-workernode" ExecStart=@ENGINE_BINDIR@/controllernode Restart=on-failure ExecStop=@ENGINE_BINDIR@/mcs-stop-controllernode.sh $MAINPID - -[Install] -WantedBy=mariadb-columnstore.service diff --git a/oam/install_scripts/mcs-ddlproc.service.in b/oam/install_scripts/mcs-ddlproc.service.in index c40703792..c839b4c9a 100644 --- a/oam/install_scripts/mcs-ddlproc.service.in +++ b/oam/install_scripts/mcs-ddlproc.service.in @@ -8,6 +8,3 @@ Type=simple ExecStart=@ENGINE_BINDIR@/DDLProc Restart=on-failure TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service diff --git a/oam/install_scripts/mcs-dmlproc.service.in b/oam/install_scripts/mcs-dmlproc.service.in index 576fdce42..b0bb8ea96 100644 --- a/oam/install_scripts/mcs-dmlproc.service.in +++ b/oam/install_scripts/mcs-dmlproc.service.in @@ -8,6 +8,3 @@ Type=simple ExecStart=@ENGINE_BINDIR@/DMLProc Restart=on-failure TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service diff --git a/oam/install_scripts/mcs-exemgr.service.in b/oam/install_scripts/mcs-exemgr.service.in index 439d3a6a0..8deab367a 100644 --- a/oam/install_scripts/mcs-exemgr.service.in +++ b/oam/install_scripts/mcs-exemgr.service.in @@ -8,6 +8,3 @@ Type=simple ExecStart=/usr/bin/env bash -c "LD_PRELOAD=$(ldconfig -p | grep -m1 libjemalloc | awk '{print $1}') exec @ENGINE_BINDIR@/ExeMgr" Restart=on-failure TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service diff --git a/oam/install_scripts/mcs-loadbrm.service.in b/oam/install_scripts/mcs-loadbrm.service.in index 620cedb9e..1684b85d1 100644 --- a/oam/install_scripts/mcs-loadbrm.service.in +++ b/oam/install_scripts/mcs-loadbrm.service.in @@ -8,5 +8,4 @@ Type=simple ExecStart=@ENGINE_BINDIR@/mcs-loadbrm.py [Install] -WantedBy=mariadb-columnstore.service WantedBy=mcs-workernode.service diff --git a/oam/install_scripts/mcs-primproc.service.in b/oam/install_scripts/mcs-primproc.service.in index bb5b843c8..16fd5552e 100644 --- a/oam/install_scripts/mcs-primproc.service.in +++ b/oam/install_scripts/mcs-primproc.service.in @@ -10,6 +10,3 @@ ExecStart=/usr/bin/env bash -c "LD_PRELOAD=$(ldconfig -p | grep -m1 libjemalloc ExecStartPost=/bin/sleep 2 Restart=on-failure TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service diff --git a/oam/install_scripts/mcs-stop-controllernode.sh.in b/oam/install_scripts/mcs-stop-controllernode.sh.in index a6de85db2..f1f258598 100644 --- a/oam/install_scripts/mcs-stop-controllernode.sh.in +++ b/oam/install_scripts/mcs-stop-controllernode.sh.in @@ -1,7 +1,6 @@ #!/bin/bash /bin/kill -15 "$1" -systemctl stop mcs-workernode --ignore-dependencies timeout=$(mcsGetConfig SystemConfig DBRMTimeout) while [ -n "$(pgrep -x controllernode)" ] && [ $timeout -gt 0 ] diff --git a/oam/install_scripts/mcs-storagemanager.service.in b/oam/install_scripts/mcs-storagemanager.service.in index 297d89687..358f69446 100644 --- a/oam/install_scripts/mcs-storagemanager.service.in +++ b/oam/install_scripts/mcs-storagemanager.service.in @@ -10,7 +10,7 @@ ConditionPathExists=/etc/columnstore/storagemanager.cnf Type=simple ExecStartPre=@ENGINE_BINDIR@/mcs-start-storagemanager.py ExecStart=/usr/bin/env bash -c "LD_PRELOAD=$(ldconfig -p | grep -m1 libjemalloc | awk '{print $1}') exec @ENGINE_BINDIR@/StorageManager" +ExecStop=/usr/bin/env bash -c "kill -15 $MAINPID" [Install] -WantedBy=mariadb-columnstore.service WantedBy=mcs-workernode.service diff --git a/oam/install_scripts/mcs-workernode.service.in b/oam/install_scripts/mcs-workernode.service.in index 65862a360..ec6340429 100644 --- a/oam/install_scripts/mcs-workernode.service.in +++ b/oam/install_scripts/mcs-workernode.service.in @@ -1,15 +1,12 @@ [Unit] Description=mcs-workernode -PartOf=mariadb-columnstore.service After=mcs-loadbrm.service [Service] Type=forking ExecStart=@ENGINE_BINDIR@/workernode DBRM_Worker1 Restart=on-failure -ExecStop=-@ENGINE_BINDIR@/save_brm +ExecStop=/usr/bin/env bash -c "kill -15 $MAINPID" +ExecStopPost=-@ENGINE_BINDIR@/save_brm ExecStopPost=/usr/bin/env bash -c "clearShm > /dev/null 2>&1" -TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service +TimeoutStopSec=5 diff --git a/oam/install_scripts/mcs-writeengineserver.service.in b/oam/install_scripts/mcs-writeengineserver.service.in index 3764c80ab..1947d1884 100644 --- a/oam/install_scripts/mcs-writeengineserver.service.in +++ b/oam/install_scripts/mcs-writeengineserver.service.in @@ -7,7 +7,4 @@ After=mcs-exemgr.service Type=simple ExecStart=/usr/bin/env bash -c "LD_PRELOAD=$(ldconfig -p | grep -m1 libjemalloc | awk '{print $1}') exec @ENGINE_BINDIR@/WriteEngineServer" Restart=on-failure -TimeoutStopSec=2 - -[Install] -WantedBy=mariadb-columnstore.service +TimeoutStopSec=20