【引自攀岩人生的博客】MySQL备份一般采取全库备份、日志备份;MySQL出现故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间;mysql的二进制日志记录着该数据库的所有增删改的操作日志还包括了这些操作的执行时间

Binlog的用途:主从同步、恢复数据库

使用binlog工具备份

查看binlog是否开启,因为默认是关闭的

从上图可知off为关闭状态,一般logbin为只读,在/etc/my.cnf下开启

重启数据库

重启后在目录下查看是否生成bin日志,黄色表示为日志

创建数据库,表,数据

创建表的时候 auto_increment为自增

重新开始一个新的日志文件

flush logs; #重新生成新的二进制文件

delete from tb1 where id=2; #删除id列中的序列号为2的数据方便测试

insert into tb1(name) values('tom'); #创建一个新的数据名为tom

查看数据

查看mysql上的二进制文件日志

查看二进制日志事件

  1. mysql> show binlog events;
  2. +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
  3. | Log_name         | Pos  | Event_type     | Server_id | End_log_pos | Info                                                                              |
  4. +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
  5. | mysql-bin.000001 |    4 | Format_desc    |         1 |         123 | Server ver: 5.7.13-log, Binlog ver: 4                                             |
  6. | mysql-bin.000001 |  123 | Previous_gtids |         1 |         154 |                                                                                   |
  7. | mysql-bin.000001 |  154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                              |
  8. | mysql-bin.000001 |  219 | Query          |         1 |         316 | create database test1                                                             |
  9. | mysql-bin.000001 |  316 | Anonymous_Gtid |         1 |         381 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                              |
  10. | mysql-bin.000001 |  381 | Query          |         1 |         525 | use `test1`; create table tb1(id int primary key auto_increment,name varchar(20)) |
  11. | mysql-bin.000001 |  525 | Anonymous_Gtid |         1 |         590 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                              |
  12. | mysql-bin.000001 |  590 | Query          |         1 |         663 | BEGIN                                                                             |
  13. | mysql-bin.000001 |  663 | Table_map      |         1 |         713 | table_id: 108 (test1.tb1)                                                         |
  14. | mysql-bin.000001 |  713 | Write_rows     |         1 |         758 | table_id: 108 flags: STMT_END_F                                                   |
  15. | mysql-bin.000001 |  758 | Xid            |         1 |         789 | COMMIT /* xid=10 */                                                               |
  16. | mysql-bin.000001 |  789 | Anonymous_Gtid |         1 |         854 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'                                              |
  17. | mysql-bin.000001 |  854 | Query          |         1 |         927 | BEGIN                                                                             |
  18. | mysql-bin.000001 |  927 | Table_map      |         1 |         977 | table_id: 108 (test1.tb1)                                                         |
  19. | mysql-bin.000001 |  977 | Write_rows     |         1 |        1026 | table_id: 108 flags: STMT_END_F                                                   |
  20. | mysql-bin.000001 | 1026 | Xid            |         1 |        1057 | COMMIT /* xid=11 */                                                               |
  21. | mysql-bin.000001 | 1057 | Rotate         |         1 |        1104 | mysql-bin.000002;pos=4          | # 此处为日志轮换事件,执行flush logs引起的
  22. +------------------+------+----------------+-----------+-------------+-----------------------------------------------------------------------------------+
  23. 17 rows in set (0.00 sec)

查看指定二进制日志的事件(上面那个命令只能查看默认1的)

  1. mysql> show binlog events in 'mysql-bin.000002';
  2. +------------------+-----+----------------+-----------+-------------+---------------------------------------+
  3. | Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
  4. +------------------+-----+----------------+-----------+-------------+---------------------------------------+
  5. | mysql-bin.000002 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.13-log, Binlog ver: 4 |
  6. | mysql-bin.000002 | 123 | Previous_gtids |         1 |         154 |                                       |
  7. | mysql-bin.000002 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
  8. | mysql-bin.000002 | 219 | Query          |         1 |         292 | BEGIN                                 |
  9. | mysql-bin.000002 | 292 | Table_map      |         1 |         342 | table_id: 108 (test1.tb1)             |
  10. | mysql-bin.000002 | 342 | Delete_rows    |         1 |         391 | table_id: 108 flags: STMT_END_F       |
  11. | mysql-bin.000002 | 391 | Xid            |         1 |         422 | COMMIT /* xid=14 */                   |
  12. | mysql-bin.000002 | 422 | Anonymous_Gtid |         1 |         487 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
  13. | mysql-bin.000002 | 487 | Query          |         1 |         560 | BEGIN                                 |
  14. | mysql-bin.000002 | 560 | Table_map      |         1 |         610 | table_id: 108 (test1.tb1)             |
  15. | mysql-bin.000002 | 610 | Write_rows     |         1 |         654 | table_id: 108 flags: STMT_END_F       |
  16. | mysql-bin.000002 | 654 | Xid            |         1 |         685 | COMMIT /* xid=15 */                   |
  17. +------------------+-----+----------------+-----------+-------------+---------------------------------------+
  18. 12 rows in set (0.00 sec)

