MySql Binlog数据找回及操作生产规范


MySql Binlog

mysql binlog 找回数据

MySQL Binlog(二进制日志)记录了对MySQL数据库的所有更改操作,包括 INSERT、UPDATE、DELETE等语句,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个binlog日志文件,从节点从binlog中同步数据,也可以通过binlog日志来恢复数据。

如果您需要使用 MySQL Binlog 找回数据,可以按照以下步骤:

  1. 确保启用了二进制日志记录(binlog)功能检查 my.cnf 文件是否包括如下设置:
log_bin=/var/lib/mysql/mysql-bin
  1. 确定需要找回数据的时间段和相关信息知道误删除或误操作发生的时间点对于恢复非常重要。此外,还应该知道有关所需表的名称、库名以及受影响的列。
    打开 MySQL 命令行模式,并输入以下命令查看 binlog 文件:
SHOW BINARY LOGS;
  1. 使用 mysqlbinlog 工具导出 binlog 文件
    mysqlbinlog --start-datetime="2023-05-2000:00:00" --stop-datetime="2023-05-2100:00:00" /var/lib/mysql/mysql-bin.000001 > recovery.sql
    这将创建一个名为 recovery.sql 的文件,并从 mysql-bin.000001 中导出指定时间范围内的所有 SQL 查询语句。
  • 注意:如果MySQL没有默认安装在系统路径中,则需指定mysqlbinlog的完整路径
  1. 此时会生成一个SQL文件,其中包含了二进制日志中的所有操作。请注意,生成的SQL可能会很大,而且不一定会自动解决外键依赖关系。因此,您需要检查文件以确保它不会产生任何问题。
    删除误删除的数据并重新添加在新的查询窗口中,从误删的表中导出已经删除的行或整个表。然后,在原始表中执行 “DELETE” 命令删除相同的行或整个表,最后将导出的数据插入到原始表中。

  2. 将已生成的 SQL 文件导入到目标数据库中:

    mysql -u username -p database < recovery.sql
  • username: 您的MySQL用户名。
  • database: 您要将数据恢复到的目标数据库的名称。

注意:如果误删除的行应该使用 UPDATE语句进行替换而不是 DELETE语句。以上是使用 MySQL Binlog 找回数据的一般步骤,但在实际应用中可能会因情况而异。最好的实践方法应该是先备份所有数据,然后再执行任何操作。同时,对于关键数据和重要的生产数据库,最好有一个完整的恢复策略,以避免任何不必要的数据丢失或损坏。

  1. 完成后,请检查您的数据库以确保数据已成功恢复。
  • 注意: 如果您在执行恢复操作之前备份了数据库,可以比较原备份的版本和现在的版本来检查数据恢复的准确性。

mysql binlog语法

mysqlbinlog [options] log-files

options:可选参数
log-files:文件名称

「options的常用值」

-d: 根据数据库的名称筛选日志
-o:跳过前N行日志
-r, --result-fil: 把日志输出到指定文件
--start-datetime: 读取指定时间之后的日志,时间格式:yyyy-MM-dd HH:mm:ss
--stop-datetime: 读取指定时间之前的日志,时间格式:yyyy-MM-dd HH:mm:ss
--start-position: 从指定位置开始读取日志
--stop-position: 读取到指定位置停止
--base64-output:在row格式下,显示伪sql语句
-v, --verbose:显示伪sql语句,-vv可以为sql语句添加备注

生产数据使用规范

1、研发人员不能直连生产库

2、登录生产库使用只读账号

3.关闭autocomit、多人复核

4.修改数据之前先备份

5.设置数据库定期备份

-- 关闭事务自动提交
set @@autocommit=0;


-- 查看需要删除的数据,共65600条
select * from t_user where age>18 and deptid=100;
-- 删除
delete from t_user where age>18;


-- 发现有问题,回滚
select * from t_user where age>18 and deptid=100;
rollback ;

-- 确认没问题,提交
-- commit;

文章作者: weilongshi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 weilongshi !
  目录