在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
================================
嗯,谢谢楼上几位的回答,目前已经不报告错误了。
但是执行完毕以后,数据库中的数据并不会恢复到那个时间点,使用了
mysqlbinlog --stop-position="n" 这样的参数也不行。
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
================================
嗯,谢谢楼上几位的回答,目前已经不报告错误了。
但是执行完毕以后,数据库中的数据并不会恢复到那个时间点,使用了
mysqlbinlog --stop-position="n" 这样的参数也不行。
应该是事务性的数据库
CREATE TABLE demotable
(id
INTEGER(8) NOT NULL AUTO_INCREMENT,name
VARCHAR(50) COLLATE latin1_swedish_ci DEFAULT '',
PRIMARY KEY (id
)
)ENGINE=InnoDB
AUTO_INCREMENT=19 CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
COMMENT='InnoDB free: 4096 kB';
这里是测试的DDL,大家看看是不是用的InnoDB作为引擎的。
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
================================
嗯,谢谢楼上几位的回答,目前已经不报告错误了。
但是执行完毕以后,数据库中的数据并不会恢复到那个时间点,使用了
mysqlbinlog --stop-position="n" 这样的参数也不行。
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
[b]问题补充:[/b]
在windows 2003下安装了wamp server,其中的mysql开启了二进制日志功能,请问怎么样利用mysqlbinlog将数据恢复到指定的时间。
目前用mysqlbinlog --stop-date="2008-11-10 20:00" c:/logs/demo.000001 |mysql -uroot -p 会报告错误。
请问确切的使用方式是什么?
================================
嗯,谢谢楼上几位的回答,目前已经不报告错误了。
但是执行完毕以后,数据库中的数据并不会恢复到那个时间点,使用了
mysqlbinlog --stop-position="n" 这样的参数也不行。
应该是事务性的数据库
CREATE TABLE demotable
(id
INTEGER(8) NOT NULL AUTO_INCREMENT,name
VARCHAR(50) COLLATE latin1_swedish_ci DEFAULT '',
PRIMARY KEY (id
)
)ENGINE=InnoDB
AUTO_INCREMENT=19 CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
COMMENT='InnoDB free: 4096 kB';
这里是测试的DDL,大家看看是不是用的InnoDB作为引擎的。
应该是有的,因为我也使用了--stop-position="n"这样的参数来恢复,而参数中的n就是根据show binlog events来查看的.
[b]问题补充:[/b]
执行:
mysqlbinlog C:/logs/demolog.000001
at 3473
#081111 9:02:49 server id 1 end_log_pos 3501 Intvar
SET INSERT_ID=16/*!*/;
at 3501
#081111 9:02:49 server id 1 end_log_pos 3619 Query thread_id=10 exec_tim
e=0 error_code=0
SET TIMESTAMP=1226365369/*!*/;
[color=red]INSERT INTO demotable
(id
,name
) VALUES (NULL,'p')/*!*/;
at 3619[/color]
#081111 9:02:49 server id 1 end_log_pos 3646 Xid = 139
COMMIT/*!*/;
at 3646
#081111 9:02:51 server id 1 end_log_pos 3674 Intvar
SET INSERT_ID=17/*!*/;
at 3674
#081111 9:02:51 server id 1 end_log_pos 3792 Query thread_id=10 exec_tim
e=0 error_code=0
SET TIMESTAMP=1226365371/*!*/;
INSERT INTO demotable
(id
,name
) VALUES (NULL,'q')/*!*/;
at 3792
#081111 9:02:51 server id 1 end_log_pos 3819 Xid = 141
COMMIT/*!*/;
at 3819
#081111 9:02:57 server id 1 end_log_pos 3847 Intvar
SET INSERT_ID=18/*!*/;
at 3847
#081111 9:02:57 server id 1 end_log_pos 3964 Query thread_id=10 exec_tim
e=0 error_code=0
SET TIMESTAMP=1226365377/*!*/;
这样,我执行:
mysqlbinlog --stop-position="3646" C:/logs/demolog.000001 -uroot -p
或者:
mysqlbinlog --stop-date="2008-11-11 9:02:48" C:/logs/demolog.000001 -uroot -p
这样是不是就可以把数据库恢复到9:02:49之前的数据库状态,或者是就是3646操作点之前的状态,还需要别的额外的什么操作吗?
如果不需要别的操作,我目前遇到的问题,就是这样执行以后,不报告错误,也不能改变数据库。