一、前言

2018年5月28日这个日子已经过去20几天了,那天发生的一切到现在回想一下都有些后怕。最近看了一篇文章里面有一句话挺好,删库(数据库损坏)只有两条路可以走,一是恢复,二是跑路。很明显我选择了第一条路,有一份幸运也有一份执着最终还是把数据恢复了回来。为什么说“幸运”呢?因为rpm方式安装的MySQL数据库默认打开了binlog日志,而且日志文件被完整的保存了下来。

虽然数据恢复了回来,但是我真心的不希望数据再次丢失了,因为下一次可能没有那么幸运。恢复数据只是在万不得已的情况下采取的补救措施,我们应该把备份数据作为日常维护的好习惯。

MySQL数据库备份及数据恢复

1.数据库备份

数据备份是我们使用计算机的同学日常的工作。不仅数据库需要定时备份,计算机上面重要的文件也需要定期做备份,那我们今天就来谈谈MySQL是怎样进行备份的。

MySQL给我们提供了一个实用的工具 mysqldump,使用该工具前要确定MySQL服务已经启动,那我们就直接来上实例吧!

备份所有的数据库

mysqldump -u数据库账号 -p数据库密码 > 导出的文件名

mysqldump -uroot -proot > mysql_all.sql

备份某一个数据库

mysqldump -u数据库账号 -p数据库密码 数据库名 > 导出的文件名和路径

mysqldump -uroot -proot test > test.sql

备份远程服务器上面的某一个数据库

mysqldump -h数据库服务器地址 -u数据库账号 -p数据库密码 数据库名 > 导出的文件名

mysqldump -h192.168.1.11 -uroot -proot test > test.sql

日常中我使用的备份命令

mysqldump -uroot -proot test --default-character-set=utf8 > test.sql

这里我加了一个参数:--default-character-set=utf8,对于中国的程序员来说乱码问题是我们的必修课。为了不给数据或程序带来乱码的困惑,我们肯定会给程序设定统一的编码方式。我通常使用的编码为UTF8,这里我们和数据库的编码保持一致即可。

2. 数据库还原

既然我们说到备份,数据还原是必不可少的,这时我们用到了MySQL常用mysql工具。

数据库还原

mysql -u数据库账号 -p数据库密码 数据库名 < 导入的文件名和路径 mysql -uroot -proot test < test.sql

日常中我使用的还原数据库命令

mysql -uroot -proot test --default-character-set=utf8 < test.sql

3. 定时备份

我们了解了数据库备份及数据库还原,这时出现了一个疑问? 备份通常是每隔一段时间都需要进行一次,数据增量较小的话一天一次,但是数据增量要是很大的话需要每天多次,我们不可能每次都是手动去备份,故而我们会考虑有没有一种方式是让电脑定时帮我们完成这个任务。

Linux服务器有一个定时任务工具:crontab,维基百科是这么说的:crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。

那我们就直接开始吧!

首先我们来创建一个shell文件

touch mysql_backup.sh

打开文件的执行权限

chmod +x mysql_backup.sh

编辑该文件

sudo vi mysql_backup.sh

#!/bin/sh
backupdir='/home/mysql'
time=`date +%Y%m%d%H%M`
mysqldump -uroot -proot test --default-character-set=utf8 > $backupdir/test_$time.sql

内容说明

  • backupdir # 设置备份文件要保存的目录地址
  • time # 备份的文件要是很多的话避免重名,通常使用时间来做备份文件的拓展
  • $backupdir/test_$time.sql # 组装名称:数据库名 + 时间拓展

设定定时任务

crontab -e

30 * * * * sh mysql_back.sh # 每30分钟执行一次该命令

crontab的文件格式

分 时 日 月 周 要运行的命令

  • 第1列分钟0~59
  • 第2列小时0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要运行的命令

查看定时任务

crontab -l

定时任务控制(操作系统为:centos6,服务的控制centos7是不一样的噢)

service crond start # 开启服务

service crond stop # 关闭服务

service crond restart # 重启服务

总结

写到这里数据库备份恢复基本已经到一个段落了,做好数据备份是我们每一位计算机使用者良好的习惯,可以更好的避免数据丢失。希望我们能把它当作一种责任。

备注

本文所使用的操作系统及数据库版本说明:

  • 操作系统:centos6.8
  • 数据库版本:MySQL5.5.49

