1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-10-31 18:30:33 +03:00
Files
mariadb-columnstore-engine/oam/install_scripts/post-install

493 lines
15 KiB
Bash
Executable File

#!/bin/bash
#
# $Id: post-install 3705 2013-08-07 19:47:20Z dhill $
#
# Post-install steps for columnstore install
prefix=/usr/local
installdir=$prefix/mariadb/columnstore
rpmmode=install
user=`whoami 2>/dev/null`
quiet=0
for arg in "$@"; do
if [ `expr -- "$arg" : '--prefix='` -eq 9 ]; then
prefix="`echo $arg | awk -F= '{print $2}'`"
installdir=$prefix/mariadb/columnstore
elif [ `expr -- "$arg" : '--rpmmode='` -eq 10 ]; then
rpmmode="`echo $arg | awk -F= '{print $2}'`"
elif [ `expr -- "$arg" : '--installdir='` -eq 13 ]; then
installdir="`echo $arg | awk -F= '{print $2}'`"
prefix=`dirname $installdir`
prefix=`dirname $prefix`
elif [ `expr -- "$arg" : '--user='` -eq 7 ]; then
user="`echo $arg | awk -F= '{print $2}'`"
elif [ `expr -- "$arg" : '--quiet'` -eq 7 ]; then
quiet=1
elif [ `expr -- "$arg" : '--plugin='` -eq 9 ]; then
plugin="`echo $arg | awk -F= '{print $2}'`"
else
echo "post-install: ignoring unknown argument: $arg" 1>&2
fi
done
if [ $user != "root" ]; then
export COLUMNSTORE_INSTALL_DIR=$installdir
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib:$installdir/mysql/lib
else
# add library config file
/bin/cp -f $installdir/bin/columnstore.conf /etc/ld.so.conf.d/. >/dev/null 2>&1
ldconfig >/dev/null 2>&1
fi
#check 64-bit OS compatiable
arch=`uname -m`
patcnt=`expr "$arch" : 'i.86'`
is64bitos=1
if [ $patcnt -ne 0 ]; then
is64bitos=0
fi
is64bitpkg=1
file $installdir/bin/PrimProc | grep '64-bit' >/dev/null 2>&1
if [ $? -ne 0 ]; then
is64bitpkg=0
fi
if [ $is64bitpkg -eq 1 -a $is64bitos -ne 1 ]; then
echo "ERROR: Incompatiable Version, package is intended for a x86_64 architecture"
echo "exiting...."
exit 1
fi
if [ ! -f $installdir/etc/Columnstore.xml ]; then
echo "$installdir/etc/Columnstore.xml not found, exiting"
exit 1
fi
cd $installdir/lib || exit 1
touch /dev/shm/columnstore-test && rm /dev/shm/columnstore-test
if [ $? -ne 0 ] ; then
echo "User $user will need R/W access to /dev/shm."
exit 1
fi
#remove libudfsdk.so.1.0.0 file, if it exist # mcol-875
rm -f $installdir/lib/libudfsdk.so
rm -f $installdir/lib/libudfsdk.so.1
rm -f $installdir/lib/libudfsdk.so.1.0.0
for lib in *.so.1.0.0; do
blib=`basename $lib .1.0.0`
ln -sf $lib $blib
ln -sf $lib ${blib}.1
done
for lib in *.so.1.1.0; do
blib=`basename $lib .1.1.0`
ln -sf $lib $blib
ln -sf $lib ${blib}.1
done
chown -h $user.$user *.so >/dev/null 2>&1
if [ -f libstdc++.so.6.0.14 ]; then
ln -sf libstdc++.so.6.0.14 libstdc++.so.6
chown -h $user.$user libstdc++.so.6 >/dev/null 2>&1
fi
# softlink for libperl.sp, used by cplogger
ln -s /usr/lib64/perl5/CORE/libperl.so /usr/lib64/libperl.so >/dev/null 2>&1
if [ $installdir != "/usr/local/mariadb/columnstore" ]; then
sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstoreAlias
fi
if [ $user != "root" ]; then
if [ -f $prefix/.bash_profile ]; then
profileFile=$prefix/.bash_profile
elif [ -f $prefix/.profile ]; then
profileFile=$prefix/.profile
else
profileFile=$prefix/.bashrc
touch $prefix/.bashrc
fi
if [ ! -f ${profileFile}_backup ]; then
cp $profileFile ${profileFile}_backup
fi
egrep -qs 'MariaDB Columnstore Non-Root Environment Variables' ${profileFile}
rc1=$?
if [ $rc1 -ne 0 ]; then
echo " " >> ${profileFile}
echo "# MariaDB Columnstore Non-Root Environment Variables" >> ${profileFile}
echo "export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR" >> ${profileFile}
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COLUMNSTORE_INSTALL_DIR/lib:$COLUMNSTORE_INSTALL_DIR/mysql/lib" >> ${profileFile}
fi
egrep -qs 'MariaDB Columnstore Non-Root Alias Variables' ${profileFile}
rc1=$?
if [ $rc1 -ne 0 ]; then
echo " " >> ${profileFile}
echo "# MariaDB Columnstore Non-Root Alias Variables" >> ${profileFile}
cat $installdir/bin/columnstoreAlias >> ${profileFile}
fi
#source the file
. ${profileFile}
else
profileFile="/etc/profile.d/columnstoreAlias.sh"
/bin/cp -f $installdir/bin/columnstoreAlias /etc/profile.d/columnstoreAlias.sh
chmod 644 /etc/profile.d/columnstoreAlias.sh >/dev/null 2>&1
fi
# set Profile File in config file
$installdir/bin/setConfig -d Installation ProfileFile $profileFile
# create directories
if [ $user == "root" ]; then
test -d /var/log/mariadb || mkdir /var/log/mariadb >/dev/null 2>&1
test -d /var/log/mariadb/columnstore || mkdir /var/log/mariadb/columnstore >/dev/null 2>&1
test -d /var/log/mariadb/columnstore/archive || mkdir /var/log/mariadb/columnstore/archive >/dev/null 2>&1
test -d /var/log/mariadb/columnstore/corefiles || mkdir /var/log/mariadb/columnstore/corefiles >/dev/null 2>&1
test -d /var/log/mariadb/columnstore/trace || mkdir /var/log/mariadb/columnstore/trace >/dev/null 2>&1
test -h /var/log/mariadb/columnstore/data && rm -f /var/log/mariadb/columnstore/data
chmod 755 /var/log/mariadb/columnstore/corefiles > /dev/null 2>&1
fi
# make sure trace dir is world-writable and sticky
test -d $installdir/data || mkdir $installdir/data
test -d $installdir/data1 || mkdir $installdir/data1
test -d $installdir/data1/systemFiles || mkdir $installdir/data1/systemFiles
test -d $installdir/data1/systemFiles/dbrm || mkdir $installdir/data1/systemFiles/dbrm
test -d $installdir/data1/systemFiles/dataTransaction || rmdir $installdir/data1/systemFiles/dataTransaction >/dev/null 2>&1
test -d $installdir/data1/systemFiles/dataTransaction/archive || rmdir $installdir/data1/systemFiles/dataTransaction/archive >/dev/null 2>&1
chmod 1755 $installdir/data1 >/dev/null 2>&1
chmod -R 1755 $installdir/data1/systemFiles >/dev/null 2>&1
chmod 1755 $installdir/etc > /dev/null 2>&1
#create the bulk-load dirs
mkdir -p $installdir/data/bulk/data/import >/dev/null 2>&1
mkdir -p $installdir/data/bulk/log >/dev/null 2>&1
mkdir -p $installdir/data/bulk/job >/dev/null 2>&1
mkdir -p $installdir/data/bulk/rollback >/dev/null 2>&1
mkdir -p $installdir/data/bulk/tmpjob >/dev/null 2>&1
rm -f $installdir/data/bulk/tmpjob/* >/dev/null 2>&1
#get temp base directory
tmpDir="/tmp"
if [ $user != "root" ]; then
tmpDir=$HOME"/.tmp"
mkdir $tmpDir >/dev/null 2>&1
else
#get columnstore temp file directory name
TempFileDir=`$installdir/bin/getConfig SystemConfig TempFileDir`
tmpDir=${tmpDir}${TempFileDir}
fi
#set base columnstore temp file directory
$installdir/bin/setConfig -d SystemConfig SystemTempFileDir $tmpDir
#get place file buffer temporary files
hdfsRdwrScratch=`$installdir/bin/getConfig SystemConfig hdfsRdwrScratch`
hdfsDir=${tmpDir}${hdfsRdwrScratch}
#create place file buffer temporary files
mkdir -p $hdfsDir >/dev/null 2>&1
#create mount directories
mkdir /mnt/tmp > /dev/null 2>&1
# remove mysql archive log
test -d $installdir/mysql/db || mkdir -p $installdir/mysql/db
rm -rf $installdir/mysql/db/columnstore_log_archive > /dev/null 2>&1
# delete Columnstore shared memory segments
$installdir/bin/clearShm > /dev/null 2>&1
#check and create rc.local file if missing
if [ -f /etc/rc.d ]; then
RCFILE=/etc/rc.d/rc.local
else
RCFILE=/etc/rc.local
fi
if [ $user = "root" ]; then
touch $RCFILE
chmod +x $RCFILE
else
printf '%s\n' '#!/bin/bash' "#" | tee -a $RCFILE > /dev/null 2>&1
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`
if [ -n "$systemctl" ]; then
chmod 644 $installdir/bin/columnstore.service
cp $installdir/bin/columnstore.service /usr/lib/systemd/system/. >/dev/null 2>&1
cp $installdir/bin/columnstore.service /lib/systemd/system/. >/dev/null 2>&1
systemctl enable columnstore >/dev/null 2>&1
else
chkconfig=`which chkconfig 2>/dev/null`
if [ -n "$chkconfig" ]; then
cp $installdir/bin/columnstore /etc/init.d/. >/dev/null 2>&1
chkconfig --add columnstore > /dev/null 2>&1
chkconfig columnstore on > /dev/null 2>&1
else
cp $installdir/bin/columnstore /etc/init.d/. >/dev/null 2>&1
updaterc=`which update-rc.d 2>/dev/null`
if [ -n "$updaterc" ]; then
update-rc.d columnstore defaults 99 > /dev/null 2>&1
else
echo ""
echo "Package 'systemctl', 'chkconfig' or 'update-rc.d' not installed, contact your sysadmin if you want to setup to autostart for columnstore"
fi
fi
fi
fi
if [ $user = "root" ]; then
$installdir/bin/syslogSetup.sh install > $tmpDir/syslog_install.log 2>&1
#check if MariaDB Columnstore system logging was setup
cat $tmpDir/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1
if [ $? -eq 0 ]; then
cat $tmpDir/syslog_install.log
fi
else
sed -i -e s@/usr/local/mariadb/columnstore@$installdir@g $installdir/bin/columnstoreLogRotate
sed -i -e s@prefix=/home/guest@prefix=$prefix@g $installdir/bin/*
chown $user:$user $installdir/etc/Columnstore.xml
cat <<EOD
NOTE: For non-root install, you will need to run the following commands as root user to
setup the MariaDB ColumnStore System Logging
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/syslogSetup.sh --installdir=$installdir --user=$user install
EOD
fi
#determine lock file directory
# Lock directory for root user
lockdir='/var/lock/subsys'
if [ $user != "root" ];then
# Lock directory for non-root user
lockdir=$prefix/.lock
fi
$installdir/bin/setConfig -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
/bin/cp -f $installdir/etc/AlarmConfig.xml $installdir/etc/AlarmConfig.xml.installSave > /dev/null 2>&1
#check and get amazon env variables
aws=`which aws 2>/dev/null`
if [ -z "aws" ]; then
$installdir/bin/MCSgetCredentials.sh >/dev/null 2>&1
fi
#log install message
test -f $installdir/post/functions && . $installdir/post/functions
if [ $user = "root" ]; then
$installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
else
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
fi
#setup hadoop
hadoop=`which hadoop 2>/dev/null`
if [ -z "$hadoop" ]; then
#check for non-root user
if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then
cat <<EOD
The next steps are:
If installing on a pm1 node:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/postConfigure -i $installdir
If installing on a non-pm1 using the non-distributed option:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/columnstore start
EOD
else
cat <<EOD
The next step is:
If installing on a pm1 node:
$installdir/bin/postConfigure
If installing on a non-pm1 using the non-distributed option:
$installdir/bin/columnstore start
EOD
fi
exit 0
else
chmod 755 $installdir/bin/setenv-hdfs-12
chmod 755 $installdir/bin/setenv-hdfs-20
. $installdir/bin/setenv-hdfs-20
$installdir/bin/hdfsCheck $installdir/lib/hdfs-20.so > $tmpDir/hdfs-20-test.log 2>&1
if [ $? -eq 0 ]; then
#Passed set in config file
$installdir/bin/setConfig -d SystemConfig DataFilePlugin $installdir/lib/hdfs-20.so
$installdir/bin/setConfig -d SystemConfig DataFileEnvFile setenv-hdfs-20
#check for non-root user
if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then
cat <<EOD
If you are intending to install MariaDB Columnstore over Hadoop, the next steps are:
If installing on a pm1 node:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
. $installdir/bin/setenv-hdfs-20
$installdir/bin/postConfigure -i $installdir
If installing on a non-pm1 using the non-distributed option:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/columnstore start
If you are intending to install MariaDB Columnstore without Hadoop, the next steps are:
If installing on a pm1 node:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/postConfigure -i $installdir
If installing on a non-pm1 using the non-distributed option:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
$installdir/bin/columnstore start
EOD
else
cat <<EOD
If you are intending to install MariaDB Columnstore over Hadoop, the next steps are:
. $installdir/bin/setenv-hdfs-20
$installdir/bin/postConfigure
If installing on a non-pm1 using the non-distributed option:
. $installdir/bin/setenv-hdfs-20
$installdir/bin/columnstore start
If you are intending to install MariaDB Columnstore without Hadoop, the next step is:
If installing on a pm1 node:
$installdir/bin/postConfigure
If installing on a non-pm1 using the non-distributed option:
$installdir/bin/columnstore start
EOD
fi
else
. $installdir/bin/setenv-hdfs-12
$installdir/bin/hdfsCheck $installdir/lib/hdfs-12.so > $tmpDir/hdfs-12-test.log 2>&1
if [ $? -eq 0 ]; then
#Passed set in config file
$installdir/bin/setConfig -d SystemConfig DataFilePlugin $installdir/lib/hdfs-12.so
$installdir/bin/setConfig -d SystemConfig DataFileEnvFile setenv-hdfs-12
if [ $installdir != "/usr/local/mariadb/columnstore" -a $quiet -eq 0 ]; then
cat <<EOD
If you are intending to install MariaDB Columnstore over Hadoop, the next steps are:
If installing on a pm1 node:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
. $installdir/bin/setenv-hdfs-12
$installdir/bin/postConfigure -i $installdir
If you are intending to install MariaDB Columnstore without Hadoop, the next steps are:
If installing on a pm1 node:
export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
. $installdir/bin/setenv-hdfs-12
$installdir/bin/postConfigure -i $installdir
EOD
else
cat <<EOD
If you are intending to install MariaDB Columnstore over Hadoop, the next steps are:
If installing on a pm1 node:
. $installdir/bin/setenv-hdfs-12
$installdir/bin/postConfigure
If installing on a non-pm1 using the non-distributed option:
. $installdir/bin/setenv-hdfs-12
$installdir/bin/columnstore start
If you are intending to install MariaDB Columnstore without Hadoop, the next step is:
If installing on a pm1 node:
$installdir/bin/postConfigure
If installing on a non-pm1 using the non-distributed option:
$installdir/bin/columnstore start
EOD
fi
else
cat <<EOD
If you are intending to install MariaDB Columnstore over Hadoop, the Hadoop sanity check did not pass.
Most likely there is an environment setup conflict or the hdfs services are down.
Please Contact MariaDB Columnstore Customer Support.
EOD
fi
fi
fi
exit 0