59 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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
 | 
