Repair database is a separate command
This commit is contained in:
parent
bafed779e3
commit
abdc9b593f
Binary file not shown.
|
@ -5569,61 +5569,18 @@ function backup_databases_script_header {
|
||||||
}
|
}
|
||||||
|
|
||||||
function repair_databases_script {
|
function repair_databases_script {
|
||||||
|
if [ -f /etc/cron.hourly/repair ]; then
|
||||||
|
sed -i "s|/usr/bin/repairdatabase|${PROJECT_NAME}-repair-database}|g" /etc/cron.hourly/repair
|
||||||
|
fi
|
||||||
|
|
||||||
if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
|
if grep -Fxq "repair_databases_script" $COMPLETION_FILE; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f $DATABASE_PASSWORD_FILE ]; then
|
if [ ! -f $DATABASE_PASSWORD_FILE ]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo '#!/bin/bash' > /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo 'DATABASE=$1' >> /usr/bin/repairdatabase
|
|
||||||
echo "EMAIL=$MY_EMAIL_ADDRESS" >> /usr/bin/repairdatabase
|
|
||||||
echo "BACKUP_TYPE='daily'" >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo 'if [ $2 ]; then' >> /usr/bin/repairdatabase
|
|
||||||
echo ' BACKUP_TYPE=$2' >> /usr/bin/repairdatabase
|
|
||||||
echo 'fi' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo -n 'MYSQL_ROOT_PASSWORD=$(cat ' >> /usr/bin/repairdatabase
|
|
||||||
echo "$DATABASE_PASSWORD_FILE)" >> /usr/bin/repairdatabase
|
|
||||||
echo 'TEMPFILE=/root/repairdatabase_$DATABASE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo 'umask 0077' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo '# check the database' >> /usr/bin/repairdatabase
|
|
||||||
echo 'mysqlcheck -c -u root --password=$MYSQL_ROOT_PASSWORD $DATABASE > $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo '# Attempt to repair the database if it contains errors' >> /usr/bin/repairdatabase
|
|
||||||
echo 'if grep -q "Error" "$TEMPFILE"; then' >> /usr/bin/repairdatabase
|
|
||||||
echo ' mysqlcheck -u root --password=$MYSQL_ROOT_PASSWORD --auto-repair $DATABASE' >> /usr/bin/repairdatabase
|
|
||||||
echo 'else' >> /usr/bin/repairdatabase
|
|
||||||
echo ' # No errors were found, so exit' >> /usr/bin/repairdatabase
|
|
||||||
echo ' rm -f $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo ' exit 0' >> /usr/bin/repairdatabase
|
|
||||||
echo 'fi' >> /usr/bin/repairdatabase
|
|
||||||
echo 'rm -f $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo '# Check the database again' >> /usr/bin/repairdatabase
|
|
||||||
echo 'mysqlcheck -c -u root --password=$MYSQL_ROOT_PASSWORD $DATABASE > $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo '# If it still contains errors then restore from backup' >> /usr/bin/repairdatabase
|
|
||||||
echo 'if grep -q "Error" "$TEMPFILE"; then' >> /usr/bin/repairdatabase
|
|
||||||
echo ' mysql -u root --password=$MYSQL_ROOT_PASSWORD $DATABASE -o < /var/backups/${DATABASE}_${BACKUP_TYPE}.sql' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo ' # Send a warning email' >> /usr/bin/repairdatabase
|
|
||||||
echo ' echo "$DATABASE database corruption could not be repaired. Restored from backup." | mail -s "Freedombone database maintenance" $EMAIL' >> /usr/bin/repairdatabase
|
|
||||||
echo ' rm -f $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo ' exit 1' >> /usr/bin/repairdatabase
|
|
||||||
echo 'fi' >> /usr/bin/repairdatabase
|
|
||||||
echo 'rm -f $TEMPFILE' >> /usr/bin/repairdatabase
|
|
||||||
echo '' >> /usr/bin/repairdatabase
|
|
||||||
echo 'exit 0' >> /usr/bin/repairdatabase
|
|
||||||
chmod 600 /usr/bin/repairdatabase
|
|
||||||
chmod +x /usr/bin/repairdatabase
|
|
||||||
|
|
||||||
echo '#!/bin/bash' > /etc/cron.hourly/repair
|
echo '#!/bin/bash' > /etc/cron.hourly/repair
|
||||||
echo '' >> /etc/cron.hourly/repair
|
echo '' >> /etc/cron.hourly/repair
|
||||||
chmod 600 /etc/cron.hourly/repair
|
chmod 600 /etc/cron.hourly/repair
|
||||||
|
@ -7516,7 +7473,7 @@ quit" > $INSTALL_DIR/batch.sql
|
||||||
echo ' cp -f /var/backups/gnusocial_weekly.sql /var/backups/gnusocial_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
|
echo ' cp -f /var/backups/gnusocial_weekly.sql /var/backups/gnusocial_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
|
||||||
echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
|
echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
|
||||||
|
|
||||||
echo '/usr/bin/repairdatabase gnusocial' >> /etc/cron.hourly/repair
|
echo "${PROJECT_NAME}-repair-database gnusocial" >> /etc/cron.hourly/repair
|
||||||
|
|
||||||
nginx_ensite $MICROBLOG_DOMAIN_NAME
|
nginx_ensite $MICROBLOG_DOMAIN_NAME
|
||||||
service php5-fpm restart
|
service php5-fpm restart
|
||||||
|
@ -7838,7 +7795,7 @@ quit" > $INSTALL_DIR/batch.sql
|
||||||
echo ' cp -f /var/backups/hubzilla_weekly.sql /var/backups/hubzilla_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
|
echo ' cp -f /var/backups/hubzilla_weekly.sql /var/backups/hubzilla_monthly.sql' >> /etc/cron.monthly/backupdatabasesmonthly
|
||||||
echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
|
echo 'fi' >> /etc/cron.monthly/backupdatabasesmonthly
|
||||||
|
|
||||||
echo '/usr/bin/repairdatabase hubzilla' >> /etc/cron.hourly/repair
|
echo "${PROJECT_NAME}-repair-database hubzilla" >> /etc/cron.hourly/repair
|
||||||
|
|
||||||
chown -R www-data:www-data /var/www/$HUBZILLA_DOMAIN_NAME/htdocs
|
chown -R www-data:www-data /var/www/$HUBZILLA_DOMAIN_NAME/htdocs
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# .---. . .
|
||||||
|
# | | |
|
||||||
|
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
|
||||||
|
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
|
||||||
|
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
|
||||||
|
#
|
||||||
|
# Freedom in the Cloud
|
||||||
|
#
|
||||||
|
# Checks and repairs a given database
|
||||||
|
|
||||||
|
# License
|
||||||
|
# =======
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
PROJECT_NAME='freedombone'
|
||||||
|
COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
|
||||||
|
CONFIG_FILE=$HOME/${PROJECT_NAME}.cfg
|
||||||
|
|
||||||
|
export TEXTDOMAIN=${PROJECT_NAME}-repair-databases
|
||||||
|
export TEXTDOMAINDIR="/usr/share/locale"
|
||||||
|
|
||||||
|
# The database to be repaired
|
||||||
|
DATABASE=$1
|
||||||
|
|
||||||
|
ADMIN_USERNAME=$(cat $COMPLETION_FILE | grep "Admin user" | -nawk -F ':' '{print $2}')
|
||||||
|
ADMIN_EMAIL_ADDRESS=${ADMIN_USERNAME}@${HOSTNAME}
|
||||||
|
|
||||||
|
# Frequency - daily/weekly
|
||||||
|
BACKUP_TYPE='daily'
|
||||||
|
|
||||||
|
MYSQL_ROOT_PASSWORD=$(cat /root/dbpass)
|
||||||
|
TEMPFILE=/root/repairdatabase_$DATABASE
|
||||||
|
|
||||||
|
umask 0077
|
||||||
|
|
||||||
|
if [ $2 ]; then
|
||||||
|
BACKUP_TYPE=$2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check the database
|
||||||
|
mysqlcheck -c -u root --password="$MYSQL_ROOT_PASSWORD" $DATABASE > $TEMPFILE
|
||||||
|
|
||||||
|
# Attempt to repair the database if it contains errors
|
||||||
|
if grep -q "Error" "$TEMPFILE"; then
|
||||||
|
mysqlcheck -u root --password="$MYSQL_ROOT_PASSWORD" --auto-repair $DATABASE
|
||||||
|
else
|
||||||
|
# No errors were found, so exit
|
||||||
|
rm -f $TEMPFILE
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
rm -f $TEMPFILE
|
||||||
|
|
||||||
|
# Check the database again
|
||||||
|
mysqlcheck -c -u root --password="$MYSQL_ROOT_PASSWORD" $DATABASE > $TEMPFILE
|
||||||
|
|
||||||
|
# If it still contains errors then restore from backup
|
||||||
|
if grep -q "Error" "$TEMPFILE"; then
|
||||||
|
mysql -u root --password="$MYSQL_ROOT_PASSWORD" $DATABASE -o < /var/backups/${DATABASE}_${BACKUP_TYPE}.sql
|
||||||
|
|
||||||
|
# Send a warning email
|
||||||
|
echo $"$DATABASE database corruption could not be repaired. Restored from backup." | mail -s $"${PROJECT_NAME} database maintenance" $ADMIN_EMAIL_ADDRESS
|
||||||
|
rm -f $TEMPFILE
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
rm -f $TEMPFILE
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue