shell脚本实现MySQL全量备份+异地备份
一、知识储备工作:
- Mysql导出数据库语法:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
- shell脚本for循环及if条件判断基本语法
- gzip压缩文件用法
- rsync异地备份用法:
- ssh免密登录
二、场景
本次利用shell脚本实现以下需求:
- 每天凌晨3点执行备份,需备份所有库(db1 db2 db3)
- 备份的数据存放在本地/data/mysql下
- 将所有备份文件压缩,格式为gzip
- 压缩后的名称格式示例:qin-2020-02-24-21:19.sql.gz
- 利用rsync实现异地备份
- 本地备份数据保留2个月
三、MySQL数据库备份脚本
- 编写脚本:mysql-backup.sh
1 #! /bin/bash
2 #Save sa /etc/mysql-backup.sh
3 BAKDIR="/data/mysql"
4 MYSQLUSR="root"
5 MYSQLPW="123123"
6 LOG=/var/log/mysql-backup.log
7 NOW=`date +%Y-%m-%d-%H:%M`
8 [ ! -d $BAKDIR ] && mkdir -p $BAKDIR
9 echo "##########today##########" >>$LOG
10 echo "mysql bakup begin at `date`" >>$LOG
11
12 for db in qin1 qin2 qin3
13 do
14 mysqldump -u$MYSQLUSR -p$MYSQLPW $db | gzip > $BAKDIR/$db-$NOW.sql.gz
15 if [ $? == 0 ];then
16 echo "$NOW--$db backup succeeded!" >> $LOG
17 else
18 echo "$db backup failed!" >> $LOG
19 fi
20 done
21
22 rsync -az --delete /data/mysql/* root@192.168.1.252:/data/backup
23 if [ $? == 0 ];then
24 echo "$NOW Remote backup succeeded!" >> $LOG
25 else
26 echo "$NOW Remote backup failed!" >> $LOG
27 fi
28
29 find $BAKDIR -type f -mtime +60 |xargs rm -rf
30 echo "mysql bakup end at `date`" >>$LOG
- 给脚本添加可执行权限
chmod +x /etc/mysql-backup.sh
设定每天凌晨3点定时执行该shell脚本
crontab -e
0 3 * * * /etc/mysql-backup.sh我们执行脚本,测试一下吧

最后再啰嗦一句
导入数据库语法:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

shell脚本实现MySQL全量备份+异地备份的更多相关文章
- mysql全量和增量备份详解(带脚本)
在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...
- liunx系统mysql全量备份和增量备份
前提 在互联网项目中最终还是读数据进行操作,都离不开曾删改查,那么数据是重中之重,数据库的备份就显得格外重要. 但是每次都直接导出整个数据库的sql文件,显然是不现实的.对数据库的性能影响比较 ...
- mysql全量备份与增量备份
mysql全量备份与增量备份 1.全量备份 全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p456 -S /data/3306/mysql.sock ...
- 【MySQL】全量+增量的备份/恢复
生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...
- MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出
粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...
- Python实现目录文件的全量和增量备份
目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...
- shell脚本操作mysql数据库
shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql -hhostname -Pport -uusername -pp ...
- shell脚本操作mysql库
shell脚本操作mysql数据库-e参数执行各种sql(指定到处编码--default-character-set=utf8 -s,去掉第一行的字段名称信息-N) 2011-05-11 18:18: ...
- shell脚本修复MySQL主从同步
发布:thebaby 来源:net [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...
随机推荐
- 简述 Mybatis 的插件运行原理,以及如何编写一个插件?
Mybatis 仅可以编写针对 ParameterHandler.ResultSetHandler. StatementHandler.Executor 这 4 种接口的插件,Mybatis 使用 J ...
- 学习ELK日志平台(五)
ELK Stack 通常情况下: 1,开发人员是不能登录线上服务器查看日志信息 2,各个系统的日志繁多,日志数据分散难以查找 3,日志数据量较大,查询速度慢,数据不够实时性 4,一个调用会涉及到多个系 ...
- 学习RabbitMQ(二)
MOM(message oriented middleware) 消息中间件(是在消息的传递过程中保存消息的容器,消息中间件再将消息从它的源中继到它的目标时,充当中间人的作用,队列的主要目的是提供路由 ...
- List集合工具类之"将list集合按"指定长度"进行切分Lists.partition和ListUtils.partition"
将list集合按"指定长度"进行切分,返回新的List<List<类型>>集合,如下的: 方法1:List<List<Integer>& ...
- 机器学习优化算法之EM算法
EM算法简介 EM算法其实是一类算法的总称.EM算法分为E-Step和M-Step两步.EM算法的应用范围很广,基本机器学习需要迭代优化参数的模型在优化时都可以使用EM算法. EM算法的思想和过程 E ...
- 五款轻量型bug管理工具横向测评
五款轻量型bug管理工具横向测评 最近正在使用的本地bug管理软件又出问题了,已经记不清这是第几次了,每次出现问题都要耗费大量的时间精力去网上寻找解决方案,劳心劳力.为了避免再次出现这样的情况,我决定 ...
- 【Android开发】监听图库数据库的变化
步骤一: 保存图片或者删除之前,初始化ContentObserver ScreenshotContentObserver mScreenObserver = new ScreenshotContent ...
- javascript回调地狱真的只能Promise来解决吗?js回调地狱,Promise。
javascript的灵活在于函数可以当作函数的参数来传递,以及它的异步回调思想.但是这就带了一个很严重的问题,那就是回调次数过多,会影响代码结构,多层嵌套影响代码的可阅读性,也不便于书写. 举个例子 ...
- mpvue下拉刷新
1 开启下拉刷新 在想要下拉刷新的页面的 main.json 里,添加: { "navigationBarTitleText": "页面标题", "e ...
- SpringAOP的源码解析
一.SpringAOP的概念 一.AOP的基本概念 1.连接点(Joinpoint):可以被增强的方法. 2.切点(Pointcut):实际被增强的方法. 3.通知(Advice)(增强): 3.1. ...