#!/bin/sh # We have to re-enable SCL environment, because /sbin/service # clears almost all environment variables. # Since X_SCLS is cleared as well, we lose information about other # collections enabled. . /opt/rh/rh-mariadb!!!VER!!!/service-environment for sclname in $RH_MARIADB!!!VER!!!_SCLS_ENABLED ; do . /opt/rh/$sclname/enable export X_SCLS="$X_SCLS $sclname" done # we want start daemon only inside "scl enable" invocation if ! scl_enabled $sclname ; then echo "Collection $sclname has to be listed in /opt/rh/rh-mariadb!!!VER!!!/service-environment" exit 1 fi status=$(/sbin/e-smith/config getprop mariadb status) fixtables=$(/sbin/e-smith/config getprop mariadb autofixtables || echo "disabled") if [ "$fixtables" = "enabled" ]; then /sbin/e-smith/config delprop mariadb failsbackup fi failsbackup=$(/sbin/e-smith/config getprop mariadb failsbackup || echo "disabled") onfailure () { db=$1 message="" if [ "$failsbackup" = "enabled" ]; then exit 1; message="There was an error trying to dump database $db, please fix this db. We stop there without backups." echo $message echo $message | /usr/bin/mail -s "error on backup of $db MariaDB !!!VER!!! database" admin fi message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 if [ "$fixtables" = "enabled" ]; then repair="failure" message="$message \nTrying to auto-repair the db and do a backup after..." /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqlcheck --socket=!!!SOCKET!!! -s --auto-repair -c "$db" && \ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" message="$message \n => $repair" fi echo $message echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin } if [ "$status" = "disabled" ] then echo "mysqld is disabled - no tables dumped" >&2 exit 0 fi for db in $(/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql --socket=!!!SOCKET!!! -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") do /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db done