转载于:https://my.oschina.net/u/591464/blog/1833076

MySQL备份还原和定时任务相关推荐

  1. Percona XtraBackup 关于 MySQL备份还原的详细测试

    Percona XtraBackup 关于 MySQL备份还原的详细测试 一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: ...

  2. mysql备份还原(视图、存储过程)

    最近在备份还原mysql的时候发现,视图还原报错,无法创建视图,在网上查了下资料,找到以下信息: 1.如果备份的数据库含有视图,还原时需要把my.ini中的character-set改为latin1, ...

  3. linux下mysql日志管理及mysql备份还原

    linux下mysql日志管理及mysql备份还原 1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项 2.错误日志:log_error和log_wa ...

  4. mysql备份还原参数详解

    #windows下mysql备份还原,可不用修改my.ini来还原视图(已验证) mysqldump -uroot -p123 --default-character-set=gbk --opt -- ...

  5. mysql 备份还原

    MySQL的备份与还原 MySQL备份和还原,都是利用mysqldump.mysql和source命令来完成的.  1.Win32下MySQL的备份与还原  1.1 备份  开始菜单 | 运行 | c ...

  6. MySQL备份还原知识要点

    数据库在使用当中都会有数据库备份工作,当数据库发生严重错误无法启动,或者数据丢失时可以及时有效地恢复数据.文章简单介绍如何备份和还原MySQL数据库. 备份数据库 使用mysqldump命令备份数据库 ...

  7. linux mysql 备份还原数据库_备份和还原MySQL数据库的简便方法

    我们现在将讨论如何备份数据库和还原MySQL.数据库的维护非常重要,因为数据库包含我们拥有的重要数据,因此,应备份数据库以避免数据丢失. 备份有两个目的.主要目的是在数据丢失(由于删除或损坏)时恢复数 ...

  8. c mysql备份还原数据库_如何备份和还原MySQL数据库?

    MySQL是一个永久存储数据的数据库服务器.如果使用MySQLServer,那么需要创建数据库备份以便从崩溃中恢复.mysql提供了一个用于备份的实用程序mysqldump.在本文中,将介绍关注与.s ...

  9. php mysql备份还原类_PHP实现MYSQL备份还原

    /** * mysql备份*/ classMysqlBackup {function __construct($filename, $config) {$this->setFile($filen ...

最新文章

  1. 小程序云开发,订阅消息定时批量发送实现代码
  2. IIS 之 添加绑定域名 或 设置输入IP直接访问网站
  3. Can't use asio::placeholders::error
  4. [Apple开发者帐户帮助]二、管理你的团队(6)找到您的团队ID
  5. 计算机科学软件工程专业大学排名,2020软件工程专业大学排名及录取分数汇总(2021理科生参考)...
  6. 网络流24题之餐巾计划问题
  7. was not declared in this scope
  8. h.264视频文件封装
  9. go字符串转byte_go语言学习-基本数据类型
  10. pandas删除某大于 数_详解pandas如何去掉、过滤数据集中的某些值或者某些行?...
  11. c#关于try catch finally的使用,判断日期格式是否正确
  12. Crontab 实例
  13. win7自带的xps viewer很好用
  14. vivo手机支持html,vivo5G手机如何设置5G?教你开启SA模式
  15. C语言程序员个人简历范文,程序员求职放大招!牛人用C语言写简历
  16. MongoDB World 2016参会全记录
  17. Go语言:HTTP客户端请求设置用户浏览器版本User-Agent
  18. Java Web中的一些概念(JSP、Servlet以及过滤器等)
  19. 形式化、半形式化和非形式化
  20. 2021年从事Linux运维云计算前景如何?

热门文章

  1. Arduino定义数组,求数组长度,
  2. 安全运维体系建设思路
  3. 【Excel VBA和Python对照学习】创建字典
  4. Java并发包:ExecutorService和ThreadPoolExecutor
  5. TSN报文优先级(802.1P优先级、IP优先级、TOS优先级)
  6. 2021年JavaScript最新手机号码、电话号码正则表达式
  7. 22个无版权限制的高清无码图库站
  8. 正则表达式在shell中使用的方法与案例
  9. 第十届蓝桥杯JavaB组省赛真题
  10. 实战为上!深入解析20个运维命令