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