Mysql 数据库异地备份脚本

实验环境:关闭防火墙不然不能授权登录

Mysql-server:192.168.30.25

Mysql-client:  192.168.30.24

实验要求:对mysql-server 的auth和client库实现异地备份,每天凌晨2:00进行备份

并写一个数据恢复脚本(库里有数据)

mysql服务端授权,给予select和lock tables 权限,已备份

[root@localhost ~]# mysql -uroot -p123456

mysql> grant select,lock tables on auth.* to 'admin'@'192.168.30.24'identified by '123456';

mysql> grant select,lock tables on client.* to 'admin'@'192.168.30.24' identified by '123456';

mysql> flush privileges;

连接测试

这个需要安装好后的mysql,连接测试

[root@client ~]# mysql -uadmin -p -h192.168.30.25

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| auth               |

| client             |

+--------------------+

3 rows in set (0.09 sec)

写客户端脚本

vim /opt/bakmysql.sh

#!/bin/bash

#mysql数据库备份脚本

#设置登录变量

MY_USER="admin"

MY_PASS="123456"

MY_HOST="192.168.30.25"

MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"

#设置备份的数据库

MY_DB1="auth"

MY_DB2="client"

#定义备份路径,工具,时间,文件名

BF_DIR="backup"

BF_CMD="/usr/bin/mysqldump"            这里是mariadb的mysqldump路径

BF_TIME=$(date +%Y%m%d-%H%M)

NAME_1="$MY_DB1-$BF_TIME"

NAME_2="$MY_DB2-$BF_TIME"

#备份为.sql脚本,然后打包压缩(打包后删除原文件)

[ -d $BF_DIR ] || mkdir -p $BF_DIR

cd $BF_DIR

$BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql

$BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql

tar zcf $NAME_1.tar.gz $NAME_1.sql --remove &> /dev/null

tar zcf $NAME_2.tar.gz $NAME_2.sql --remove &> /dev/null

 

[root@client backup]#chmod +x /opt/bakmysql.sh

[root@client backup]#/opt/bakmsyql.sh

[root@client backup]#ls backup

[root@client backup]#crontab -e

0    2   *    *   * /opt/bakmsyql.sh

systemctl restart crond

[root@client backup]#date 040601592019.59        //MMDDhhmmYY.SS   月日小时分钟年.秒

可以用这个命令也可以主要修改系统时间,让备份多做几天的,然后我们让后面的脚本选择性恢复date -s 2019-05-26 01:59:55

2019年 04月06日 星期日 01:59:59 CST

[root@client backup]# date 040701592019.59

2019年 04月 07日 星期日 01:59:59 CST

[root@client backup]# date 040801592019.59

2019年 04月 08日 星期一 01:59:59 CST

 

撰写数据恢复脚本

vim /opt/restore_mysql.sh

#!/bin/bash

#恢复mysql数据库数据脚本

#设置变量

MY_USER="admin"

MY_PASS="123456"

MY_HOST="192.168.30.23"

BF_DIR="backup"

mkdir .aaa &> /dev/null

ls $BF_DIR |column -t > .aaa/db_list

awk -F'-' '{print $2}' .aaa/db_list > .aaa/dt.txt

read -p "请指定要恢复数据库的日期(YYYYMMDD):" dt

