一、知识储备工作:

  1. Mysql导出数据库语法:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
  1. shell脚本for循环及if条件判断基本语法
  2. gzip压缩文件用法
  3. rsync异地备份用法:
  4. ssh免密登录

二、场景

本次利用shell脚本实现以下需求:

  1. 每天凌晨3点执行备份,需备份所有库(db1 db2 db3)
  2. 备份的数据存放在本地/data/mysql下
  3. 将所有备份文件压缩,格式为gzip
  4. 压缩后的名称格式示例:qin-2020-02-24-21:19.sql.gz
  5. 利用rsync实现异地备份
  6. 本地备份数据保留2个月

三、MySQL数据库备份脚本

  1. 编写脚本: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
  1. 给脚本添加可执行权限
chmod +x /etc/mysql-backup.sh
  1. 设定每天凌晨3点定时执行该shell脚本

    crontab -e

    0 3 * * * /etc/mysql-backup.sh

  2. 我们执行脚本,测试一下吧

最后再啰嗦一句

导入数据库语法:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

更多IT技术,请微信搜索公众号秦露露或者扫描下方二维码关注

shell脚本实现MySQL全量备份+异地备份的更多相关文章

  1. mysql全量和增量备份详解(带脚本)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 下面对这种备份方案详细说明下:1.MySQLdump增量备份配置执行增量备份的前提条件是M ...

  2. liunx系统mysql全量备份和增量备份

    前提 ​ 在互联网项目中最终还是读数据进行操作,都离不开曾删改查,那么数据是重中之重,数据库的备份就显得格外重要. ​ 但是每次都直接导出整个数据库的sql文件,显然是不现实的.对数据库的性能影响比较 ...

  3. mysql全量备份与增量备份

    mysql全量备份与增量备份   1.全量备份 全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p456 -S /data/3306/mysql.sock ...

  4. 【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  5. MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

    粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...

  6. Python实现目录文件的全量和增量备份

    目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...

  7. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  8. shell脚本操作mysql库

    shell脚本操作mysql数据库-e参数执行各种sql(指定到处编码--default-character-set=utf8 -s,去掉第一行的字段名称信息-N) 2011-05-11 18:18: ...

  9. shell脚本修复MySQL主从同步

    发布:thebaby   来源:net     [大 中 小] 分享一例shell脚本,用于修改mysql的主从同步问题,有需要的朋友参考下吧. 一个可以修改mysql主从同步的shell脚本. 例子 ...

随机推荐

  1. Java 中的final关键字有哪些用法?

    (1)修饰类:表示该类不能被继承:(2)修饰方法:表示方法不能被重写:(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量).

  2. jvm-learning-概述

    JVM整体结构: java代码的执行流程 JVM的架构模型 public class StackStruTest { public static void main(String[] args) { ...

  3. 客户端回调 Watcher ?

    客户端 SendThread 线程接收事件通知,交由 EventThread 线程回调 Watcher. 客户端的 Watcher 机制同样是一次性的,一旦被触发后,该 Watcher 就失效了.

  4. python面向对象--快速入门

    1面向对象基本用法 1.1基本格式 class 类名: def __init__(self,x): self.x = x def 方法名字 (self): #函数在类里称为方法,self就是固定参数, ...

  5. 修改openstack Centos镜像的默认用户的密码

    Ubuntu官方提供的OpenStack镜像是用Key来登录的,太麻烦,可以改成用密码来登录. 修改image的工具叫:guestfish. yum install libguestfs-tools ...

  6. TOGAF D阶段:技术架构

    11. Phase D: Technology Architecture (opengroup.org) Phase D: Technology Architecture D阶段:技术架构 11.1 ...

  7. three.js 入门详解(一)

    1. 概述 1.1 什么是WebGL? WebGL是在浏览器中实现三维效果的一套规范 想要使用WebGL原生的API来写3D效果的话,很吃力.three.js是WebGL的一个开源框架,它省去了很多麻 ...

  8. java中当static块和构造函数同时出现,顺序是?

    静态块先于构造函数执行 class Student {    int age;    String name;    static int count;    public Student() {   ...

  9. mixin和composition api

    1. 这两个都是实现组件逻辑复用的法宝 2. composition api是vue3的,  composition api的出现就是解决mixins的不足之处的 一. mixin 回顾下mixin, ...

  10. ruby 版本管理RVM (ruby version manager)

    macOS. 自带的ruby 版本目录权限比较高, 经常有很多 操作需要权限而不能执行 虽然 macOS 自带了一个 ruby 环境,但是是系统自己使用的,所以权限很小,只有 system. 而/Li ...