mariadb/storage/tokudb/scripts/setup.mysql.bash

195 lines
4.9 KiB
Bash
Raw Normal View History

2013-07-22 14:43:12 -04:00
#!/usr/bin/env bash
function usage() {
echo "setup.mysql.bash"
echo "--mysqlbuild=$mysqlbuild --shutdown=$shutdown --install=$install --startup=$startup"
}
mysqlbuild=
shutdown=1
install=1
startup=1
s3bucket=tokutek-mysql-build
sleeptime=60
builtins="mysqlbuild shutdown install startup s3bucket sleeptime"
2013-07-22 14:43:12 -04:00
mysqld_args="--user=mysql --core-file --core-file-size=unlimited"
sudo=/usr/bin/sudo
2013-07-22 14:43:12 -04:00
defaultsfile=""
if [ -f /etc/$(whoami).my.cnf ] ; then
defaultsfile=/etc/$(whoami).my.cnf
fi
function is_builtin() {
local v=$1; shift
local x
for x in $* ; do
if [ $v = $x ] ; then echo 1; return; fi
done
echo 0
}
while [ $# -gt 0 ] ; do
arg=$1; shift
if [ $arg = "--help" -o $arg = "-h" -o $arg = "-?" ] ; then
usage; exit 1
elif [[ $arg =~ --(.*)=(.*) ]] ; then
r=$(is_builtin ${BASH_REMATCH[1]} $builtins)
if [ $r = 1 ] ; then
eval ${BASH_REMATCH[1]}=${BASH_REMATCH[2]}
else
mysqld_args="$mysqld_args $arg"
fi
else
mysqld_args="$mysqld_args $arg"
fi
done
if [ -d /data/mysql/tmp ] ; then mysqld_args="$mysqld_args --tmpdir=/data/mysql/tmp"; fi
2013-07-22 14:43:12 -04:00
if [[ $mysqlbuild =~ (.*)-(tokudb\-.*)-(linux)-(x86_64) ]] ; then
mysql=${BASH_REMATCH[1]}
tokudb=${BASH_REMATCH[2]}
system=${BASH_REMATCH[3]}
arch=${BASH_REMATCH[4]}
else
echo $mysqlbuild is not a tokudb build
2013-07-22 14:43:12 -04:00
fi
if [ ! -d downloads ] ; then mkdir downloads; fi
pushd downloads
if [ $? != 0 ] ; then exit 1; fi
basedir=$PWD
mysqltarball=$mysqlbuild.tar.gz
if [ -f $mysqlbuild.tar.gz ] ; then
compression=-z
mysqltarball=$mysqlbuild.tar.gz
elif [ -f $mysqlbuild.tar.bz2 ] ; then
compression=-j
mysqltarball=$mysqlbuild.tar.bz2
fi
2013-07-22 14:43:12 -04:00
# get the release
if [ ! -f $mysqltarball ] ; then
s3get $s3bucket $mysqltarball $mysqltarball
if [ $? -ne 0 ] ; then exit 1; fi
fi
if [ ! -f $mysqltarball.md5 ] ; then
s3get $s3bucket $mysqltarball.md5 $mysqltarball.md5
if [ $? -ne 0 ] ; then exit 1; fi
fi
2013-07-23 10:23:09 -04:00
# check the md5 sum
2013-07-22 14:43:12 -04:00
md5sum --check $mysqltarball.md5
if [ $? -ne 0 ] ; then
2013-07-23 10:23:09 -04:00
# support jacksum md5 output which is almost the same as md5sum
diff -b <(cat $mysqltarball.md5) <(md5sum $mysqltarball)
if [ $? -ne 0 ] ; then exit 1; fi
fi
2013-07-22 14:43:12 -04:00
# set ldpath
ldpath=""
if [ -d /usr/local/gcc-4.7/lib64 ] ; then
echo skip ldpath="export LD_LIBRARY_PATH=/usr/local/gcc-4.7/lib64:\$LD_LIBRARY_PATH;"
fi
2013-07-22 14:43:12 -04:00
# shutdown mysql
if [ $shutdown -ne 0 ] ; then
if [ -x /etc/init.d/mysql ] ; then
$sudo setsid /etc/init.d/mysql stop
2013-07-22 14:43:12 -04:00
else
/usr/local/mysql/bin/mysqladmin shutdown
fi
sleep $sleeptime
2013-07-22 14:43:12 -04:00
fi
pushd /usr/local
if [ $? = 0 ] ; then
rm mysql
popd
fi
# install the release
pushd /usr/local/mysqls 2>/dev/null
if [ $? = 0 ] ; then
mysqldir=mysqls/$mysqlbuild
else
pushd /usr/local
if [ $? -ne 0 ] ; then exit 1; fi
mysqldir=$mysqlbuild
fi
if [ ! -d $mysqlbuild ] || [ $install -ne 0 ] ; then
rm mysql
if [ -d $mysqlbuild ] ; then $sudo rm -rf $mysqlbuild; fi
2013-07-22 14:43:12 -04:00
tar -x $compression -f $basedir/$mysqltarball
2013-07-22 14:43:12 -04:00
if [ $? -ne 0 ] ; then exit 1; fi
ln -s $mysqldir /usr/local/mysql
if [ $? -ne 0 ] ; then exit 1; fi
ln -s $mysqldir /usr/local/$mysqlbuild
if [ $? -ne 0 ] ; then exit 1; fi
2013-07-22 14:43:12 -04:00
installdb=$mysqlbuild/bin/mysql_install_db
if [ ! -f $installdb ] ; then
installdb=$mysqlbuild/scripts/mysql_install_db
fi
$sudo chown -R mysql $mysqlbuild/data
$sudo chgrp -R mysql $mysqlbuild/data
2013-07-22 14:43:12 -04:00
# 5.6 debug build needs this
if [ ! -f $mysqlbuild/bin/mysqld ] && [ -f $mysqlbuild/bin/mysqld-debug ] ; then
ln $mysqlbuild/bin/mysqld-debug $mysqlbuild/bin/mysqld
fi
if [ -z "$defaultsfile" ] ; then
default_arg=""
2013-07-22 14:43:12 -04:00
else
default_arg="--defaults-file=$defaultsfile"
2013-07-22 14:43:12 -04:00
fi
$sudo bash -c "$ldpath $installdb $default_arg --user=mysql --basedir=$PWD/$mysqlbuild --datadir=$PWD/$mysqlbuild/data"
2013-07-22 14:43:12 -04:00
if [ $? -ne 0 ] ; then exit 1; fi
else
# create link
rm /usr/local/mysql
2013-07-22 14:43:12 -04:00
ln -s $mysqldir /usr/local/mysql
if [ $? -ne 0 ] ; then exit 1; fi
rm /usr/local/$mysqlbuild
ln -s $mysqldir /usr/local/$mysqlbuild
if [ $? -ne 0 ] ; then exit 1; fi
2013-07-22 14:43:12 -04:00
fi
popd
# start mysql
if [ $startup -ne 0 ] ; then
ulimit -a
# increase the open file limit
ulimit -n 10240
exitcode=$?
echo ulimit -n 10240 exitcode $exitcode
if [ -x /etc/init.d/mysql ] ; then
$sudo setsid /etc/init.d/mysql start
2013-07-22 14:43:12 -04:00
else
if [ -z "$defaultsfile" ] ; then
default_arg=""
else
default_arg="--defaults-file=$defaultsfile"
fi
$sudo -b bash -c "$ldpath /usr/local/mysql/bin/mysqld_safe $default_arg $mysqld_args" >/dev/null 2>&1 &
2013-07-22 14:43:12 -04:00
fi
sleep $sleeptime
2013-07-22 14:43:12 -04:00
# add mysql grants
/usr/local/mysql/bin/mysql -u root -e "grant all on *.* to tokubuild@localhost"
/usr/local/mysql/bin/mysql -u root -e "grant all on *.* to 'ec2-user'@localhost"
fi
popd
exit 0