From a04843d226f76ff8dfd537352b7796064ee2dcdc Mon Sep 17 00:00:00 2001 From: Bob Igo Date: Sat, 6 Jun 2009 15:25:26 -0400 Subject: mysql server was not always working properly in chroot within install_db_chroot.sh --- .../LinHES-config-svn/install_db_chroot.sh | 120 ++++++++++++++------- 1 file changed, 80 insertions(+), 40 deletions(-) diff --git a/abs/core-testing/LinHES-config-svn/install_db_chroot.sh b/abs/core-testing/LinHES-config-svn/install_db_chroot.sh index 1a0131e..f187ba8 100755 --- a/abs/core-testing/LinHES-config-svn/install_db_chroot.sh +++ b/abs/core-testing/LinHES-config-svn/install_db_chroot.sh @@ -11,53 +11,93 @@ echo "install_db_chroot hostname is $hostname" . $MV_ROOT/bin/install_functions.sh #myhost=`cat /etc/hostname` -#mount -t proc none /proc -pacman --noconfirm -Sf mysql -/etc/rc.d/mysqld - -status=1 -mysqlstatus=1 -while [ ! $status = 0 ] -do - /etc/rc.d/mysqld stop - sleep 1 - /etc/rc.d/mysqld start - mysqlstatus=$? - if [ $mysqlstatus = 0 ] - then - mysql -e "show databases;" - showstatus=$? - if [ $showstatus = 0 ] - then - pacman --noconfirm -R mythdb-initial - pacman --noconfirm -S mythdb-initial - $MV_ROOT/bin/restore_default_settings.sh -c load - DISPLAY=127.0.0.1:0 $MV_ROOT/bin/MythVantage -t restore,default_1 - $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings - $MV_ROOT/bin/systemconfig.sh misc,hostype,this_is_install - - update_db_settings HostServiceMythWEB "1" - echo 'UseMythWEB="1"' >> /etc/systemconfig - - #update database to allow user jobs on this host. - $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW - $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL - if [ -d /data/srv/mysql/mythconverg ] - #if [ -d /var/lib/mysql/mythconverg ] - then +# Put a limit on how many times we try to (re-)start MySQL +success_test() { + # parameter: number of tries to start mysqld so far + PID=`pidof -o %PPID /usr/sbin/mysqld` + if [ -z "$PID" ]; then + if [ $1 -gt 3 ]; then + echo "ERROR: Failed to start MySQL server in $1 attempts." + sleep 5 + exit 1 + else + echo "Tried $1 time(s) to start MySQL server." + return 1 + fi + else + return 0 + fi +} + +mysqld_tries=0 +# See if MySQL server is running; try several ways to start it if it's not. +while true; do + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server is running" + break + else + echo "MySQL server is not running. Trying to start it." + # Maybe it just needs to be started + /etc/rc.d/mysqld start + mysqld_tries=$((mysqld_tries + 1)) + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server has been started" + break + else + echo "MySQL server may not be installed. Trying to install it." + # Maybe it's not installed; try (re-)installing it and starting it + pacman --noconfirm -Sf mysql + /etc/rc.d/mysqld start + mysqld_tries=$((mysqld_tries + 1)) + success_test $mysqld_tries + if [ $? -eq 0 ]; then + echo "MySQL server has been installed and started" + break + else + echo "MySQL server would not start, even after (re-)installing it." + fi + fi + fi +done + +# At this point, MySQL server should be up and running + +while true; do + mysql -e "show databases;" + + if [ $? -eq 0 ]; then + pacman --noconfirm -R mythdb-initial + pacman --noconfirm -S mythdb-initial + $MV_ROOT/bin/restore_default_settings.sh -c load + DISPLAY=127.0.0.1:0 $MV_ROOT/bin/MythVantage -t restore,default_1 + $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings + $MV_ROOT/bin/systemconfig.sh misc,hostype,this_is_install + + update_db_settings HostServiceMythWEB "1" + echo 'UseMythWEB="1"' >> /etc/systemconfig + + #update database to allow user jobs on this host. + $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW + $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL + #if [ -d /var/lib/mysql/mythconverg ] + if [ -d /data/srv/mysql/mythconverg ]; then # pacman --noconfirm -R webcalendar # pacman --noconfirm --nodeps -S webcalendar - status=0 - fi + break + else + echo "Failed to create mythconverg database. Will re-try." + sleep 1 + fi # if [ $SystemType = "Master_backend" ] # then # $MV_ROOT/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost # fi - fi + else + echo "Failed to look for databases. Will re-try." + sleep 1 fi done /etc/rc.d/mysqld stop #umount /proc - - - -- cgit v0.12