WIKI系統及MysQL數據庫宕機恢復文檔

WIKI系統宕機恢復:

由於WIKI系統爲虛擬機環境,當出現問題時可直接使用鏡像恢復。而且虛擬機環境故障率較低。

Mysql數據庫宕機恢復:

154155330.jpg

mysql增量恢復必備條件:

*開啓mysqllog-bin日誌功能

mysql數據庫開啓了log-bin參數記錄binlog日誌功能如下:

[root@wikiDB~]# grep log-bin /data/3306/my.cnf

log-bin= /data/3306/mysql-bin

*存在mysql數據庫全備

宕機恢復解讀:

如上圖所示;我們的mysql數據庫,每天凌晨00:00-01:00期間,對數據庫進行分庫備份。備份方式爲不鎖表備份,不影響線上用戶查看資料。同時定時任務1個小時就對binlog日誌進行一次遠端推送,到WIKI虛擬主機上(至於爲什麼放在虛擬主機上,我是這樣做的。虛擬主機首先關於硬件的故障是沒有的,只要不是人爲操作。那麼它就很安全;而且虛擬主機備份起來很方便,做個鏡像即可。當出現問題時,還原鏡像;)。同時mysql數據庫開啓samba服務,允許備份服務器進行拷貝數據。也就是說我們同時做了雙備份,當出現問題時,有多餘的備份在手裏。

宕機恢復步驟

1)檢查全備及binlog日誌

[root@lamp3306]# ll /server/backup/

總計 148

drwxr-xr-x2 root root 4096 2013-06-17192.168.126.129

-rw-r--r--1 root root 136950 06-16 22:18 mysql_backup_2013-06-16.sql.gz

-rw-r--r--1 root root 140 06-16 22:18mysqllogs_2013-06-16.log

[root@lamp3306]# ll -rt /data/3306/mysql-bin.*

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000014

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000013

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000012

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000011

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000010

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000009

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000008

-rw-rw----1 mysql mysql 1292 06-16 22:18 /data/3306/mysql-bin.000007

-rw-rw----1 mysql mysql 415 06-16 22:40 /data/3306/mysql-bin.000015

增量日誌的開始點,可以看時間的先後,進行判斷。這裏我們發現是22:40爲最新的binlog

立即刷新並備份出binlog

[root@lamp3306]# mysqladmin -uroot -p'oldboy' -S /data/3306/mysql.sock flush-logs

[root@lamp3306]# ll -rt /data/3306/mysql-bin.*

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000014

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000013

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000012

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000011

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000010

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000009

-rw-rw----1 mysql mysql 149 06-16 22:18/data/3306/mysql-bin.000008

-rw-rw----1 mysql mysql 1292 06-16 22:18 /data/3306/mysql-bin.000007

-rw-rw----1 mysql mysql 106 06-16 22:51/data/3306/mysql-bin.000016

-rw-rw----1 mysql mysql 458 06-16 22:51/data/3306/mysql-bin.000015

[root@lamp3306]# cp mysql-bin.000015 /server/backup/

恢復binlog生成SQL語句

[root@lamp3306]# cd /server/backup/

[root@lampbackup]# mysqlbinlog mysql-bin.000015 >bin.sql #該命令爲將二進制的binlog日誌,轉換爲sql語句。

[root@lampbackup]# egrep -v "^#|^$|\*" bin.sql

BINLOG'

M8m9UQ8BAAAAZgAAAGoAAAAAAAQANS4xLjYyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC

BEGIN

insertinto student values(0006,'xiaobao','man',29,'computer')

dropdatabase oldboy

DELIMITER;

可以看出,這個文件就是我們數據庫的增量。也就是從0點備份到發現出問題期間的所有mysql數據庫的操作。

提示:如果有多個庫,此時:

mysqlbinlogmysql-bin.000016 -d oldboy >binlog.sql當然對於庫也要分開進行備份,否則恢復的時候比較麻煩。


2)恢復凌晨全備

開始恢復,先回復凌晨全備,然後恢復整備到出問題時的所有增量數據。

解壓全備文件

[root@lampbackup]# gzip -d mysql_backup_2013-06-16.sql.gz

開始恢復全備

[root@lampbackup]# mysql -uroot -p'oldboy' -S /data/3306/mysql.sock<mysql_backup_2013-06-16.sql

[root@lampbackup]# mysql -uroot -p'oldboy' -S /data/3306/mysql.sock -e "showdatabases;"

+--------------------+

|Database |

+--------------------+

|information_schema |

|baozi |

|chengcai |

|haole |

|lalala |

|mysql |

|oldboy |

|test |

|xiaobao |

+--------------------+

[root@lampbackup]# mysql -uroot -p'oldboy' -S /data/3306/mysql.sock -e "set namesgbk;select * from oldboy.student;"

+-----+-----------+------+------+--------------------+

| Sno| Sname | Ssex | Sage | Sdept |

+-----+-----------+------+------+--------------------+

| 1 | ???? | ?? | 24 | ?????ú???? |

| 2 | elain | ?? | 26 | computer applica |

| 3 | xiaozhang | ?? | 28| ???÷???í |

| 4 | jeacen | ?? | 20 | computer applica |

| 5 | ???? | ?? | 29 | ?????ú???§?????? |

+-----+-----------+------+------+--------------------+

3)恢復增量備份

然後我們進行恢復全備和增量備份:

[root@lampbackup]# mysql -uroot -p'oldboy' -S /data/3306/mysql.sock<mysql_backup_2013-06-16.sql

[root@lampbackup]# mysql -uroot -p'oldboy' -S /data/3306/mysql.sock <bin.sql [root@lamp backup]# mysql-uroot -p'oldboy' -S /data/3306/mysql.sock -e "set names gbk;select * fromoldboy.student;"

+-----+-----------+------+------+--------------------+

| Sno| Sname | Ssex | Sage | Sdept |

+-----+-----------+------+------+--------------------+

| 1 | ???? | ?? | 24 | ?????ú???? |

| 2 | elain | ?? | 26 | computer applica |

| 3 | xiaozhang | ?? | 28| ???÷???í |

| 4 | jeacen | ?? | 20 | computer applica |

| 5 | ???? | ?? | 29 | ?????ú???§?????? |

| 6 | xiaobao | ma | 29 | computer |

+-----+-----------+------+------+--------------------+


現在我們恢復到了0點到出現問題時刻的全備數據。

注意:恢復時應嚴格按照步驟進行,提取最新的binlog日誌。儘量減少數據的丟失。保證數據的完整。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章