mysql备份 where_MySQL备份与还原

1.mysqldump+mysqlbinlog介绍

mysqldump备份结合binlog日志恢复。MySQL备份一般采取全库备份加日志备份的方式,例如每天执行一次全备份,每小时执行一次二进制日志备份,这样在MySQL故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。

2.binlog

2.1介绍

MySQL的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间。为了显示二进制文件内容,可以使用mysqlbinlog命令查看。

2.2用途

1)主从复制

2)恢复数据

2.3开启binary log功能

通过编辑my.cnf中的log-bin选项可以开启二进制日志,形式如下:

log-bin [=DIR/[filename]]

其中,DIR参数指定二进制文件的存储路径;filename参数指定二进制文件的文件名,其形式为filename.number,number的形式为000001、000002等。每次重启MySQL服务或运行mysql>flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断递增。除了生成上述的文件外还会生成一个名为fiename.index的文件,这个文件中存储所有二进制日志文件的清单,又称为二进制文件的索引。

开启binary log功能的命令操作:

vim /etc/my.cnf

log_bin=/data/mysql/mysql-bin

/etc/init.d/mysqld restart

查看是否开启:

[root@CentOS 7 ~]# mysql

mysql> show variables like 'log_bin';

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

| Variable_name | Value |

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

| log_bin             | ON    |

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

1 row in set (0.00 sec)

3.二进制日志操作的相关命令

3.1查看MySQL Server上的二进制日志

mysql> show binary logs;

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

| Log_name             | File_size  |

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

| mysql-bin.000001 |       120   |

| mysql-bin.000002 |       120   |

| mysql-bin.000003 |     65402 |

| mysql-bin.000004 |  1190629|

| mysql-bin.000005 |       262   |

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

5 rows in set (0.00 sec)

3.2查看二进制日志信息

mysql> mysql> show binlog events in 'mysql-bin.000001';

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

| Log_name           | Pos  | Event_type  | Server_id  |End_log_pos | Info                                                   |

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

|mysql-bin.000001|   4    |Format_desc|      3306    |       120        | Server ver: 5.6.36-log, Binlog ver: 4 |

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

1 row in set (0.00 sec)

3.3查看二进制日志的事件

mysql> show binlog events;

24b910a3f761c86d65f5a5aa1813bd64.png

3.4把某个二进制日志之前的其他二进制日志都删除

pugre binary logs to 'mysql-bin.00010';

3.5把指定时间之前的二进制文件删除

pugre binary logs before '2018-5-7 22:46:26';

4.使用binlog恢复之前删除的数据(id=2)

注意:在实际生产环境中,如果遇到需要恢复数据库的情况,不要让用户能访问到数据库,以避免新的数据插入进来,以及在主从的环境下,关闭主从。

4.1查看binlog文件,从中找出delete from test.tb1 where id=2

[root@CentOS7 ~]# cd /data/mysql/

[root@CentOS7 mysql]# mysqlbinlog -v mysql-bin.000002    (由于显示太多,就不写了。但从中可以看出delete事件发生position是27,事件结束position是416)

4.2恢复流程

直接用bin-log日志将数据库恢复到删除位置287前,然后跳过故障点,载进行恢复

4.3由于之前没有做过全库备份,所以使用所有binlog日志恢复,所以生产环境中需要很长时间恢复,导出相关binlog文件

[root@CentOS7 mysql]# mysqlbinlog /data/mysql/mysql-bin.000001 > /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysqlbinlog --stop-position=287 /data/mysql/mysql-bin.000002 > /tmp/287.sql

[root@CentOS7 mysql]# mysqlbinlog --start-position=416 /data.mysql/mysql-bin.000002 > /tmp/416.sql

4.4删除test数据库

mysql>drop database test;

4.5利用binlog恢复数据

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/mysql-bin.000001.sql

[root@CentOS7 mysql]# mysq -uroot -p123456 < /tmp/287.sql

[root@CentOS7 mysql]# mysql -uroot -p123456 < /tmp/416.sql

4.6恢复后,检查表的数据是否完整

mysql>select * from test.tb1;

4.7mysqlbinlog相关参数

--start-datetime    从二进制日志文件中读取指定时间戳或本地计算机时间之后的日志事件

--stop-datetime    从二进制日志文件中读取指定时间戳或本地计算机时间之前的日志事件

--start-position     从二进制日志文件中读取指定position事件位置作为开始

