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

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

一、备份信息

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

二、完整的sh脚本

  1. 完整的shell脚本:
    # 数据库信息
    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 root@192.168.5.102:/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
    
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值