MySQL数据库定时备份全量数据库,并传输到别的服务器

MySQL数据库备份,全量备份所有数据库,并传输到别的服务器

一、备份信息

  1. 数据库类型:MySQL
  2. 备份方法:借用 MySQL 自带的 mysqldump 命令导出sql语句
  3. 备份的库:所有已创建的库,包括MySQL默认的库
  4. 备份数据:每次全量备份,非增量型备份
  5. 利用sh脚本 + Linux 自带的定时任务工具 crontab,实现定时备份

二、完整的sh脚本

# 数据库信息
USER_NAME="root"                # 数据库登录用户名
PASSWD="root"             # 数据库登录密码
HOST="localhost"           # 数据库地址
ZFBM="--default-character-set=utf8"


# 其他变量信息
BIN_DIR="/usr/bin"              # mysql命令所在路径
BCK_DIR="/home/backup/db"         # 备份文件存放目录
DATE=`date +%Y%m%d`            # 日期,每天进行备份一次,每个文件通过日期进行区分


# 备份全部数据库
${BIN_DIR}/mysqldump --opt -u${USER_NAME} -p${PASS} -h${HOST} ${ZFBM} --all-databases > ${BCK_DIR}/db101-${DATE}.sql        # 导出sql语句


sleep 5m
cd ${BCK_DIR}
tar -zcvf db101-${DATE}.tar db101-${DATE}.sql       # 进行打包


sleep 30s
scp db101-${DATE}.tar [email protected]:/root/backup/db    # 传输到别的服务器


sleep 1m
find ${BCK_DIR} -name "db101-*.sql" -type f -mmin +1 -exec rm {} \; > /dev/null 2>&1        # 删除备份文件,-mmin +1 表示1分钟前的备份文件
find ${BCK_DIR} -name "db101-*.tar" -type f -mtime +2 -exec rm {} \; > /dev/null 2>&1       # 删除历史备份文件,-mtime +2 表示2天前的数据

三、其他

  • 该脚本备份的所有的数据库文件,不是非常适合数据庞大的数据库。
  • 因为会备份包括MySQL默认的库,所有恢复的时候,会覆盖本地的已创建的备份用户名和对应的密码。
  • 免密传输到其他的服务器,可以参照《Linux系统通过rsa免密码登录、文件传输》。
  • 单库备份:修改备份语句中 --all-databases 为库名即可。例如:备份库 classinfo
${BIN_DIR}/mysqldump --opt -u${USER} -p${PASS} -h${HOST} ${ZFBM} classinfo > ${BCK_DIR}/db101-${DATE}.sql

你可能感兴趣的:(MySQL数据库定时备份全量数据库,并传输到别的服务器)