启用二进制日志文件进行mysql数据恢复
查看文件/etc/my.cnf中[mysqld]配置块的是否配置log-bin 项,用来记录数据库更改的日志,
然后设置要需要写入日志的数据库或者不要写入日志的数据库。
[mysqld]
. . .
server-id=1 //数据库的 id 这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
查看是否启用了binlog:
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
查看mysql数据库
现在(正在)记录二进制数据的文件具体信息
mysql> show master status\G;
*************************** 1. row ***************************
File: mysql-bin.000060
Position: 106
Binlog_Do_DB: qwe;
Binlog_Ignore_DB:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>
日志开始从106位置开始记录,数据库qwe.
对数据库进行如下操作
mysql> insert into test(val,data) values(100,'ffff');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test(val,data) values(110,'gggg');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test(val,data) values(120,'ffff');
Query OK, 1 row affected (0.01 sec)
mysql> delete from test where id between 4 and 5;
Query OK, 2 rows affected (0.00 sec)
mysql> drop table test;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
Empty set (0.00 sec)
如何恢复刚刚删除数据库的所有信息。
首先,用mysqlbinlog命令对二进制的日志文件解析成文本文件。如:
[root@localhost /]# mysqlbinlog mysql-bin.000005 >/root/Desktop/5.txt
打开5.txt,#
at 1214
#111017 16:30:35 server id 1 end_log_pos 1317 Query thread_id=3 exec_time=0 error_code=0
SET TIMESTAMP=1318840235/*!*/;
delete from test where id between 4 and 5
/*!*/;
# at 1317
#111017 16:30:43 server id 1 end_log_pos 1345 Intvar
SET INSERT_ID=7/*!*/;
# at 1345
#111017 16:30:43 server id 1 end_log_pos 1450 Query thread_id=3 exec_time=0 error_code=0
因为delete的操作在pos1317和1345之间。
[root@localhost var]# mysqlbinlog mysql-bin.000005 --stop-pos=1214 |mysql -uroot -p
Enter password:
[root@localhost var]# mysqlbinlog mysql-bin.000005 --start-pos=1317 |mysql -uroot -p
Enter password:
被删除的数据恢复。
分享到:
相关推荐
在MySQL配置文件`my.cnf`或`my.ini`中启用二进制日志记录,需要在`mysqld`段落中添加`log-bin`选项,指定日志文件的名称或路径。例如,`log-bin=liangck`表示日志文件名为`liangck`,系统会自动按顺序创建如`liangck...
首先,要启用二进制日志功能,需要在MySQL的配置文件`my.cnf`或`my.ini`中添加`log_bin = mysql-bin`这一行。这将指示MySQL在数据库目录下创建名为`mysql-bin`的日志文件系列。每次MySQL启动或执行`FLUSH LOGS`命令...
MySQL的ROW格式二进制日志是数据库管理系统中用于记录所有数据库更改的一种重要工具,它在数据恢复场景中扮演着至关重要的角色。本教程将深入探讨如何利用Python来解析和利用这些日志来恢复被误删除的数据。 首先,...
启用二进制日志需要在MySQL配置文件中设置`log-bin`选项。 3. 查询日志 (General Query Log) 查询日志记录了服务器接收到的所有SQL语句,包括成功执行的和失败的。这对于调试和性能分析非常有用,但因为会产生大量...
MySQL二进制日志(Binary Log,简称binlog)是MySQL数据库系统中记录所有更改数据库数据的事件序列的重要工具,主要用于数据恢复、主从复制等场景。本篇将深入探讨如何利用Python语言来解析和转换MySQL的binlog,...
如果只有一台MySQL服务器,且不需要进行数据恢复或主从同步,可以在配置文件`my.cnf`中取消`log-bin`选项的注释,然后重启MySQL服务来停止生成二进制日志。 对于有主从服务器环境的情况,清理二进制日志需要更谨慎...
不良影响: 运行服务器时若启用二进制日志则性能大约慢1%。 如何启动: 通过 –log-bin=file选项可以启用 (更改my.ini文件) 日志位置 >>如果没有指定文件名,则Mysql使用hostname-bin文件. >>如果指定了相对路径,则...
MySQL二进制日志(binlog)是数据库系统中一种重要的功能,用于记录所有改变数据库状态的事务。这种日志格式是二进制的,它包含了一种持久化数据库更改的方式,这对于数据恢复、主从复制和数据分析具有关键作用。在...
如果没有启用二进制日志,这个命令将抛出错误`ERROR 1381 (HY000): You are not using binary logging`。 2. **检查二进制日志状态**:如果想要确认二进制日志是否启用,可以在MySQL配置文件(如my.cnf或my.ini)中...
二进制日志文件(如`.binlog`)需要使用`mysqlbinlog`工具进行解析。通过`show master status`命令可以获取当前二进制日志文件名和位置。使用`mysqlbinlog`可以将二进制日志转换为可读文本格式,或者指定时间范围...
启用二进制日志功能,需要在MySQL服务器的选项文件(如/etc/my.cnf或C:\my.ini)的[mysqld]组中添加一行配置,例如:`log-bin=/var/log/mysql/bin.1og`。路径根据实际文件系统和用户设置调整,并创建对应的目录用于...
启用二进制日志需要在MySQL配置文件中设置`log-bin`参数,未指定名称时默认使用主机名加上序列号作为文件名,存放在数据库目录下。`.index`文件记录了二进制日志文件的顺序。与二进制日志相关的参数包括: - `max_...
在MySQL中,可以通过设置log_bin选项启用二进制日志。默认情况下,binlog文件的命名遵循“master-bin.000001”这样的模式。每条记录都标记着它所属的二进制日志文件名和在文件中的位置,这使得追踪和复制操作可以...
二进制日志是MySQL的核心日志,用于实现即时点恢复(point-in-time recovery)和复制功能。它记录了所有改变数据库状态的DML(数据操纵语言)和DDL(数据定义语言)语句。二进制日志文件的路径可以在配置文件中通过`...
如果MySQL服务器启用了二进制日志,你可以使用mysqlbinlog工具来恢复从指定的时间点开始 (例如...启用二进制日志的选项为 –log-bin。要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句: SHOW BINLOG EVE
MySQL 的二进制日志(binlog)记录了所有改变数据库状态的事务,可用于灾难恢复。如果表没有备份,但binlog可用,可以通过以下步骤恢复: - 找到包含丢失数据的最后一个事务的 binlog 文件和位置。 - 使用 `...
- 如果需要重新启用二进制日志功能,可以在 MySQL 启动后通过执行 `RESET MASTER;` 命令来清除现有的二进制日志文件并重新开始记录新的二进制日志。 #### 案例二:`ibdata1` 文件导致的问题 本案例中,MySQL 也是...