mysql数据库的备份与数据恢复
一、定时备份数据库
前段时间工作中搭建了HttpRunnerManager的接口自动化测试平台,由于平台中没有提供用例下载的功能及权限管理功能,自己也不会写前端,于是就想了办法,那就是备份数据库,如果有人误删了数据,那么可以通过备份的数据库来进行数据恢复。接下来记录一下数据库的备份与恢复操作记录。
1. 创建shell脚本
vim mysql_autobackup.sh
创建脚本内容如下:
#!/bin/sh
db_user="root"
db_passwd=""
db_name="userdb"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump -u$db_user -p$db_passwd $db_name >>/home/ceshi/backup/$name.sql
说明:
/usr/bin/mysqldump :mysql数据库安装目录下的mysqldump备份工具路径
dbname :需要备份的数据库名字
/home/ceshi/backup/$name.sql :备份文件输出位置,可以根据情况自行设定
2. 给shell脚本添加执行权限
chmod +x mysql_autobackup.sh
然后我自己测试了一下,运行 mysql_autobackup.sh脚本的时候,提示:Warning: Using a password on the command line interface can be insecure.意思是:在命令行界面上使用密码可能不安全。所以脚本执行失败了。
解决方法:
对于 mysqldump 要如何避免出现(Warning: Using a password on the command line interface can be insecure.) 警告信息呢?
找到 my.cnf文件,我用的是:whereis my.cnf 找到的。
然后修改:
vim /etc/my.cnf
[mysqldump]
user=your_backup_user_name #数据用户名
password=your_backup_password #数据库密码
修改完配置文件后, 只需要执行mysqldump 脚本就可以了。备份脚本中不需要涉及用户名密码相关信息。
然后修改 mysql_autobackup.sh文件:
#!/bin/sh
db_user="root"
db_passwd="root"
db_name="HttprunnerManager"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump $db_name >>/home/ceshi/backup/$name.sql
因为我们每天晚上都会备份一下数据库,所以备份之后我们以当时的备份时间来命名备份文件,比如我2019年1月30号晚上1点30分整备份的数据库即为“20191026013000.sql”
那么每天都会生成一个文件,时间久了硬盘就会被塞满,而且很早之前的数据也没有太大的保留意义,那么我们可以在每天备份时同时删除一段时间之前的备份数据,比如我们需要删除15天之前的备份:
find /home/ceshi/backup/ -mtime +15 -type f | xargs rm -f
“/home/ceshi/backup/”为我们备份文件的保存目录;
“-mtime +15”是设置时间为15天前
“-type f”表明查找的类型是文件
这行命令完成的操作是:查找/home/ceshi/backup/目录下30天之前的文件并且删除。
我们把这行删除的命令加入到mysql_autobackup.sh文件中:
#!/bin/sh
db_user="root"
db_passwd=""
db_name="HttprunnerManager"
name="$(date +"%Y%m%d%H%M%S")"
/usr/bin/mysqldump $db_name >>/home/ceshi/backup/HttpRunnerManager_$name.sql
#查找/home/ceshi/backup/目录下15天之前的文件并且删除
find /home/ceshi/backup/ -mtime + -type f | xargs rm -f
备份跟删除的命令我们都写好了,那么我们可以通过crontab来让系统每天自动的去执行这两个任务
crontab -e 写入计划任务并保存:
* * * sh /home/ceshi/backup/mysql_autobackup.sh
表示每天晚上1点30分会执行/home/ceshi/backup目录下的mysql_autobackup.sh脚本,就是我们上面编写的备份跟删除操作的脚本,这样就可以完成系统每天自动备份数据库并且会自动的去查找超过15天的备份并删除.
补充:crontab 的格式说明
1、以我们刚才写的计划任务为例:
* * * sh /home/ceshi/backup/mysql_autobackup.sh
格式简化之后是下面这样
* * * * * *
第一列的“*”为分钟 从1~59
第二列的“*”为小时 从0~23,0代表午夜12点
第三列的“*”为日 从1~31
第四列的“*”为月 从1~12
第五列的“*”为星期 从0~6,0代表星期天
第六列的“*”为要运行的命令
综合起来就是下面的格式
分 时 日 月 星期 要运行的命令
举例:
* * * reboot
上面的例子表示每晚的21:30重启服务器。
,, * * reboot
上面的例子表示每月1、、22号的4:45重启服务器
* * , reboot
上面的例子表示每周六、周日的1:10重启服务器
, - * * * reboot
上面的例子表示在每天18:00至23:00之间每隔30分钟重启服务器。
-/ * * * reboot
晚上11点到早上7点之间,每隔一小时重启服务器
二、使用备份的数据库进行数据恢复:
1.首先就是要删除已经备份的数据库:
mysql> drop database HttprunnerManager;
删除之后,发现平台已经打不开了;
然后重新创建数据库:
mysql> create Database HttprunnerManager charset utf8;
查看数据库信息,是空的;
mysql> use HttprunnerManager
Database changed
mysql> show tables;
Empty set (0.00 sec)
恢复命令:
mysql -uroot -p HttprunnerManager<HttpRunnerManager_20191026160601.sql
以上命令中:HttprunnerManager是新建的数据库的名字,是空的,HttpRunnerManager_20191026160601.sql是之前备份的数据库,根据提示输入密码之后就恢复成功了,打开平台已经正确显示,数据也显示正确。
mysql数据库的备份与数据恢复的更多相关文章
- mysql数据库误删除后的数据恢复操作说明
在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...
- mysqldump常用于MySQL数据库逻辑备份
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...
- MySQL数据库入门备份数据库
MySQL数据库入门——备份数据库 一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点....... ...
- 转-MySQL 数据库误删除后的数据恢复操作说明
在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...
- 如何用SQL语句实现Mysql数据库的备份与还原
以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...
- MYSQL数据库增量备份
MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可.接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法. #fu ...
- [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原
通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...
- mysql数据库的备份和恢复
Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...
随机推荐
- Latex 公式速查
本文记录了一些常用的数学公式对应的 Latex 字符,用于快速查找需要的字符 所有的在 Latex 使用的字符公式,都需要放在\(和\),$ 和 $,\begin{math} 和\end{math}之 ...
- C#面试题整理(不带答案)
1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 2.什么是事务?什么是锁? 3.什么是索引,有什么优点? 4.视图是什么?游标是什么? 5.什么是存储过程?有什么优 ...
- SmartAssembly 使用方法
SmartAssembly加壳工具,我还真的是不太喜欢给自己的程序加壳,觉得开源才是王道,但是没办法工作需要,需要有个加壳后与加壳前的对比,好吧谁叫咱只是程序员呢. 开始埋头苦干,找了半天也没找到合适 ...
- 这群程序员疯了!他们想成为IT界最会带货的男人
随着网红主播越来越火,通过直播带货种草的形式也成了今年双12的热点. 不过,网红主播带货早已见怪不怪,但你们见过程序员直播带货吗!? 近日,趁着阿里云双12年末采购节,阿里云邀请了一波程序员GG来为大 ...
- 学习Java第五周
通过这一段时间的学习发现Java和C++虽然都是面向对象的编程语言,有相似之处也有不同之处,相似的地方总会感觉易于接受,不同之处或者新接触的有些知识不是很好理解和掌握. 前一段时间学的内部类和接口便是 ...
- 002.MFC_对话框_静态文本_编辑框
一.建立 名为dialogAndCtl的MFC工程,并添加如图控件 1.将上方static text 控件 Caption属性设置为在文本框中如数文本,可以统计字符 2.edit control控件属 ...
- 面试必问之 ConcurrentHashMap 线程安全的具体实现方式
作者:炸鸡可乐 原文出处:www.pzblog.cn 一.摘要 在之前的集合文章中,我们了解到 HashMap 在多线程环境下操作可能会导致程序死循环的线上故障! 既然在多线程环境下不能使用 Hash ...
- Jmeter官方插件安装
在正常使用的过程中,当jmeter功能满足不了使用场景时,可以通过安装官方的插件去实现. Jmeter插件管理官网地址: https://jmeter-plugins.org/install/Inst ...
- 利用pandas、Ipython来简化数据分析过程
最近小爬我为了提升数据分析这块儿的技能,学习了pandas库作者Wes Mckinney的数据分析经典书籍<利用Python进行数据分析>,受益良多!里面涉及到Python语言基础.还有编 ...
- 牛客国庆 Day4 H 巧妙的用树的直径!!
传送门 https://ac.nowcoder.com/acm/contest/1109#question 刚开始吓得我以为要搞树分治,差点就捞了哦! 这个定理要铭记于心啊!!! #include& ...