【问题标题】:Recover MySQL data from queries/logs/binary/whatever从查询/日志/二进制/任何内容中恢复 MySQL 数据
【发布时间】:2014-05-29 02:39:24
【问题描述】:

我在使用 mysql 时遇到了一个非常大的问题。我有一个表单,用户在其中填写与数据库中的 datetime 属性相对应的字段。我遇到的问题是表单的日期时间字段格式错误,并且数据库中的所有记录都填充了“0000-00-00 00:00:00”。

有没有办法恢复用户提交的数据?也许来自日志/二进制日志?

我检查了一般日志,它是空的。

提前致谢!我真的很感激你的帮助。

【问题讨论】:

    标签: mysql datetime logging recover


    【解决方案1】:

    mysqlbinlog 实用程序可用于将二进制日志二进制格式转换为文本格式。

    http://dev.mysql.com/doc/refman/5.5/en/mysqlbinlog.html

    请注意,二进制日志可能包含语句(这些更改将在 mysqlbinlog urility 的输出中明显。它也可能包含二进制更改,或者它们可能是混合的。二进制日志中记录的内容取决于设置binlog_statement 系统变量。默认值取决于 MySQL 的版本。

    http://dev.mysql.com/doc/refman/5.5/en/binary-log-setting.html

    (这个问题最好在 dba.stackexchange.com 上提出。)

    跟进

    MySQL 二进制日志不是 InnoDB 日志文件(ib_logfile0、ib_logfile1)。

    二进制日志(在我的一个安装中)被写入 MySQL 数据目录:

    SHOW VARIABLES LIKE 'datadir'
    

    例如

    > ls -l /opt/mysql/data/mysql-bin*
    
    -rw-rw---- 1 mysql mysql 1074553753 2014-05-28 22:39 /opt/mysql/data/mysql-bin.003907
    -rw-rw---- 1 mysql mysql 1073745289 2014-05-29 01:22 /opt/mysql/data/mysql-bin.003908
    -rw-rw---- 1 mysql mysql  280683262 2014-05-29 01:55 /opt/mysql/data/mysql-bin.003909
    -rw-rw---- 1 mysql mysql  520382482 2014-05-29 05:55 /opt/mysql/data/mysql-bin.003910
    -rw-rw---- 1 mysql mysql  705774048 2014-05-29 15:26 /opt/mysql/data/mysql-bin.003911
    -rw-rw---- 1 mysql mysql        817 2014-05-29 05:55 /opt/mysql/data/mysql-bin.index
    

    请注意,仅在启用二进制日志记录时才会写入二进制日志。您可以通过查询 log_bin 系统变量来检查当前是否启用了二进制日志记录:

    SHOW VARIABLES LIKE 'log_bin'
    
    Variable_name  Value   
    -------------  --------
    log_bin        ON      
    

    【讨论】:

    • 有趣。你知道那里保存了二进制日志吗?我查看了/var/log,但它似乎不是那里的二进制日志,也不是/var/lib/mysql。在后者中有一些名为 ib_logfile0、ib_logfile1、ibdata1 的文件,但是当我用它们执行 mysqlbinlog 时,它告诉我它们不是日志二进制文件。还是谢谢!
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2014-02-21
    • 2016-12-24
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多