详细参数请查看 mysqlbinlog --help ,利用该命令可以通过日志文件把数据恢复到别的mysql 服务器上。
1.登录mysql,使用下面的命令可以列出里面binlog 的sql语句的位置:
mysql --user=root -pmy_pwd -e 'SHOW BINLOG EVENTS G'
mysql> show binlog events;
根据pos 范围来提取相关的sql 语句,并保存到文件当中:
mysqlbinlog --start-position=98 --stop-position=117 /var/lib/mysql2/mysql-bin.000001 --result-file=/home/binlog.1
查询的同时导入数据库:
mysqlbinlog --start-position=98 --stop-position=117 /var/lib/mysql2/mysql-bin.000001 |mysql -uroot -p
或者:
mysql> source /home/binlog.1
mysql -u用户名 -p 数据库名 </home/binlog.1
根据时间来进行恢复:
mysqlbinlog --start-datetime="2009-12-01 12:00:00" --stop-datetime="2009-12-01 19:00:00" /var/lib/mysql2/mysql-bin.000001 --result-file=/home/binlog.1
结合系统命令可以只对某个表的操作进行恢复。
比如我只恢复对cdr 表的插入动作进行恢复:
#>grep "insert into cdr " /home/binlog.1 >/home/binlog.2
#>mysql -uroot -ppassword asterisk </home/binlog.2