IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
通常情況下,數(shù)據(jù)恢復(fù)成功有兩個必要條件,首先是要有完整可用的數(shù)據(jù)庫備份,其次要有連續(xù)完整沒有缺失的二進制日志。如果兩個條件都滿足就可以恢復(fù)故障數(shù)據(jù);如果僅僅滿足第一個條件,只能做數(shù)據(jù)還原,對于上例來說,只能是數(shù)據(jù)庫中的數(shù)據(jù)還原到備份時刻凌晨2:00時的狀態(tài),將會丟失凌晨2:00到上午9:37期間的數(shù)據(jù);如果沒有備份,僅僅有一段日志仍然會造成數(shù)據(jù)庫數(shù)據(jù)的丟失,損失不可避免。因此,是否開啟二進制日志是能否做數(shù)據(jù)庫恢復(fù)的條件。
二進制日志(binlog)主要用途有兩個,其一是做數(shù)據(jù)恢復(fù),其二是進行數(shù)據(jù)庫的復(fù)制。MySQL數(shù)據(jù)庫默認(rèn)沒有開啟二進制日志,如果要開啟二進制日志需要在/etc/my.cnf中添加和配置server-id和log-bin選項,這個過程需要重啟mysqld服務(wù),此外還應(yīng)注意的是,開啟二進制日志會使數(shù)據(jù)庫額外損失一定的性能,大約2%左右。如果是寫操作頻繁的生產(chǎn)庫,應(yīng)該開啟,因為可以在出現(xiàn)數(shù)據(jù)損毀的極端情況時,通過二進制日志的恢復(fù)挽回丟數(shù)據(jù)的損失;但是如果不在乎部分?jǐn)?shù)據(jù)的丟失或者數(shù)據(jù)庫的數(shù)據(jù)以讀操作(select)為主,考慮性能損耗的因素,可以不開啟二進制日志。
開啟二進制日志步驟:
1. 編輯/etc/my.cnf
2. 在[mysqld]下添加:
a) server-id=非零值
b) log-bin=mysql-bin
3. 重啟mysqld服務(wù)
systemctl restart mysqld
其中,MySQL5.7版本要求server-id的值不能與其他存在復(fù)制關(guān)系的MySQL的server-id重復(fù),其取值范圍為1到2^32-1,不能為0否則二進制日志不能開啟,通常該值設(shè)置為ip地址的末位段,這樣確保網(wǎng)段內(nèi)的server-id無重復(fù)值。
log-bin變量對應(yīng)的mysql-bin為二進制日志的前綴名,默認(rèn)二進制日志保存在datadir變量對應(yīng)的數(shù)據(jù)文件路徑中,為了降低二進制日志文件與數(shù)據(jù)文件同時損壞的幾率,通常把二進制文件與數(shù)據(jù)文件分開存放,最好放在不同的磁盤中。例如:將二進制日志放在/binlogs中,這樣需要提前創(chuàng)建該目錄,并設(shè)置好相應(yīng)的屬主、屬組和權(quán)限,否則mysqld重啟會失敗。相關(guān)配置如下:
1. root# mkdir /binlogs
2. root# chown mysql:mysql /binlogs
3. root# chmod 750 /binlogs
4. 在/etc/my.cnf中的[mysqld]后面添加:
a) server-id=非零值
b) log-bin=/binlogs/mysql-bin
5. 重啟mysqld服務(wù)
systemctl restart mysqld
至此,二進制日志開啟成功,可以登入mysql后用show binary logs; 命令查看所有的二進制日志。默認(rèn)二進制日志的最大可為1G。其切換條件有三個:1. mysqld重啟時會切換;2.日志到達了1G會自動切換;3.鍵入flush logs; 命令會自動切換。在開啟了二進制日志的情況下,如果備份和日志齊全,當(dāng)數(shù)據(jù)庫數(shù)據(jù)出現(xiàn)損壞時,就可以對數(shù)據(jù)進行恢復(fù)了。
>>本文地址:http://liujunjsxg.cn/zhuanye/2019/48201.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?