首页 > 数据库 >记一次mysqlbinlog恢复数据库数据

记一次mysqlbinlog恢复数据库数据

时间:2023-11-17 11:45:59浏览次数:38  
标签:00 -- 恢复 数据库 datetime mysql mysqlbinlog

因为一些意外操作,用旧的备份覆盖了最新的数据库 数据,导致 最近几天内的数据被覆盖掉了。

百度了一圈。。用mysqlbinlog恢复比较靠谱,网上查 感觉 操作也比较简单。。实际吧。费点劲。。

 

MySQL 的Binlog是用于记录数据库中所有操作的日志文件。通过检查日志文件,可以找到误删除的数据,并进行恢复。

 

1.进入到数据库中,通过"SHOW BINARY LOGS;" 或者 "SHOW MASTER LOGS;" ,可查看所有可用的binlog文件,两种命令查询结果一致(具体没研究)

 2.通过"SHOW MASTER STATUS;",查看master状态,即最后(最新)一个binlog日志的编号名称。

3.我们可以将该文件导出为 sql 或者 txt 文件:

 3.1 全部导出(不建议)

eg:mysqlbinlog --set-charset=utf8 /www/server/data/mysql-bin.000004 > tmp.sql

3.2 制定一个时间区间来导出(因为我是明确知道我是在什么时间点误操作的,可以快速进行定位)

eg:mysqlbinlog --base64-output=decode-rows -v --database='数据库名' --start-datetime="2023-10-25 11:00:00" --stop-datetime="2023-10-25 12:00:00" /www/server/data/mysql-bin.000004 > tmp.sql

ps:tmp.sql 打开后可以很明显看到具体都进行了哪些sql操作。

4.使用mysqlbinlog命令进行恢复数据操作(实际是把这个(时间)区间内所有的数据库操作 增删改 操作一遍。)

mysqlbinlog mysql-bin.0000xx | mysql -u用户名 -p密码 数据库名

mysqlbinlog常用参数

--start-position=875 起始pos点

--stop-position=954 结束pos点

--start-datetime="2016-9-25 22:01:08" 起始时间点

--stop-datetime="2019-9-25 22:09:46" 结束时间点

--database=ops指定只恢复ops数据库(一台主机上往往有多个数据库,只限本地log日志)

 

eg:mysqlbinlog --start-datetime="2023-10-20 11:00:00" --stop-datetime="2023-10-25 11:50:00" /www/server/data/mysql-bin.000004 --database=数据库名 | mysql -uroot  -p密码

 

 

PS:可能遇到的问题。

1.mysqlbinlog 如果显示找不到命令(-bash:mysqlbinlog:command not found),可以通过映射方式去解决,

简单说下,通过which mysqlbinlog 确认是不是这个原因,

 一般mysqlbinlog和mysql 安装在同一路径,可以查看mysql/bin目录下是否有mysqlbinlog。

进入映射文件夹 cd /usr/local/bin

做映射:ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog

 

标签:00,--,恢复,数据库,datetime,mysql,mysqlbinlog
From: https://www.cnblogs.com/cheatingcat/p/17838303.html

相关文章

  • SqlServer中获取数据库中每个表的行数
    SqlServer中获取数据库中每个表的行数CREATETABLE#RowCounts(NumberOfRowsBIGINT,TableNameVARCHAR(128))EXECsp_MSForEachTable'INSERTINTO#RowCountsSELECTCOUNT_BIG(*)ASNumberOfRows,''?''asTableNameFROM?'SELECTTableName,Numbe......
  • Lumen框架 之数据库迁移
    一、基本操作1、/database/migrations/目录下生成一个php文件,这个文件主要包括两个函数,在up()函数中根据你的需求定义数据库字段phpartisanmake:migrationcreate_users_table--create=users<?phpuseIlluminate\Database\Migrations\Migration;useIlluminate\Database\Sch......
  • 数据库对象命名规范
      译自:http://weblogs.asp.net/jamauss/articles/DatabaseNamingConventions.aspx 通用规则:命名长度不超过30个字符使用字母和下划线(避免使用数字)尽量少用下划线.以字母开头.(不要以下划线开头)避免简写(减少歧义或误解)避免缩写(缩写可能造成多义性比如见名知意避免......
  • 数据库大事记
    数据库分类分类方法为:按数据模型分类、按业务类型分类、按部署方式分类、按存储介质分类。按数据模型分类按业务类型分类按部署方式分类按存储介质分类喜欢点赞收藏转发,下期再见。......
  • db2备份/恢复常用命令
    首先要切换到数据库用户中su-db2inst11.连接数据库db2connecttodatabaseName2.创建数据库db2createdbdatabaseNameusingcodesetutf-8territoryCN3.断开连接db2forceapplicationsall4.导入数据库db2restoredb databaseNametakenat20231109......
  • 非结构化数据库的典型实例
    列举下列非结构化数据库的典型实例。键值数据库存储数据库——()列存储数据库——()文档型数据库——()图形数据库——()键值数据库是一种基于键值对存储的数据库,它将数据以键值对的形式进行存储和检索。以下是一些常见的键值数据库的典型实例:1.Redis:Redis是一个开源的内存键值数......
  • MySQL数据库高并发优化配置
    在Apache,PHP,mysql的体系架构中,MySQL对于性能的影响最大,也是关键的核心部分。对于Discuz!论坛程序也是如此,MySQL的设置是否合理优化,直接影响到论坛的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进......
  • openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性
    openGauss学习笔记-125openGauss数据库管理-设置账本数据库-校验账本数据一致性125.1前提条件数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。125.2背景信息账本数据库校验功能目前提供两种校验接口,分别为:ledger......
  • C#使用SqlSugar操作MySQL数据库实现简单的增删改查
    ......
  • Navicat设置MySQL某用户只可访问特定数据库或表
    概述项目中需要将数据库中某些表对其他系统开放,故需设置数据库的访问权限,使得某用户只能访问指定的表。MySQL提供了相关的SQL语句,但本次使用Navicat以可视化方式进行配置。方法1、新建用户2、设置权限(1)服务器权限全不勾选(2)权限权限用于设置该用户可操作哪些数据库或表,且可设置操作......