MySQL本低备份和异地备份

Administrator
发布于 2020-07-09 / 418 阅读 / 0 评论 / 0 点赞

MySQL本低备份和异地备份

需要本低和异地安装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!'

评论