--stop-position     从二进制日志文件中读取指定position事件位置作为事件截至

5.mysqldump

5.1介绍

是MySQL用于备份和数据转移的一个工具。主要生产一系列的SQL语句,可以封装到文件,该文件包含所有重建数据库所需的SQL命,如create database、create table、insert等。可以用来实现轻量级的快速迁移或恢复数据库。

mysqldump是将数据表导成SQL脚本文件,在不同的MySQL版本之间升级时相对比较合适。

5.2使用建议

一般在数据量很小的时候(几个G)可以由于备份。当数据量比较大的情况下,不建议使用mysqldump进行备份

5.3使用对象

可以针对单个表、多个表、单个数据库、多个数据库、所有数据库进行导出的操作

6.mysqldump相关操作命令

6.1导出数据库test

mysqldump -uroot -p --flush-logs test > /tmp/terst.sql

--flush-logs  完整备份的时候重新开启一个新的binlog

6.2数据库的导入

mysql -uroot -p test > /tmp/test.sql

6.3导出指定数据库或单个表

mysqldump [options] db_name [tbl_name]

6.4导出多个数据库

mysqldump [options] --databases db_name

6.5导出所有

mysqldump [options] --all-databases

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JMeter:负载测试关系数据库

Apache JMeter是完全使用Java编写的性能测试工具。 可以在请求/响应模型上运行的任何应用程序都可以使用JMeter进行负载测试。 关系数据库也不例外&#xff1a;接收sql查询&#xff0c;执行它们并返回执行结果。 我将向您展示使用JMeter的图形用户界面设置测试方案有多么容易。…

new: Set up a window

Nehe的教程确实太老了&#xff0c;不过我认为它也能够让我了解OpenGL3.2以前的管线渲染模式&#xff0c;即使它在现在已经不常见了。因为想要了解&#xff0c;所以我还是会看完Nehe的教程。 现在这是一个新的教程 - JoeyDeVries的教程&#xff0c;可以说是网上最好的OpenGL教程…

Python全栈开发:socket

Socket socket通常也称作"套接字"&#xff0c;用于描述IP地址和端口&#xff0c;是一个通信链的句柄&#xff0c;应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix&#xff0c;而Unix/Linux基本哲学之一就是“一切皆文件”&…

NetBeans 7.1:创建自定义提示

我已经在帖子中介绍了一些我最喜欢的NetBeans提示 &#xff0c;这些信息是用于使Java代码现代化的七个NetBeans提示和七个不可或缺的NetBeans Java提示 。 这两个帖子中涉及的十四个提示仅占NetBeans支持的“即开即用”提示总数的一小部分。 但是&#xff0c;由于NetBeans 7.1使…

qregexp括号匹配_转:Qt的正则表达式和QRegExp

考虑一下我们经常遇到的问题&#xff0c;比如gemfield想从青岛之光读书(www.civilnet.cn/book)中找一个关键的电话号码&#xff0c;通常第一步就是将书中所有的电话号码查找出来放在手边。那么怎么拟定查询条件呢&#xff1f;电话的格式有如下几种&#xff1a;01088888888010 8…

具有Tron效果的JavaFX 2 Form

这是一个具有TRON效果的简单JavaFX登录表单。 在此示例中&#xff0c;我使用CSS设置TextField和Button的样式。 这是CSS和Effect代码的片段&#xff1a; .text-field{-fx-background-color: transparent;-fx-border-color: #00CCFF;-fx-text-fill: white; }.password-field{-fx…

Akka的字数统计MapReduce

在我与Akka的日常工作中&#xff0c;我最近写了一个字数映射表简化示例。 本示例实现了Map Reduce模型&#xff0c;该模型非常适合横向扩展设计方法。 流 客户端系统&#xff08;FileReadActor&#xff09;读取文本文件&#xff0c;并将每一行文本作为消息发送给ClientActor。…

Struts2之环境配置

在学习struts2之前&#xff0c;首先我们要明白使用struts2的目的是什么&#xff1f;它能给我们带来什么样的好处&#xff1f; 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计。在这儿MVC模式的好处就不在提了。 技术优势 Struts2有两方面的技术优势&#xff0c;…

基于JavaFX的SimpleDateFormat演示程序

