需要本低和异地安装rsync服务,两机做免密登录
#!/bin/bash
MYSQLHOST=localhost
MYSQLPASS=Passw0rd!
BACKUPDIR=/data01/BACKUP
REMOTE_HOST=cluster003
REMOTE_DIR=/data01/BACKUP/MYSQL-CLUSTER001
LOCAL_BACKUP_FILE_NUMBER=5
REMOTE_BACKUP_FILE_NUMBER=7
DAY=$(/usr/bin/date +%Y%m%d%H%M%S)
FILENAME=MariaDB-${DAY}.sql
BACKUP_FILE_PATH=${BACKUPDIR}/${FILENAME}
MYSQLDUMP=/usr/bin/mysqldump
if [ -d ${BACKUPDIR} ] && [ -w ${BACKUPDIR} ]
then
echo 'The database backup process is starting ......'
${MYSQLDUMP} --force --default-character-set=utf8 --all-databases -u${MYSQLUSER-root} -p${MYSQLPASS} > ${BACKUP_FILE_PATH}
RESULT=${?}
if [ ${RESULT} -ne 0 ]
then
echo
echo 'ERROR: Backup abnormal !'
exit "${RESULT}"
fi
echo 'Database backup complete !'
echo 'File path: '${BACKUP_FILE_PATH}''
echo 'Clean up old local files ......'
cd ${BACKUPDIR} && ls|sort -r|sed -n '1,'${LOCAL_BACKUP_FILE_NUMBER}'!p'|xargs -i rm -fv {}
echo 'Clean up the complete!'
else
echo 'ERROR: The directory "'${BACKUPDIR}'" is not writable or does not exist !'
exit 1
fi
RSYNC=/usr/bin/rsync
echo 'Backup files are synchronized to remote ......'
${RSYNC} -avP ${BACKUP_FILE_PATH} ${REMOTEUSER-root}@${REMOTE_HOST}:${REMOTE_DIR}/
RESULT=${?}
if [ ${RESULT} -ne 0 ]
then
echo
echo 'ERROR: Synchronize failure !'
echo 'Check to see if you have configured login using SSH keys !'
echo "${RESULT}"
fi
echo 'Complete synchronously !'
echo 'Remote backup path: '${REMOTE_HOST}':'${REMOTE_DIR}'/'${FILENAME}''
echo 'Clean up old remote files ......'
ssh ${REMOTE_HOST} "cd ${REMOTE_DIR} && ls|sort -r|sed -n '1,'${REMOTE_BACKUP_FILE_NUMBER}'!p'|xargs -i rm -fv {}"
echo 'Clean up the complete!'