使用mysqldump自动定时备份MySQL数据库

2019年2月17日 818点热度 0人点赞 0条评论

■■使用mysqldump自动定时备份MySQL数据库

■安装MySQL客户端
如果已经安装高版本的MySQL客户端,在mysqldump导出数据时可能存在版本兼容性问题。
因此建议卸载高版本客户端,安装低版本、常用的5.7版,以下yum方式安装步骤。
1、直接从MySQL官网安装MySQL社区版仓库
yum install https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
2、关闭MySQL80版本仓库,打开MySQL57版本仓库
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
3、安装
yum install mysql-community-client -y

■部署备份脚本mysqldump.sh
vim /data/mysqldump.sh
chmod +x /data/mysqldump.sh

■编写配置文件
配置文件命名格式:mysqldump.hostname
vim /data/mysqldump.172.19.104.35

■配置定时任务
在主机oabak【172.19.104.13】,自动备份172.19.104.35
05 22 * * * /data/mysqldump.sh /data/mysqldump.172.19.104.35 >/dev/null 2>&1 &
05 02 * * * /data/mysqldump.sh /data/mysqldump.172.19.104.35.display >/dev/null 2>&1 &
在主机internetbak【172.20.177.10】,自动备份172.20.177.16【jeecmsv93,21分钟】
05 22 * * * /data/mysqldump.sh /data/mysqldump.172.20.177.16 >/dev/null 2>&1 &
05 02 * * * /data/mysqldump.sh /data/mysqldump.172.20.177.16.jeecmsv93 >/dev/null 2>&1 &

■备份数据及日志位置
ls -l /data/bak/172.19.104.35
-rw-r--r-- 1 root root 104 Feb 17 22:20 mysqldump.172.19.104.35.yunoa.201902172220.log
-rw-r--r-- 1 root root 16405328 Feb 17 22:20 mysqldump.172.19.104.35.yunoa.201902172220.sql
其中,sql文件文件为数据文件,log文件为日志文件。

■■备份脚本
vim /data/mysqldump.sh
#!/bin/sh
## Usage: mysqldump.sh conf_file
## crontab example:
## 5 0 * * * /data/mysqldump.sh /data/mysqldump.172.19.104.35 >/dev/null 2>&1 &

#read configure file [mysqldump.hostname]
HOME_DIR=`grep "HOME_DIR" $1|awk -F= '{print $2}'`
BAK_DIR=`grep "BAK_DIR" $1|awk -F= '{print $2}'`
HOST=`grep "HOST" $1|awk -F= '{print $2}'`
PORT=`grep "PORT" $1|awk -F= '{print $2}'`
USERNAME=`grep "USERNAME" $1|awk -F= '{print $2}'`
PASSWORD=`grep "PASSWORD" $1|awk -F= '{print $2}'`
DBNAMES=`grep "DBNAMES" $1|awk -F= '{print $2}'`

#configure data & log path
BAK_DIR=$BAK_DIR/$HOST
if test ! -d $BAK_DIR ;then
  mkdir -p $BAK_DIR
fi

for DBNAME in $DBNAMES; do

TIMESTAMP=`date +"%Y%m%d%H%M"`
FILE_PREFIX=mysqldump.${HOST}.${DBNAME}.${TIMESTAMP}
BAK_FILE=${BAK_DIR}/${FILE_PREFIX}.sql
LOG_FILE=${BAK_DIR}/${FILE_PREFIX}.log

echo `date "+%Y-%m-%d %H:%M:%S"`" Backup start ..."           >>$LOG_FILE 2>&1
mysqldump -h${HOST} -P${PORT} -u${USERNAME} -p${PASSWORD} --default-character-set=utf8 ${DBNAME} > ${BAK_FILE} 2>&1
RC=$?
if [ $RC -ne "0" ]; then
  echo "Error found during backup."                           >>$LOG_FILE 2>&1
else
  echo "No Error found during backup."                        >>$LOG_FILE 2>&1
fi
echo `date "+%Y-%m-%d %H:%M:%S"`" Backup complete."           >>$LOG_FILE 2>&1
find ${BAK_DIR} -name mysqldump*.sql -mtime +5 -exec rm {} \; >>$LOG_FILE 2>&1

done

■■配置文件
filename: mysqldump.hostname
vim /data/mysqldump.172.19.104.35
#备份脚本所在路径
HOME_DIR=/data
#备份文件存放位置
BAK_DIR=/data/bak
#数据库连接信息
HOST=172.19.104.35
PORT=3307
USERNAME=test
PASSWORD=passwdwdwd
#备份的数据库名字,多个库以空格分隔
DBNAMES=yunoa fileservice

liking

我是雪人

文章评论