mysql异地备份方案经验总结
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异地备份方案经验总结的更多相关文章
- MySQL常见备份方案
MySQL常见备份方案有以下三种: mysqldump + binlog lvm + binlog xtrabackup 本例为方便演示,数据库里面数据为空.下面开始动手 mkdir /opt/bac ...
- 原创|高逼格企业级MySQL数据库备份方案,原来是这样....
很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...
- 高逼格企业级MySQL数据库备份方案,原来是这样....
很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...
- Linux shell实现Mysql异地备份数据库
#--------------------------Mysqldump异地备份-----------------# #!/bin/bash #start mysqldump back /usr/bi ...
- mysql 数据库备份方案及策略
由于mysql存在多种数据库备份方式,而且各有利弊,对于我们初学者来说,选择合适的备份方式确实有些困难.个人觉得,首先要基于公司的需求,考虑能够容忍丢失多少数据.花多少人力时间成本等,这是我们制定备份 ...
- mySQL 增量备份方案(转)
1.在 /etc/my.cnf 下面设置开启bin-log 编辑 vim /etc/my.cnf [mysqld] binlog_format = MIXED ...
- mySQL 增量备份方案
1.在 /etc/my.cnf 下面设置开启bin-log 编辑 vim /etc/my.cnf [mysqld] binlog_format = MIXED ...
- MYSQL数据库自动本地/异地双备份/MYSQL增量备份
构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是 ...
- Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...
随机推荐
- 分布式缓存Redis应用场景解析
Redis的应用场景非常广泛.虽然Redis是一个key-value的内存数据库,但在实际场景中,Redis经常被作为缓存来使用,如面对数据高并发的读写.海量数据的读写等. 举个例子,A网站首页一天有 ...
- CSS经典布局之弹性布局
当我们在浏览浏览器的时候,经常会放大/缩小浏览器的显示比例,或者在不同的设备上.所处的分辨率也不尽同样. 因此.我们须要学习一个新的知识:弹性盒模型. 弹性盒模型 实现项目对齐,方向,排序(即使项目大 ...
- 《Head First 设计模式》学习笔记——代理模式
设计模式 代理模式:为还有一个对象提供一个替身或占位符以控制对这个对象的訪问. 使用代理模式创建代表对象,让代表对象控制某对象的訪问,被代理的对象能够使远程的对象(远程代理).创建开销大的对象(虚拟代 ...
- 大话设计模式宏观总结——创建型&结构型&行为型
师傅验收项目的时候.问大话设计模式那三种类型的差别和联系是什么,顿时我傻了眼.由于除了知道这三种类型分别如何称呼以外.从来都没想过为什么这样划分?于是,我便回答:我没想过这个问题.若是从字面上来理解的 ...
- linux下查看一个文件的属性(ls,lsattr,file,stat)
查看文件属性有多种方法,且这些方法中偏向不同,具体如下:1,ls ls -a 查看所有文件 ls -l 查看详细的属性 2,lsattr 查看文件的扩展属性, 如果文件被 c ...
- 【总结】设备树语法及常用API函数【转】
本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74352188 一.DTS编写语法 二.常用函数 设备树函数思路是:uboot ...
- 7.2 高速缓冲存储器-Cache
高速缓冲存储器:Cache.Cache的功能是提高CPU数据的输入和输出的速率.CPU的速度与主存的速度之间有巨大的差异.主存的存取时间.存取速度要比CPU的速度要慢了很多倍.为了调和它们之间的巨大速 ...
- 2.android
ImageButton action_btn = (ImageButton) findViewById(R.id.action_btn);action_btn.setOnClickListener(n ...
- thinkphp调试手段
使用ThinkPHP应该掌握的调试手段经常看到有人问到findAll的返回数据类型是什么之类的问题,以及出错了不知道什么原因的情况,其实还是没有熟悉ThinkPHP内置的调试手段和方法,抛开IDE本身 ...
- Sorting It All Out 拓扑排序+确定点
这一道题的话 数据有一点问题 ........ 例如 不过 还是 能理解一下 试试吧 ......... A<B B<C C<A A<C B<A ...