數(shù)據(jù)庫(kù)崩潰,利用備份和日志進(jìn)行災(zāi)難恢復(fù)
在實(shí)際的工作中,我們可能經(jīng)常會(huì)遇到數(shù)據(jù)庫(kù)宕機(jī),數(shù)據(jù)丟失的情況,下面,我將演示一個(gè)模擬環(huán)境
1.數(shù)據(jù)庫(kù)正常啟動(dòng)插入數(shù)據(jù):
[root@client103 ~]# mysql -uroot -pkongzhong mysql> use test; mysql> insert into a select * from a; #注: 這里不演示建表,默認(rèn)大家都懂 # 下面進(jìn)行一次全備 [root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 /tmp/backup/ >/tmp/backup/innoback.log 2>&1 # 再次插入數(shù)據(jù) mysql> insert into a select * from a; # 實(shí)行增量備份 [root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 --incremental --incremental-basedir=/tmp/backup/2014-02-27_13-24-51/ /tmp/backup/ # 再次插入數(shù)據(jù) mysql> insert into a select * from a; # 此時(shí)大家記錄一下現(xiàn)在的總行數(shù)(一會(huì)還原需要核對(duì)數(shù)據(jù)的) # 此時(shí)數(shù)據(jù)庫(kù)宕機(jī) #模擬宕機(jī)操作為: # 1.將數(shù)據(jù)目錄的下的二進(jìn)制日志,復(fù)制到 /tmp/backup,一會(huì)需要重演日志(此步非常重要,復(fù)制操作默認(rèn)大家會(huì)了) # 2.刪除數(shù)據(jù)目錄下的所有文件,此時(shí)數(shù)據(jù)庫(kù)就崩潰了(如果關(guān)閉數(shù)據(jù)庫(kù),是關(guān)不了,記得殺掉進(jìn)程,kill -9 ....)
2.數(shù)據(jù)庫(kù)宕機(jī)后執(zhí)行恢復(fù)操作
在實(shí)際的工作中,我們可能經(jīng)常會(huì)遇到數(shù)據(jù)庫(kù)宕機(jī),數(shù)據(jù)丟失的情況,下面,我將演示一個(gè)模擬環(huán)境 1.數(shù)據(jù)庫(kù)正常啟動(dòng)插入數(shù)據(jù): [root@client103 ~]# mysql -uroot -pkongzhong mysql> use test; mysql> insert into a select * from a; #注: 這里不演示建表,默認(rèn)大家都懂 # 下面進(jìn)行一次全備 [root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 /tmp/backup/ >/tmp/backup/innoback.log 2>&1 # 再次插入數(shù)據(jù) mysql> insert into a select * from a; # 實(shí)行增量備份 [root@client103 ~]# innobackupex --user=root --password=kongzhong --defaults-file=/etc/my.cnf --port=3306 --incremental --incremental-basedir=/tmp/backup/2014-02-27_13-24-51/ /tmp/backup/ # 再次插入數(shù)據(jù) mysql> insert into a select * from a; # 此時(shí)大家記錄一下現(xiàn)在的總行數(shù)(一會(huì)還原需要核對(duì)數(shù)據(jù)的) # 此時(shí)數(shù)據(jù)庫(kù)宕機(jī) #模擬宕機(jī)操作為: # 1.將數(shù)據(jù)目錄的下的二進(jìn)制日志,復(fù)制到 /tmp/backup,一會(huì)需要重演日志(此步非常重要,復(fù)制操作默認(rèn)大家會(huì)了) # 2.刪除數(shù)據(jù)目錄下的所有文件,此時(shí)數(shù)據(jù)庫(kù)就崩潰了(如果關(guān)閉數(shù)據(jù)庫(kù),是關(guān)不了,記得殺掉進(jìn)程,kill -9 ....) 2.數(shù)據(jù)庫(kù)宕機(jī)后執(zhí)行恢復(fù)操作 # 全備應(yīng)用日志 [root@client103 ~]# innobackupex --apply-log /tmp/backup/2014-02-27_13-24-51/ # 增備應(yīng)用日志 [root@client103 ~]# innobackupex --apply-log /tmp/backup/2014-02-27_13-24-51/ --incremental-dir=/tmp/backup/2014-02-27_13-32-44/ # 應(yīng)用完日志,利用全備恢復(fù)數(shù)據(jù) [root@client103 ~]# innobackupex --copy-back /tmp/backup/2014-02-27_13-24-51/ # 修改數(shù)據(jù)目錄權(quán)限為mysql:mysql [root@client103 ~]# chown mysq:mysql /var/lib/mysql -R # 啟動(dòng)數(shù)據(jù)庫(kù) [root@client103 ~]# /etc/init.d/mysql start # 登陸數(shù)據(jù)庫(kù),查看數(shù)據(jù)行數(shù),發(fā)現(xiàn)數(shù)值與崩潰前是不一致的,所以需要利用日志恢復(fù) [root@client103 ~]# mysql -uroot -pkongzhong mysql> use test; mysql> select count(*) from a; # 查看最后一次增備完成時(shí)的日志文件名和pos號(hào)(備份時(shí)自動(dòng)記錄的) [root@client103 ~]# cat /tmp/backup/2014-02-27_13-32-44/xtrabackup_binlog_info mysql-103-bin.000005 3694 # 所以,我們使用二進(jìn)制執(zhí)行恢復(fù)時(shí),起始點(diǎn)為3694 # 利用日志恢復(fù) [root@client103 ~]# mysqlbinlog --start-pos=3694 /tmp/backup/mysql-103-bin.000005 |mysql -uroot -pkongzhong # 此時(shí)在登陸數(shù)據(jù)庫(kù)查看數(shù)據(jù)是否相符,請(qǐng)自行測(cè)試 mysql> use test; mysql> select count(*) from a;
以上就是本文的全部?jī)?nèi)容,希望大家可以喜歡。
- 定時(shí)自動(dòng)備份IIS的WWW日志的vbs腳本
- mssql自動(dòng)備份及自動(dòng)清除日志文件服務(wù)器設(shè)置
- sqlserver 數(shù)據(jù)庫(kù)日志備份和恢復(fù)步驟
- SQL Server2008 數(shù)據(jù)庫(kù)誤刪除數(shù)據(jù)的恢復(fù)方法分享
- SQL server 2008 數(shù)據(jù)安全(備份和恢復(fù)數(shù)據(jù)庫(kù))
- SQL Server誤區(qū)30日談 第20天 破壞日志備份鏈之后,需要一個(gè)完整備份來(lái)重新開始日志鏈
- Shell腳本定時(shí)備份清除運(yùn)行系統(tǒng)日志的代碼
- win平臺(tái)oracle rman備份和刪除dg備庫(kù)歸檔日志腳本
- SQL Server 2008數(shù)據(jù)庫(kù)誤刪數(shù)據(jù)如何進(jìn)行數(shù)據(jù)恢復(fù)
- SQL Server 2008及更高版本數(shù)據(jù)庫(kù)恢復(fù)方法之日志尾部備份
相關(guān)文章
mysql觸發(fā)器實(shí)現(xiàn)oracle物化視圖示例代碼
mysql觸發(fā)器實(shí)現(xiàn)oracle物化視圖即不是基于基表的虛表,而是根據(jù)表實(shí)際存在的實(shí)表,需要的朋友可以參考下2014-02-02MySQL里的found_row()與row_count()的解釋及用法
MySQL中有兩個(gè)函數(shù)來(lái)計(jì)算上一條語(yǔ)句影響了多少行,不同于SqlServer/Oracle,不要因?yàn)榇朔矫娴牟町惗鸸δ軉栴}2013-02-02MySQL錯(cuò)誤日志與通用查詢?nèi)罩緢D文詳析
精通MySQL日志管理,這對(duì)處理故障與優(yōu)化太關(guān)鍵了,下面這篇文章主要給大家介紹了關(guān)于MySQL錯(cuò)誤日志與通用查詢?nèi)罩镜南嚓P(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02mysql 的indexof函數(shù)用法說(shuō)明
這篇文章主要介紹了mysql 的indexof函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-12-12MySQL查詢中LIMIT的大offset導(dǎo)致性能低下淺析
這篇文章主要給大家介紹了關(guān)于MySQL查詢中LIMIT的大offset導(dǎo)致性能低下的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的步驟
因?yàn)橐粋€(gè)項(xiàng)目交接需要需要將mysql物理備份文件還原至MySQL5.7,并且將mysql5.7升級(jí)到MySQL8.0,下面這篇文章主要給大家介紹了關(guān)于MySQL5.7升級(jí)MySQL8.0的完整卸載與安裝及連接Navicat的相關(guān)資料,需要的朋友可以參考下2023-03-03MySql允許遠(yuǎn)程連接如何實(shí)現(xiàn)該功能
這篇文章主要介紹了 MySql允許遠(yuǎn)程連接如何實(shí)現(xiàn)該功能的相關(guān)資料,需要的朋友可以參考下2017-02-02