热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql全备+binlog恢复数据

mysql全备+binlog恢复数据,Go语言社区,Golang程序员人脉社

    假如我在2018-6-10日给数据库做了一次备份,但是在2018-7-3日数据库操作失误,造成了误删或者其他操作,我需要将数据恢复到2018-7-3日的数据,那么即可运用2018-6-10日备份的数据+binlog日志实现数据恢复。(其中binlog恢复的是2018-6-10日-2018-7-3日的数据)

    首先确定你的服务器已开启binlog日志,开通、查看教程请自行百度。

    windows版本的mysql的binlog日志一般在data这个目录下,其中mysql-bin.index这个文件相当于索引文件,而其他的00000x则是记录了除了select查询语句以外的sql语句。


    为了知道我要从哪里开始恢复,哪里结束恢复,我们需要查看mysql-bin.00000x这些文件,在mysql命令下执行:show binlog events in 'mysql-bin.000001';,即可查看到mysql-bin.000001这个文件的内容,但是通常文件都会很大,我们直接这样查看的话比较慢,也不好观察。所以我们需要将他转成txt文件进行查看,在mysql的bin目录下执行cmd(不是mysql命令终端下):mysqlbinlog mysql-bin.000001 > d:/1.txt,即可将内容写到D盘的1.txt中,但是但是这些都是二进制的文件,所以windows下无法查看,打开1.txt会发现乱码


则我们需要将他转成普通文件进行查看,具体是在mysqlbinlog命令中增加参数,mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000001 > d:/1.txt 这样即可解决乱码问题。

    然后我们打开txt文件,查找出现问题的地方,并且找到需要恢复到的地方。

    

    上面这种办法读取出binlog日志的全文内容较多,不容易分辨查看pos点信息,这里介绍一种更为方便的查询命令:
      mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
             选项解析:
               IN 'log_name'   指定要查询的binlog文件名(不指定就是第一个binlog文件)
               FROM pos        指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
               LIMIT [offset,] 偏移量(不指定就是0)
               row_count       查询总条数(不指定就是所有行)
             截取部分查询结果:
             *************************** 20. row ***************************
                Log_name: mysql-bin.000021  ----------------------------------------------> 查询的binlog日志文件名
                     Pos: 11197 ----------------------------------------------------------> pos起始点:
              Event_type: Query ----------------------------------------------------------> 事件类型:Query
               Server_id: 1 --------------------------------------------------------------> 标识是由哪台服务器执行的
             End_log_pos: 11308 ----------------------------------------------------------> pos结束点:11308(即:下行的pos起始点)
                    Info: use `zyyshop`; INSERT INTO `team2` VALUES (0,345,'asdf8er5') ---> 执行的sql语句
             *************************** 21. row ***************************
                Log_name: mysql-bin.000021
                     Pos: 11308 ----------------------------------------------------------> pos起始点:11308(即:上行的pos结束点)
              Event_type: Query
               Server_id: 1
             End_log_pos: 11417
                    Info: use `zyyshop`; /*!40000 ALTER TABLE `team2` ENABLE KEYS */
             *************************** 22. row ***************************
                Log_name: mysql-bin.000021
                     Pos: 11417
              Event_type: Query
               Server_id: 1
             End_log_pos: 11510
                    Info: use `zyyshop`; DROP TABLE IF EXISTS `type`
      这条语句可以将指定的binlog日志文件,分成有效事件行的方式返回,并可使用limit指定pos点的起始偏移,查询条数;
      A.查询第一个(最早)的binlog日志:
        mysql> show binlog eventsG; 
      B.指定查询 mysql-bin.000021 这个文件:
        mysql> show binlog events in 'mysql-bin.000021'G;
      C.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起:
        mysql> show binlog events in 'mysql-bin.000021' from 8224G;
      D.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,查询10条
        mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10G;
      E.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,偏移2行,查询10条

        mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 2,10G;

恢复数据步骤:

一:导入最近一次全备的数据(注意:binlog恢复的数据不能恢复到全备之前的数据,除非用binlog日志回滚)

二:运用binlog日志恢复指定时间段内的数据,其中binlog恢复方式有以下几种方式

    1)按时间恢复--start-datetime

  在mysql的bin目录下执行cmd(不是mysql命令终端下):mysqlbinlog mysql-bin.000001 --start-datetime='2018-07-12 19:50:36' --stop-datetime='2018-07-13 19:23:40' >d:\test1.sql  将恢复2018-07-12 19:50:36到2018-07-13 19:23:40这个时间段内的sql语句写入到d:\test1.sql 中,然后我们在Mysql终端下执行:source d:\test1.sql即可将数据恢复。




    1)通过--start-position节点

  在mysql的bin目录下执行cmd(不是mysql命令终端下):mysqlbinlog mysql-bin.000001 --start-datetime='2018-07-12 19:50:36' --stop-datetime='2018-07-13 19:23:40' >d:\test1.sql  将恢复2018-07-12 19:50:36到2018-07-13 19:23:40这个时间段内的sql语句写入到d:\test1.sql 中,然后我们在Mysql终端下执行:source d:\test1.sql即可将恢复恢复2018-07-12 19:50:36到2018-07-13 19:23:40这个时间段内的数据


atxxx为当前所在的节点,end_log_posXXX为当前结束的节点,下一个操作时间的开始节点。
在mysql的bin目录下执行cmd(不是mysql命令终端下):mysqlbinlog --start-position=4 --stop-position=200268787 ../data/mysql-bin.000001 > d:\test1.sql  将恢复4到200268787 这个节点内的sql语句写入到d:\test1.sql 中,然后我们在Mysql终端下执行:source d:\test1.sql即可将恢复4到200268787 这个节点内的数据




推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了Paxos的世界中关于复制日志与状态机的概念和重要性。通过存储日志来实现数据的持久化,并通过日志流来记录数据的变化,而不是直接持久化数据本身。这样做的好处是简化了持久化存储的操作,并且方便多机之间的数据同步。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
author-avatar
薇洁诗婷梦添
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有