|
@@ -44,55 +44,60 @@ function backup_database_local {
|
44
|
44
|
database_name=$1
|
45
|
45
|
|
46
|
46
|
backup_databases_script=/usr/bin/backupdatabases
|
47
|
|
- echo '' >> $backup_databases_script
|
48
|
|
- echo "# Backup the ${database_name} database" >> $backup_databases_script
|
49
|
|
- echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
50
|
|
- echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
51
|
|
- echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
52
|
|
- echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
53
|
|
- echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
54
|
|
- echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
55
|
|
- echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
56
|
|
- echo '' >> $backup_databases_script
|
57
|
|
- echo ' # try to restore yesterdays database' >> $backup_databases_script
|
58
|
|
- echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
59
|
|
- echo '' >> $backup_databases_script
|
60
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
61
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
62
|
|
- echo ' else' >> $backup_databases_script
|
63
|
|
- echo ' # Send a warning email' >> $backup_databases_script
|
64
|
|
- echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
65
|
|
- echo ' fi' >> $backup_databases_script
|
66
|
|
- echo 'else' >> $backup_databases_script
|
67
|
|
- echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
68
|
|
- echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
69
|
|
- echo '' >> $backup_databases_script
|
70
|
|
- echo ' # Make the backup readable only by root' >> $backup_databases_script
|
71
|
|
- echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
72
|
|
- echo 'fi' >> $backup_databases_script
|
|
47
|
+ if ! grep -q "# Backup the ${database_name} database" $backup_databases_script; then
|
|
48
|
+ echo '' >> $backup_databases_script
|
|
49
|
+ echo "# Backup the ${database_name} database" >> $backup_databases_script
|
|
50
|
+ echo "TEMPFILE=/root/${database_name}.sql" >> $backup_databases_script
|
|
51
|
+ echo 'DAILYFILE=/var/backups/${database_name}_daily.sql' >> $backup_databases_script
|
|
52
|
+ echo "mysqldump --password=\"\$MYSQL_PASSWORD\" ${database_name} > \$TEMPFILE" >> $backup_databases_script
|
|
53
|
+ echo 'FILESIZE=$(stat -c%s $TEMPFILE)' >> $backup_databases_script
|
|
54
|
+ echo 'if [ "$FILESIZE" -eq "0" ]; then' >> $backup_databases_script
|
|
55
|
+ echo ' if [ -f $DAILYFILE ]; then' >> $backup_databases_script
|
|
56
|
+ echo ' cp $DAILYFILE $TEMPFILE' >> $backup_databases_script
|
|
57
|
+ echo '' >> $backup_databases_script
|
|
58
|
+ echo ' # try to restore yesterdays database' >> $backup_databases_script
|
|
59
|
+ echo " mysql -u root --password=\"\$MYSQL_PASSWORD\" ${database_name} -o < \$DAILYFILE" >> $backup_databases_script
|
|
60
|
+ echo '' >> $backup_databases_script
|
|
61
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
62
|
+ echo " echo \"Unable to create a backup of the ${database_name} database. Attempted to restore from yesterdays backup\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
63
|
+ echo ' else' >> $backup_databases_script
|
|
64
|
+ echo ' # Send a warning email' >> $backup_databases_script
|
|
65
|
+ echo " echo \"Unable to create a backup of the ${database_name} database.\" | mail -s \"${database_name} backup\" \$EMAIL" >> $backup_databases_script
|
|
66
|
+ echo ' fi' >> $backup_databases_script
|
|
67
|
+ echo 'else' >> $backup_databases_script
|
|
68
|
+ echo ' chmod 600 $TEMPFILE' >> $backup_databases_script
|
|
69
|
+ echo ' mv $TEMPFILE $DAILYFILE' >> $backup_databases_script
|
|
70
|
+ echo '' >> $backup_databases_script
|
|
71
|
+ echo ' # Make the backup readable only by root' >> $backup_databases_script
|
|
72
|
+ echo ' chmod 600 $DAILYFILE' >> $backup_databases_script
|
|
73
|
+ echo 'fi' >> $backup_databases_script
|
|
74
|
+ echo "# End of ${database_name} database backup" >> $backup_databases_script
|
|
75
|
+ fi
|
73
|
76
|
|
74
|
77
|
weekly_backup_script=/etc/cron.weekly/backupdatabasesweekly
|
75
|
|
- if ! grep -q "${database_name}" ${weekly_backup_script}; then
|
|
78
|
+ if ! grep -q "Backup ${database_name}" ${weekly_backup_script}; then
|
76
|
79
|
echo '' >> ${weekly_backup_script}
|
77
|
|
- echo "# ${database_name}" >> ${weekly_backup_script}
|
|
80
|
+ echo "# Backup ${database_name}" >> ${weekly_backup_script}
|
78
|
81
|
echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${weekly_backup_script}
|
79
|
82
|
echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_2weekly.sql" >> ${weekly_backup_script}
|
80
|
83
|
echo 'fi' >> ${weekly_backup_script}
|
81
|
84
|
echo "if [ -f /var/backups/${database_name}_daily.sql ]; then" >> ${weekly_backup_script}
|
82
|
85
|
echo " cp -f /var/backups/${database_name}_daily.sql /var/backups/${database_name}_weekly.sql" >> ${weekly_backup_script}
|
83
|
86
|
echo 'fi' >> ${weekly_backup_script}
|
|
87
|
+ echo "# End of backup for ${database_name}" >> ${weekly_backup_script}
|
84
|
88
|
fi
|
85
|
89
|
|
86
|
90
|
monthly_backup_script=/etc/cron.monthly/backupdatabasesmonthly
|
87
|
|
- if ! grep -q "${database_name}" ${monthly_backup_script}; then
|
|
91
|
+ if ! grep -q "Backup ${database_name}" ${monthly_backup_script}; then
|
88
|
92
|
echo '' >> ${monthly_backup_script}
|
89
|
|
- echo "# ${database_name}" >> ${monthly_backup_script}
|
|
93
|
+ echo "# Backup ${database_name}" >> ${monthly_backup_script}
|
90
|
94
|
echo "if [ -f /var/backups/${database_name}_monthly.sql ]; then" >> ${monthly_backup_script}
|
91
|
95
|
echo " cp -f /var/backups/${database_name}_monthly.sql /var/backups/${database_name}_2monthly.sql" >> ${monthly_backup_script}
|
92
|
96
|
echo 'fi' >> ${monthly_backup_script}
|
93
|
97
|
echo "if [ -f /var/backups/${database_name}_weekly.sql ]; then" >> ${monthly_backup_script}
|
94
|
98
|
echo " cp -f /var/backups/${database_name}_weekly.sql /var/backups/${database_name}_monthly.sql" >> ${monthly_backup_script}
|
95
|
99
|
echo 'fi' >> ${monthly_backup_script}
|
|
100
|
+ echo "# End of backup for ${database_name}" >> ${monthly_backup_script}
|
96
|
101
|
fi
|
97
|
102
|
|
98
|
103
|
if ! grep -q "${database_name}" /etc/cron.hourly/repair; then
|