mysqlbinlog二进制恢复
Posted Mr.Eric
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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二进制恢复的主要内容,如果未能解决你的问题,请参考以下文章
CentOS下利用mysqlbinlog恢复MySQL数据库