国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql binlog二進(jìn)制日志詳解

2024-07-24 12:39:17
字體:
供稿:網(wǎng)友

提供一篇開發(fā)中用到的mysql binlog二進(jìn)制日志詳解,有需要的朋友參考一下.

定義:二進(jìn)制日志包含了所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù),例如,沒有匹配任何行的一個DELETE,的所有語句.

作用:

1。二進(jìn)制日志的主要目的是在恢復(fù)使能夠最大可能地更新數(shù)據(jù)庫,因?yàn)槎M(jìn)制日志包含備份后進(jìn)行的所有更新。

2。二進(jìn)制日志還用于在主復(fù)制服務(wù)器上記錄所有將發(fā)送給從服務(wù)器的語句。

不良影響:運(yùn)行服務(wù)器時若啟用二進(jìn)制日志則性能大約慢1%。

如何啟動:

通過 –log-bin=file選項(xiàng)可以啟用.

更改my.ini文件,日志位置:

>>如果沒有指定文件名,則Mysql使用hostname-bin文件.

>>如果指定了相對路徑,則假定該路徑相對于數(shù)據(jù)目錄

>>Mysql在文件名后添加了數(shù)字索引.所以該文件最后的形式為filename.number

如果你在日志名中提供了擴(kuò)展名,例如,–log-bin=file_name.extension,則擴(kuò)展名被悄悄除掉并忽略.

更換策略:使用索引來循環(huán)文件,在以下條件將循環(huán)至下一個索引.

1。服務(wù)器重啟

2。服務(wù)器被更新

3。日志到達(dá)了最大日志長度 max_binlog_size

4。日志被刷新 mysql> flush logs;

工具介紹:

shell>>mysqlbinlog [option] binlogFile> newfile

如:D:mysqllog>mysqlbinlog binlog.000001 > 1.txt

一個例子:

log-bin=”D:/mysql/log/binlog” 那么,在該文件夾下就會有文件D:/mysql/log/binlog.000001等.

常見問題:

1.如何清除binlog

>>>使用下面的兩個命令

  1. PURGE {MASTER | BINARY} LOGS TO ‘log_name’ //log_name不會被清除 
  2. PURGE {MASTER | BINARY} LOGS BEFORE ‘date’ //date不會被清除 

實(shí)例如下:

  1. mysql> purge master logs to ‘binlog.000004′; 
  2. Query OK, 0 rows affected (0.01 sec) 
  3. --Vevb.com 
  4. mysql> purge master logs before ’2009-09-22 00:00:00′; 
  5. Query OK, 0 rows affected (0.05 sec) 

>>>或使用命令:RESET MASTER

刪除之前所有的binlog,并重新生成新的binlog,后綴從000001開始.

注:如果您有一個活性的從屬服務(wù)器,該服務(wù)器當(dāng)前正在讀取您正在試圖刪除的日志之一,則本語句不會起作用,而是會失敗,并伴隨一個錯誤.

不過,如果從屬服務(wù)器是休止的,并且您碰巧清理了其想要讀取的日志之一,則從屬服務(wù)器啟動后不能復(fù)制,當(dāng)從屬服務(wù)器正在復(fù)制時,本語句可以安全運(yùn)行,您不需要停止它們.

2.記錄到二進(jìn)制日志知的內(nèi)容配置

binlog-do-db=sales 只記錄sales庫

binlog-ignore-db=sales 除sales庫不記錄,其他都記錄,但是如果在操作數(shù)據(jù)庫之前,不使用use $dbname 那么所有的SQL都不會記錄,如果使用了use $dbname,那么判斷規(guī)則取決于這里的$dbname,而不是SQL中操作的庫.

3.二進(jìn)制日志不準(zhǔn)確的處理

默認(rèn)情況下,并不是每次寫入時都將二進(jìn)制日志與硬盤同步。因此如果操作系統(tǒng)或機(jī)器(不僅僅是MySQL服務(wù)器)崩潰,有可能二進(jìn)制日志中最后的語句丟失。

要想防止這種情況,你可以使用sync_binlog全局變量(1是最安全的值,但也是最慢的),使二進(jìn)制日志在每N次二進(jìn)制日志寫入后與硬盤同步。

即使sync_binlog設(shè)置為1,出現(xiàn)崩潰時,也有可能表內(nèi)容和二進(jìn)制日志內(nèi)容之間存在不一致性。

如果崩潰恢復(fù)時MySQL服務(wù)器發(fā)現(xiàn)二進(jìn)制日志變短了(即至少缺少一個成功提交的InnoDB事務(wù)),如果sync_binlog =1并且硬盤/文件系統(tǒng)的確能根據(jù)需要進(jìn)行同步(有些不需要)則不會發(fā)生,則輸出錯誤消息 (“二進(jìn)制日志<名>比期望的要小”)。

在這種情況下,二進(jìn)制日志不準(zhǔn)確,復(fù)制應(yīng)從主服務(wù)器的數(shù)據(jù)快照開始.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 错那县| 澄江县| 中西区| 卓尼县| 上高县| 洮南市| 台前县| 八宿县| 和田县| 两当县| 龙山县| 油尖旺区| 赫章县| 通化县| 昌吉市| 昭通市| 汤原县| 酒泉市| 万安县| 油尖旺区| 莲花县| 彭州市| 于田县| 贵德县| 揭阳市| 洛南县| 平罗县| 沽源县| 辽阳县| 寿宁县| 大洼县| 开阳县| 英德市| 昌吉市| 乳山市| 旬阳县| 大方县| 鄢陵县| 柳河县| 临汾市| 广德县|