MySQL scheduled automatic backup and automatic recovery

Requirement: Host A automatically backs up the dump at 3:00 a.m. every day, and then sends it to host B. Host B automatically restores the dump at 4:00 am every day.

Host A IP: 10.180.50.24
Host B IP: 10.180.50.23

Host A is remotely copied to host B using the scp command. Need to do key mutual trust first, see: http://elvis4139.iteye.com/blog/2406401

1. Host A shell script: backup.sh
#!/bin/sh
cd /bak/bakmysql
echo "============MySQL automatic backup started ============"

BackFolder=/usr/bak/mysqldump
Now=$(date +"%Y%m%d")
file=_dump_$Now.sql.gz

echo "[1/5]Move the previous day's backup file start..."
mv *_dump_* $BackFolder
echo "The backup file completed the day before the move"

echo "---------------------------------"

echo "[2/5]Database scpnf backup started..."
mysqldump -udump -p'dump' scpnf | gzip > scpnf$file
echo "Database scpnf backup completed"
echo "---------------------------------"
echo "[3/5]Database fecs backup started..."
mysqldump -udump -p'dump' fecs | gzip > fecs$file
echo "Database fecs backup completed"
echo "---------------------------------"
echo "[4/5] Remote copy database backup file started..."
scp *$file [email protected]:/usr/dbbackup
echo "Remote copy database backup file completed"
echo "---------------------------------"
echo "[5/5]Backup file cleanup started three days ago..."
RetainDay=$(date -d -3day  +"%Y%m%d")
RetainDayFile=_dump_$RetainDay.sql.gz

if [ -f $BackFolder/scpnf$RetainDayFile ]
then
rm -rf $BackFolder/scpnf$RetainDayFile
echo "Successfully deleted backup file scpnf$RetainDayFile"
else
echo "Cannot find backup file scpnf$RetainDayFile"
be

if [ -f $BackFolder/fecs$RetainDayFile ]
then
rm -rf $BackFolder/fecs$RetainDayFile
echo "Successfully deleted backup file fecs$RetainDayFile"
else
echo "Cannot find backup file fecs$RetainDayFile"
be

echo "============MySQL automatic backup completed============"




2. Add the host A shell script: backup.sh to the scheduled task

vim /etc/crontab

0 3 * * * root /bak/bakmysql/backup.sh


3. Host B automatically restores the shell script: mysql_restore.sh
####################################################################
#
#Description: Automatically restore the database scpnf and fecs libraries from the backup script at 4 am every day, and delete the backup files three days ago.
#
####################################################################
#!/bin/sh
cd /usr/dbbackup
echo "======================================"

#Backup file name
File=_dump_$(date +"%Y%m%d").sql.gz
echo "1/3: Database [fecs] started to restore..."
gunzip < fecs$File | mysql -uroot -p'password' fecs
echo "Database [fecs] restored successfully!"
echo "------------------------------------"

echo "2/3: Database [scpnf] started to restore..."
gunzip < scpnf$File | mysql -uroot -p'password' scpnf
echo "Database [scpnf] restored successfully!"
echo "------------------------------------"

echo "3/3: Prepare to delete the data backup file three days ago..."
RetainDays=$(date -d -3day  +"%Y%m%d")

#delete fecs backup file
if [ -f ./fecs_dump_$RetainDays.sql.gz ]
then
rm -rf ./fecs_dump_$RetainDays.sql.gz
echo "Successfully deleted file: fecs_dump_$RetainDays.sql.gz"
else
echo "No backup file found: fecs_dump_$RetainDays.sql.gz"
be

#delete scpnf backup file
if [ -f ./scpnf_dump_$RetainDays.sql.gz ]
then
rm -rf ./scpnf_dump_$RetainDays.sql.gz
echo "Successfully deleted file: scpnf_dump_$RetainDays.sql.gz"
else
echo "No backup file found: scpnf_dump_$RetainDays.sql.gz"
be
echo "======================================"


4. Add the host B shell script: backup.sh to the scheduled task

vim /etc/crontab

0 4 * * * root /usr/dbbackup/mysql_restore.sh

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326189605&siteId=291194637