使用mysqlbinlog工具的-v(--verbose)选项,该选项会将行事件重构成被注释掉的伪SQL语句,如果想看到更详细的信息可以将该选项给两次如-vv,这样可以包含一些数据类型和元信息的注释内容,如

先切换到binlog所在的目录下

mysqlbinlog mysql-bin.000001

mysqlbinlog -v mysql-bin.000001

mysqlbinlog -vv mysql-bin.000001

-h,-P,-p,-u等,这些参数仅在指定了--read-from-remote-server后有效。

恢复导出binlog日志

恢复完成后查看表的数据是否完整

常见的选项有:

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

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

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

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

因为备份得时候把删除那项跳过了,所以id为2的zhangsan也恢复了

使用mysqldump备份恢复

它是用于备份和数据迁移的工具,一般在数据量比较小的情况下使用如几个G,当数据比较大的情况下建议不使用;mysqldump可以对单(多)个表、单(多)个数据库及所有数据库进行导出操作;

  1. mysqldump [options] db_name [tbl_name ...] #导出指定数据库或单个表
  2. mysqldump [options] --databases db_name ... #导出多个数据库
  3. mysqldump [options] --all-databases #导出所有

备份数据库test1

  1. mysqldump -p123456 --flush-logs test1 > /opt/test1.spl
  2. #备份整个数据库,并且重新开启一个新的binlog
  3. mysql -p123456 test1 </opt/test1.spl #从备份的目录中导入

创建数据测试mysqldump工具

查看数据

创建备份的目录及备份数据库和cp bin.000001二进制文件

清楚二进制00000.2之前的日志

删除数据测试

然后在进行备份第二个二进制文件

进行数据库恢复

查看表的数据是否恢复

上面数据已经全部恢复 希望能帮到你

Mysql大数据备份及恢复的更多相关文章

  1. MySQL 大数据备份方案之Percona XtraBackup

    Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...

  2. Mysql大数据备份和增量备份及还原

    目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup ;ibbackup是需要授权价格昂贵,而xtrabackup功能比ibbackup强大而且是开源的 Xtrabackup提 ...

  3. 涂抹mysql笔记-数据备份和恢复

    <>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...

  4. 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)

    一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...

  5. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

  6. 从MySQL全库备份中恢复某个库和某张表【转】

    从MySQL全库备份中恢复某个库和某张表 一.全库备份-A [root@mha2 backup]#mysqldump -uroot -p123456 --default-character-set=u ...

  7. MySQL的数据备份以及pymysql的使用

    一.MySQL的数据备份 语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 ...

  8. mysql数据库的备份和恢复

    Mysql数据库的备份和恢复 1.备份单个数据库 mysql数据库自带了一个很好用的备份命令,就是mysqldump,它的基本使用如下: 语法:mysqldump –u <用户名> -p ...

  9. Salesforce 数据备份和恢复小知识

    数据备份的类型 在Salesforce中可以使用多种API进行数据备份,它们是: REST API SOAP API Buik API Metadata API 数据备份有三种选择: 完全备份(Ful ...

随机推荐

  1. JZOJ 1738. Heatwave

    Description 给你N个点的无向连通图,图中有M条边,第j条边的长度为: d_j. 现在有 K个询问. 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少? I ...

  2. 15、python之导入模块

    一.什么是模块? 模块本质是一个py文件,我们可以通过关键字import将py文件对象导入到当前名称空间. 二.导入模块 1.import module 2.from module import ob ...

  3. spark提交运算原理

    前面几天元旦过high了,博客也停了一两天,哈哈,今天我们重新开始,今天我们介绍的是spark的原理 首先先说一个小贴士: spark中,对于var count = 0,如果想使count自增,我们不 ...

  4. Oozie是什么

    Apache Oozie Workflow Scheduler for Hadoop Oozie is a workflow scheduler system to manage Apache Had ...

  5. python面向对象(进阶篇)

    本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员: 类的成员可以分为三大类:字段(变量).方法.属性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对 ...

  6. 12,nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  7. SpringMVC---简单登录例子

    所需jar包aopalliance-1.0.jar.commons-logging-1.2.jar.spring-aop-5.0.0.RELEASE.jar.spring-beans-5.0.0.RE ...

  8. RSA 加解密算法详解

    RSA 为"非对称加密算法".也就是加密和解密用的密钥不同. (1)乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. (2)甲方获取乙方的公钥,然后 ...

  9. 《1024伐木累》-小白篇之丽jie(结束篇)-总章节六

    往期回顾:  机缘巧合,月侠发现了老王和他心仪女孩儿的秘密,这让他倍感愤怒,一年以后,丽姐又在去往老王家的路上,这让月侠感到历史即将重新上演,他想拦住丽姐,可恰巧丽姐手机没电,失去了联系. 小序 有人 ...

  10. HDU 4116 Fruit Ninja ( 计算几何 + 扫描线 )

    给你最多1000个圆,问画一条直线最多能与几个圆相交,相切也算. 显然临界条件是这条线是某两圆的公切线,最容易想到的就是每两两圆求出所有公切线,暴力判断一下. 可惜圆有1000个,时间复杂度太高. 网 ...