#!/bin/bash #writer: ci #需要免密登录 #MYSQLHOST=数据库IP #MYSQLPASS=数据库密码(默认为root用户的) #!/bin/bash #writer: ci #BACKUPDIR=本地备份文件存放路径 #REMOTE_HOST=备份文件远程存放IP #REMOTE_DIR=备份文件远程存放路径 #LOCAL_BACKUP_FILE_NUMBER=本地备份文件存放数量 #REMOTE_BACKUP_FILE_NUMBER=远程备份文件存放数量 MYSQLHOST=localhost MYSQLPASS=Password@123 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!' |