首页 > 代码库 > mysqlbinlog二进制恢复

mysqlbinlog二进制恢复

Mysql数据恢复主要针对Windows游戏引擎服务器意外宕机,以及游戏出现重大BUG,导致需要回档。

注意:请在恢复数据库之前,备份目标数据库,切记!

一、Windows服务器意外DOWN机,数据库恢复操作流程:

1、数据库恢复之前,必须通知联运平台,提前出维护公告,恢复时间根据目录数据库的数量,来决定恢复时间,一般约2个小时。

2、确定需恢复的目标游戏服游戏引擎为关闭状态,记录目录服宕机时间。例如:2011-09-29 14:09:27 请查看系统事件查看器获得正确的异常关机时间

注意:当服务器出问题的时间与重启服务器的时间不一致时,数据恢复的时间应按照短信报警的时间(5分钟延迟)来确定。

技术分享

3、关闭mysql服务,在服务器上操作前先关闭二进制日志,my.ini中将expire_logs_days=5和log-bin这两行进行注释,注释后重启mysql服务,待恢复完毕后再开启

技术分享

4、删除目标数据库(删除之前确认数据已备份)

5、登陆数据库,创建目标数据库,相关root权限,请找项目组长。 

6、从本地服务器备份目录取当天早上5:00的备份目标数据库sql包,解压后,并导入对应的目标数据库.

7、以上操作,数据库将还原到早上5:00点,取今天5点至故障时候相关联的二进制日志文件,修改日期表示这个二进制文件生成的结束时间。

技术分享

使用命令进行二进制日志还原,注意以下还原是针对所有数据库进行二进制恢复。

 技术分享

提示:如果logbin文件只有一个,数据恢复的sql语句应指明开始 和 结束时间。如:

技术分享

8、如果只需要恢复一个数据库,必须要指定数据库,否则将对全服的数据库进行操作。如

  D:\>mysqlbinlog  -d cq_actor1 --stop-datetime="2013-10-27 19:00:00"  "D:\Program Files\MySQL\MySQL Server 5.0\data\mysql-bin.000244"   | mysql -uroot -p  

9、至此恢复完毕,关闭mysql,取消login注释,开启DBengine和游戏引擎即可。

10、游戏测试,提前与对方平台运营沟通,测试游戏,确保游戏没有问题,在开游戏入口。

二、游戏出现BUG,需要回档处理,数据库恢复操作流程:

1、游戏出现bug,需要对目标服务器的某一个数据库进行回档操作,操作之前,需要与运营沟通维护时间。

2、关闭目标服游戏引擎、网关、数据服务。 

3、备份目标数据库.

4、通过项目组长删除目标数据库,并重设root密码.

5、新建目标数据库,并导入本地服务器备份目标sql

6、通过分析二进制文件,确定恢复的开始时间与结束时间。

7、数据恢复完成后,开启游戏相关程序,并做测试。

8、测试完成后,确保没有问题,通知对方平台开启入口。

附:mysqlbinlog命令和参数的说明:

?--start-pos=N  //从二进制日志中第1个位置等于N参量时的事件开始读。

?--stop-pos=N   //从二进制日志中第1个位置等于和大于N参量时的事件起停止读。

--start-datetime 上面同理 只是使用日期来恢复

格式:mysqlbinlog 日志文件 参数 | mysql -u用户名 -p密码

mysqlbinlog liangck.000001 | mysql -uroot –p123456  表示 全部恢复

mysqlbinlog liangck.000002 --start-pos=417 --stop-pos=773 | mysql -uroot -p123456 表示 从417至773位置

mysqlbinlog liangck.000002 --stop-pos=773 | mysql -uroot -p123456  表示 从头至773位置

mysqlbinlog liangck.000002 --start-pos=417 | mysql -uroot -p123456 表示 从417至尾 位置 

mysqlbinlog liangck.000002 --start-datetime="2004-12-25 11:25:56"  | mysql -uroot -p123456 日期参数和pos同理

mysqlbinlog二进制恢复