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同理