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基本哲学之一就是“一切皆文件”&…

oracle sga pga mysql_修改Oracle数据库SGA和PGA大小

SGA的大小&#xff1a;一般物理内存20%用作操作系统保留&#xff0c;其他80%用于数据库。SGA普通数据库可以分配40%-60%之间&#xff0c;PGA可以分配20%-40%之间。1、以dba身份登录并查看SGA信息&#xff1a;SQL>show parameter sga&#xff1b;查看PGA信息&#xff1a;SQL&…

NetBeans 7.1:创建自定义提示

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

今年暑假不AC

Problem Description “今年暑假不AC&#xff1f;”“是的。”“那你干什么呢&#xff1f;”“看世界杯呀&#xff0c;笨蛋&#xff01;”“#$%^&*%...”确实如此&#xff0c;世界杯来了&#xff0c;球迷的节日也来了&#xff0c;估计很多ACMer也会抛开电脑&#xff0c;奔向…

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…

Spring注解Annotion详解

概述 注释配置相对于 XML 配置具有很多的优势&#xff1a; 它可以充分利用 Java 的反射机制获取类结构信息&#xff0c;这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时&#xff0c;我们就不需要指定 PO 的属性名、类型等信息&#xff0c;如果关系表字段和 PO…

CopyOnWrite容器

1.简介 1.CopyOnWrite是程序优化的策略,当共享的内容需要修改时,复制出去一份进行修改,然后将原来的引用指向修改完的 2.java并发包(java.util.concurrent)中CopyOnWriteArrayList和CopyOnWriteArraySet实现了这个并发容器 3.好处:因为写时是在复制的一份上操作,所以可以并发的…

Akka的字数统计MapReduce

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

mysql如何设置多节点_详细介绍Mysql5.7从节点设置多线程主从复制的办法

软件安装&#xff1a;装机软件必备包SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集&#xff0c;是一种功能齐全的数据库语言。在使用它时&#xff0c;只需要发出“做什么”的命令&#xff0c;“怎么做”是不用使用者考虑的。SQL功…

python学习笔记 可变参数关键字参数**kw相关学习

在Python中可以定义可变参数&#xff0c;顾名思义&#xff0c;可变参数就是传入参数是可变的。可以是任意个&#xff0c;以一个简单的数学编程为例&#xff0c;计算 sum a * a b * b .....z * z 函数定义可以如下&#xff1a; def getsum(num) :sum 0for n in num :sum su…

Struts2之环境配置

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

mysql数据库备份shell_mysql数据库备份shell脚本分享

#!/bin/bash#2020年04月27日15:56:21#auto backup mysql db#by author www.cnbugs.com########################SQL_DB"$*"SQL_USR"backup"SQL_PWD"123456"SQL_CMD"/usr/bin/mysqldump"SQL_DIR"/data/backup/date %F"if [ $…

懒惰的JSF Primefaces数据表分页–第1部分

今天&#xff0c;我们将使用带有视图范围的托管bean的惰性列表进行JSF数据表分页。 这些单词/表达式是什么意思&#xff1f; 如今&#xff0c;有几个JSF框架为数据表提供现成的分页&#xff0c;列排序器和其他功能。 今天&#xff0c;我们将使用Primefaces数据表。 通常&#…

java 动态增加定时任务

直接上代码 import org.apache.tools.ant.util.DateUtils; import org.quartz.CronTrigger; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.impl.StdSchedulerFactory;import java.util.Calendar; import…

基于JavaFX的SimpleDateFormat演示程序

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

mysql中预定义常量_PHP预定义常量

这些常量在 PHP 的内核中定义。它包含 PHP、Zend 引擎和 SAPI 模块。PHP_VERSION (string)PHP_OS (string)PHP_EOL (string)自 PHP 4.3.10 和 PHP 5.0.2 起可用PHP_INT_MAX (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用PHP_INT_SIZE (integer)自 PHP 4.4.0 和 PHP 5.0.5 起可用D…

iOS与H5交互

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