对于使用Java Date进行格式化的新手甚至对于使用Java Date进行格式化的有经验的Java开发人员而言&#xff0c;可能有些棘手的事情是使用SimpleDateFormat规范日期/时间格式。 SimpleDateFormat的基于类级别的Javadoc的文档非常详尽&#xff0c;涵盖了表示日期/时间的各个组成部…

iOS与H5交互

前提&#xff1a;在iOS控制器中加载UIWebView&#xff0c;设置代理&#xff0c;遵守UIWebViewDelegate协议。 一、iOS调用JS方法 通过iOS调用JS代码实现起来比较方便直接调用UIWebView的方法- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script…

markdownTest

MARKDOWNTEST 11111111111111有一种神奇的语言&#xff0c;它比html还简单&#xff0c;它巧妙地将内容与格式整合在一起——它就是Markdown有一种神奇的语言&#xff0c;它比html还简单&#xff0c;它巧妙地将内容与格式整合在一起——它就是Markdown 111111111111111222222222…

Aleri –复杂事件处理

Sybase的Aleri流媒体平台是CEP市场中最受欢迎的产品之一。 它在Sybase的交易平台RAP版本中使用&#xff0c;该版本在资本市场中广泛用于管理投资组合中的头寸。 今天&#xff0c;在这个由多个部分组成的系列文章的第一个部分中&#xff0c;我希望提供Aleri平台的概述&#xff0…

python版本回退_Python爬虫之BeautifulSoup解析之路

上一篇分享了正则表达式的使用&#xff0c;相信大家对正则也已经有了一定的了解。它可以针对任意字符串做任何的匹配并提取所需信息。但是我们爬虫基本上解析的都是html或者xml结构的内容&#xff0c;而非任意字符串。正则表达式虽然很强大灵活&#xff0c;但是对于html这样结构…

WebStorm 运行Rect Native 项目

今天教大家如何直接使用WebStorm这个IDE直接完成编码运行项目工作.这样就可以不用打开Xcode了. 1.首先点击WebStorm右上方的下拉箭头弹出的Edit Configurations.... 2.然后会进入一个配置页面.点击左上方的.在弹出的列表中选中npm.如图. 3.在右边的配置框中,先选择Command为hel…

python编程比赛_用Python编程分析4W场球赛后,2018世界杯冠军竟是…

比赛已经开始&#xff0c;我们不妨用 Python 来对参赛队伍的实力情况进行分析&#xff0c;并大胆的预测下本届世界杯的夺冠热门球队吧&#xff01;通过数据分析&#xff0c;可以发现很多有趣的结果&#xff0c;比如&#xff1a;找出哪些队伍是首次进入世界杯的黑马队伍找出2018…

JavaFX 2 GameTutorial第2部分

介绍 Ť他的是一系列与一个JavaFX 2游戏教程博客条目的第二批。 如果您尚未阅读第1部分&#xff0c;请参阅JavaFX 2游戏教程的简介部分。 在第1部分中&#xff0c;我提到了游戏的某些方面以及原型飞船的简单演示&#xff08;原型由简单的形状组成&#xff09;&#xff0c;该飞船…

sqlyog连接mysql教程_如何用SQLyog实现远程连接MySQL

SQLyog客户端&#xff0c;用root用户远程链接MySQL时&#xff0c;提示ldquo;访问被拒绝rdquo;&#xff0c;在网上搜索了一下原因。原来是MySQL没有授权其远程链1&#xff0c;SQLyog客户端&#xff0c;&#xff0c;用root用户远程链接MySQL时&#xff0c;提示“访问被拒绝”&…

JavaME:Google静态地图API

无论您是需要基于位置的应用程序的地图还是只是出于娱乐目的&#xff0c;都可以使用有史以来最简单的方法&#xff1a;Google Static Maps API。 在这篇文章中&#xff0c;我们将看到如何从纬度和经度获得地图作为图像。 可以使用Location API获得纬度和经度&#xff0c;我们将…

深入探讨JS中的数组排序函数sort()和reverse()

最近在研究Javascript发现了其中一些比较灵异的事情。有点让人感到无语比如&#xff1a; alert(typeof( NaN NaN));//结果为假。 alert(typeof( NaN ! NaN));//结果为真。 嘿嘿&#xff0c;当然这个不是这篇文章要讨论的!!开始我们的正文 首先&#xff0c;我们来看一下JS中sor…

带有谓词的Java中的功能样式-第1部分

您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; 实际上&#xff…