if [ $dt -ge 20190501 ] && [ $dt -le 20190601 ]

        then

        grep "$dt" .aaa/dt.txt &> /dev/null

        if [ $? -ne 0 ]

        then

                echo "很抱歉,您恢复的数据库备份日期不在备份日期范围内"

        else

                echo "搜索到的可恢复数据库如下:"

                awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list

                read -p "请选择您要恢复数据库的编号:" nb

                nm=$(awk -F'-' /$dt/'{print NR,$1}' .aaa/db_list |awk /$nb/'{print $2}')

                echo "现在开始恢复数据库:$nm 到$dt"

        cd $BF_DIR

        onm=$(ls |grep "$nm-$dt")

        mkdir .bbb

        tar xf $onm -C .bbb

    mysql -u$MY_USER -p$MY_PASS -h$MY_host $nm < .bbb/*

    echo "$nm 已经恢复到$dt"

rm -rf .bbb

    cd - &> /dev/null

    rm -rf .aaa

    fi

    else

    echo "很抱歉,您恢复数据库的备份日期不在备份日期范围内"

    fi

 

 

server端授权

chmod +x /opt/restore_mysql.sh

Mysql >grant all on auth.* to ‘admin’@’192.168.30.24’;

Mysql >grant all on client.* to ‘admin’@’192.168.30.24’;

Mysql > flush privileges;

恢复测试

执行脚本

/opt/restore_mysql.sh

mysql异地备份方案经验总结的更多相关文章

  1. MySQL常见备份方案

    MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/bac ...

  2. 原创|高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  3. 高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  4. Linux shell实现Mysql异地备份数据库

    #--------------------------Mysqldump异地备份-----------------# #!/bin/bash #start mysqldump back /usr/bi ...

  5. mysql 数据库备份方案及策略

    由于mysql存在多种数据库备份方式,而且各有利弊,对于我们初学者来说,选择合适的备份方式确实有些困难.个人觉得,首先要基于公司的需求,考虑能够容忍丢失多少数据.花多少人力时间成本等,这是我们制定备份 ...

  6. mySQL 增量备份方案(转)

    1.在 /etc/my.cnf 下面设置开启bin-log 编辑 vim /etc/my.cnf [mysqld] binlog_format       = MIXED                ...

  7. mySQL 增量备份方案

    1.在 /etc/my.cnf 下面设置开启bin-log 编辑 vim /etc/my.cnf [mysqld] binlog_format       = MIXED                ...

  8. MYSQL数据库自动本地/异地双备份/MYSQL增量备份

    构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...

  9. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

随机推荐

  1. 使用jcaptcha插件生成验证码

    1.从官网http://jcaptcha.sourceforge.net/下载插件.将对应jar包导入到lib文件夹下 2.创建一个CaptchaServiceSingleton类用来获取jcaptc ...

  2. ViewPager + Handler 实现的图片自己主动轮播

    首先上图看效果 我也是在网上看各种大牛们做的效果,非常多都是自己定义重写了一些控件来实现这个效果的. 我把当中的一位大牛写的ViewPager的效果加上了Handler实现了自己主动轮播效果.在此做个 ...

  3. 精确计算java中float和double的精度

    [本文相关的代码放在github上.地址为:https://github.com/VigourJiang/StructuredFloat] Java中double类型的格式基本遵循IEEE 754标准 ...

  4. Mongo性能测试-python脚本

    单线程 500+w条数据,插入时间:1小时,13分钟. 脚本: [root@10 hurl]# cat insert-mongo2.py #!/usr/bin/env python #coding=u ...

  5. network adapter

    1 network adapter 网络适配器,也叫网卡,是一个硬件. 2 关于以太网卡 以太网卡分为光纤以太网卡和电口以太网卡. 3 常用的以太网卡 3.1 AMD PCNet PCI II (Am ...

  6. 深分页(Deep Pagination)

    取回阶段 | Elasticsearch: 权威指南 | Elastic https://www.elastic.co/guide/cn/elasticsearch/guide/current/_fe ...

  7. 数据分析在web交互设计中的作用 页面跳出率 100% 原因分析

    通过分析访问的路径,发现,访问者访问其他页面,直接跳出 页面跳出率  100% 说明: 连作者都发现的导航路径不清晰 对导航进行改版:清晰.明了

  8. RatingBar android:isIndicator="true"

    有时候我们用RatingBar只须要显示不让它选择或改变,解决办法是设置属性 android:isIndicator="true" isIndicator的意思是:是否是指示器,如 ...

  9. bzoj3175: [Tjoi2013]攻击装置&&4808: 马

    终于知道为啥网络流这么受欢迎了. 其实就是构个图模板一下的事儿,比较好打是吧. 然后这题网络流黑白染色(其实感觉上匈牙利更加直接好想啊,但是实际上黑白染色给人感觉就是二分图) st连白而ed连黑,流量 ...

  10. 第二章 在Html中使用JavaScript

    https://www.jianshu.com/p/8247a9401725 2.1 Script元素 https://developer.mozilla.org/en-US/docs/Web/HTM ...