最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?打開(kāi)binlog日志的方法及注意事項(xiàng)

 更新時(shí)間:2025年06月18日 14:59:20   作者:不愿放下技術(shù)的小趙  
本文給大家介紹MySQL?打開(kāi)binlog日志的方法及注意事項(xiàng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

知識(shí)回顧:

binlog 是一個(gè)二進(jìn)制格式的文件,記錄了對(duì) MySQL 數(shù)據(jù)庫(kù)執(zhí)行更改的所有 寫(xiě)操作,例如更改數(shù)據(jù)庫(kù)表和更改內(nèi)容的 SQL 語(yǔ)句都會(huì)記錄到 binlog 里,但是不會(huì)記錄 SELECT 和 SHOW 這類(lèi)操作。

一、默認(rèn)狀態(tài)

在MySQL 5.7及以上版本中,binlog默認(rèn)是關(guān)閉的,而在MySQL 8.0版本中,binlog默認(rèn)是開(kāi)啟的。具體表現(xiàn)如下:

MySQL 5.7及以下版本:

  • 默認(rèn)關(guān)閉:安裝后需要手動(dòng)配置開(kāi)啟
  • 原因:早期版本認(rèn)為不是所有環(huán)境都需要二進(jìn)制日志功能

MySQL 8.0版本:

  • 默認(rèn)開(kāi)啟:安裝后自動(dòng)啟用binlog
  • 原因
    • 增強(qiáng)的數(shù)據(jù)安全考慮
    • 為Group Replication等新功能提供基礎(chǔ)支持
    • 符合現(xiàn)代數(shù)據(jù)庫(kù)的運(yùn)維需求

補(bǔ)充:為什么版本間存在差異?

MySQL 8.0 改為默認(rèn)開(kāi)啟 binlog 主要基于以下考慮:

數(shù)據(jù)安全:即使沒(méi)有配置主從復(fù)制,binlog也能用于時(shí)間點(diǎn)恢復(fù)。

新功能依賴(lài):Group Replication、InnoDB Cluster 等都需要 binlog。

現(xiàn)代硬件性能:現(xiàn)代服務(wù)器通常有能力承擔(dān) binlog 的額外開(kāi)銷(xiāo)。

二、如何檢查 binlog 狀態(tài)

您可以通過(guò)以下命令查看當(dāng)前 binlog 是否啟用:

SHOW VARIABLES LIKE '%log_bin%';

三、如何開(kāi)啟 binlog

3.1 臨時(shí)開(kāi)啟(重啟后失效)

如果只是臨時(shí)測(cè)試,可以通過(guò) MySQL 命令行開(kāi)啟(無(wú)需重啟服務(wù)):

SET GLOBAL log_bin = ON;
SET GLOBAL binlog_format = 'ROW';  -- 推薦使用ROW格式
SET GLOBAL sync_binlog = 1;       -- 每次事務(wù)提交都刷盤(pán)

3.2 永久開(kāi)啟(需修改配置文件)

1)找到 MySQL 配置文件

  • Linux:/etc/my.cnf 或 /etc/msql/my.cnf
  • Windows:my.ini(通常在 MySQL 安裝目錄)

2)添加以下配置(在 [mysqld] 段)

[mysqld]
# 基礎(chǔ)配置
# 啟用binlog并設(shè)置文件名前綴
# 注意1:確保目錄存在,否則會(huì)啟動(dòng)失敗
# 注意2:指定目錄需要用反斜杠/或雙反斜杠\\
log_bin = D:/java/mysql-5.7.33-winx64/binlog/mysql-bin
# 服務(wù)器唯一標(biāo)識(shí)(主從復(fù)制必需),默認(rèn)值0
server_id=1
# 推薦使用ROW格式
binlog_format = ROW
# 自動(dòng)清理7天前的日志
expire_logs_days = 7
# 增強(qiáng)持久性配置
# 每次事務(wù)提交都刷盤(pán)(最安全但性能略有影響)
sync_binlog = 1
# 記錄完整的行數(shù)據(jù)
binlog_row_image = FULL
  • log_bin = mysql-bin

    • 作用:?jiǎn)⒂枚M(jìn)制日志(binlog)并設(shè)置文件名前綴
    • 默認(rèn)值
      • MySQL 5.7及以下:OFF(默認(rèn)關(guān)閉)
      • MySQL 8.0+:ON(默認(rèn)開(kāi)啟,前綴為 binlog
    • 說(shuō)明
      • 啟用后生成文件如 mysql-bin.000001、mysql-bin.000002
      • 生產(chǎn)環(huán)境必須開(kāi)啟(主從復(fù)制/數(shù)據(jù)恢復(fù)依賴(lài))
  • server_id=1

    • 作用:服務(wù)器唯一標(biāo)識(shí)(主從復(fù)制必需)
    • 默認(rèn)值0(未設(shè)置,主從復(fù)制會(huì)失敗)
    • 說(shuō)明
      • 主從環(huán)境中每個(gè)實(shí)例必須配置唯一ID
      • 單機(jī)可設(shè)為1,集群中需分配不同值(如1,2,3…)
  • binlog_format = ROW

    • 作用:指定binlog記錄格式
    • 默認(rèn)值
      • MySQL 5.7+:ROW
      • 更早版本:STATEMENT
    • 可選值
      • ROW:記錄行數(shù)據(jù)變更(推薦,最安全)
      • STATEMENT:記錄原始SQL(有主從不一致風(fēng)險(xiǎn))
      • MIXED:混合模式
  • expire_logs_days = 7

    • 作用:自動(dòng)清理N天前的binlog
    • 默認(rèn)值0(不自動(dòng)清理)
    • 說(shuō)明
      • 與 binlog_expire_logs_seconds 沖突(8.0+優(yōu)先用后者)
      • 生產(chǎn)環(huán)境建議設(shè)置(避免磁盤(pán)占滿)
  • sync_binlog = 1

    • 作用:控制binlog刷盤(pán)頻率

    • 默認(rèn)值0(由系統(tǒng)決定刷盤(pán)時(shí)機(jī))

    • 可選值

      • 0:依賴(lài)系統(tǒng)緩存,性能高但可能丟失事務(wù)
      • 1:每次事務(wù)提交都刷盤(pán)(最安全,性能略低)
      • N:每N次事務(wù)提交刷盤(pán)(平衡安全性與性能)
  • binlog_row_image = FULL

    • 作用:ROW格式下記錄的行數(shù)據(jù)內(nèi)容

    • 默認(rèn)值FULL(MySQL 5.6+)

    • 可選值

      • FULL:記錄修改前后的完整行數(shù)據(jù)(推薦)
      • MINIMAL:僅記錄被修改的列+主鍵
      • NOBLOB:排除未修改的BLOB/TEXT列

3)重啟 MySQL 服務(wù)

# Linux系統(tǒng)
sudo systemctl restart mysqld
# Windows
通過(guò)服務(wù)管理器重啟MySQL服務(wù)

3.3 驗(yàn)證是否開(kāi)啟成功

  • 方式一:重啟后查看指定目錄下是否存在binlog

  • 方式二:通過(guò)命令查看
-- 檢查binlog狀態(tài)
SHOW VARIABLES LIKE '%log_bin%';
-- 查看當(dāng)前binlog文件
SHOW BINARY LOGS;
-- 查看binlog格式
SHOW VARIABLES LIKE 'binlog_format';

3.4 查看 binlog 內(nèi)容

由于 binlog 是一個(gè)二進(jìn)制文件,直接查看是無(wú)法閱讀的:

我們可以使用 mysqlbinlog 工具(MySQL自帶)來(lái)進(jìn)行解析之后查看:

mysqlbinlog mysql-bin.000001 > binlog-0000001.sql

查看解析之后的內(nèi)容如下:

四、高級(jí)配置建議

1)為 binlog 單獨(dú)分配目錄(避免占滿系統(tǒng)盤(pán))

log_bin = /var/lib/mysql-binlogs/mysql-bin

2)調(diào)整 binlog 大?。J(rèn)為1G)

max_binlog_size = 100M # 根據(jù)業(yè)務(wù)調(diào)整

3)啟用 binlog 加密(MySQL 8.0+)

binlog_encryption = ON

五、注意事項(xiàng)

  • 權(quán)限要求:操作需要 MySQL 管理員權(quán)限。
  • 磁盤(pán)空間:開(kāi)啟后會(huì)增加磁盤(pán)寫(xiě)入量,確保有足夠空間。
  • 性能影響sync_binlog=1 會(huì)降低寫(xiě)入性能,但保證數(shù)據(jù)安全。
  • 版本差異
    • MySQL 5.7需手動(dòng)開(kāi)啟
    • MySQL 8.0默認(rèn)已開(kāi)啟,只需確認(rèn)配置

六、開(kāi)啟后的日常維護(hù)

-- 定期清理舊binlog(也可設(shè)置expire_logs_days自動(dòng)清理)
PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';
-- 查看binlog占用空間
SHOW BINARY LOG STATUS;

開(kāi)啟 binlog 后,將獲得:

  • 數(shù)據(jù)恢復(fù)能力
  • 主從復(fù)制基礎(chǔ)
  • 操作審計(jì)能力

建議所有生產(chǎn)環(huán)境都啟用 binlog 功能。

到此這篇關(guān)于MySQL 如何打開(kāi)binlog日志的文章就介紹到這了,更多相關(guān)mysql binlog日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖

    MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖

    這篇文章主要介紹了MySQL的表級(jí)鎖,行級(jí)鎖,排它鎖和共享鎖,事務(wù)隔離級(jí)別越高,為避免沖突所花費(fèi)的性能也就越多,即效率低,更多相關(guān)內(nèi)容需要的小伙伴可以參考與一下
    2022-07-07
  • 達(dá)夢(mèng)數(shù)據(jù)庫(kù)兼容mysql?GROUP?BY查詢(xún)的設(shè)置方式

    達(dá)夢(mèng)數(shù)據(jù)庫(kù)兼容mysql?GROUP?BY查詢(xún)的設(shè)置方式

    作為一名數(shù)據(jù)庫(kù)管理員或開(kāi)發(fā)者,當(dāng)項(xiàng)目需要從MySQL遷移到達(dá)夢(mèng)數(shù)據(jù)庫(kù)時(shí),最關(guān)心的莫過(guò)于兼容性問(wèn)題,這篇文章主要介紹了達(dá)夢(mèng)數(shù)據(jù)庫(kù)兼容mysql?GROUP?BY查詢(xún)的設(shè)置方式,需要的朋友可以參考下
    2025-11-11
  • MySql總彈出mySqlInstallerConsole窗口的解決方法

    MySql總彈出mySqlInstallerConsole窗口的解決方法

    這篇文章主要介紹了MySql總彈出mySqlInstallerConsole窗口的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 一文詳解MySQL?Join使用原理

    一文詳解MySQL?Join使用原理

    JOIN是一種非常常見(jiàn)的操作,用于將兩個(gè)或多個(gè)表中的數(shù)據(jù)合并到一個(gè)結(jié)果集中。MySQL支持多種JOIN類(lèi)型,本文通過(guò)代碼示例詳細(xì)介紹了Join的使用優(yōu)化,有需要的小伙伴可以參考閱讀
    2023-04-04
  • Mysql默認(rèn)設(shè)置的危險(xiǎn)性分析

    Mysql默認(rèn)設(shè)置的危險(xiǎn)性分析

    一.mysql默認(rèn)的授權(quán)表二.缺乏日志能力 三.my.ini文件泄露口令 四.服務(wù)默認(rèn)被綁定全部的網(wǎng)絡(luò)接口上 五.默認(rèn)安裝路徑下的mysql目錄權(quán)限
    2008-09-09
  • MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    MySQL中的引號(hào)和反引號(hào)的區(qū)別與用法詳解

    這個(gè)問(wèn)題是我在學(xué)習(xí)數(shù)據(jù)庫(kù)的時(shí)候遇到的一個(gè)問(wèn)題,我當(dāng)時(shí)并不能理解下圖中的一些情況,后來(lái)我也請(qǐng)教了一位大佬給我解答,最后在大佬和度娘的幫助下我大概理解了這個(gè)反引號(hào)的東西
    2021-10-10
  • MySQL數(shù)據(jù)目錄遷移的完整過(guò)程

    MySQL數(shù)據(jù)目錄遷移的完整過(guò)程

    文章詳細(xì)介紹了將MySQL數(shù)據(jù)目錄遷移到新硬盤(pán)的整個(gè)過(guò)程,包括新硬盤(pán)掛載、創(chuàng)建新的數(shù)據(jù)目錄、遷移數(shù)據(jù)(推薦使用兩遍rsync方案)、修改MySQL配置文件和重啟驗(yàn)證等步驟,需要的朋友可以參考下
    2025-12-12
  • MySQL中substr函數(shù)使用方法實(shí)例詳解

    MySQL中substr函數(shù)使用方法實(shí)例詳解

    MySQL的SUBSTR()函數(shù)可以用于從指定字符串的指定位置開(kāi)始提取指定長(zhǎng)度的字符,下面這篇文章主要給大家介紹了關(guān)于MySQL中substr函數(shù)使用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 一文學(xué)習(xí)MySQL?意向共享鎖、意向排他鎖、死鎖

    一文學(xué)習(xí)MySQL?意向共享鎖、意向排他鎖、死鎖

    這篇文章主要介紹了MySQL?意向共享鎖、意向排他鎖、死鎖,包括InnoDB表級(jí)鎖,意向共享鎖和意向排他鎖及操作方法,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • MySQL內(nèi)部臨時(shí)表的具體使用

    MySQL內(nèi)部臨時(shí)表的具體使用

    MySQL臨時(shí)表在很多場(chǎng)景中都會(huì)用到,比如用戶(hù)自己創(chuàng)建的臨時(shí)表用于保存臨時(shí)數(shù)據(jù),以及MySQL內(nèi)部在執(zhí)行復(fù)雜SQL時(shí),需要借助臨時(shí)表進(jìn)行分組、排序、去重等操作,本文就來(lái)詳細(xì)的介紹一下MySQL內(nèi)部臨時(shí)表
    2021-10-10

最新評(píng)論

精河县| 延安市| 库伦旗| 长岛县| 光山县| 沛县| 安庆市| 淳安县| 青海省| 两当县| 张家界市| 合阳县| 蓬安县| 沭阳县| 庆城县| 丰顺县| 宁晋县| 桑植县| 济阳县| 天等县| 安宁市| 淳化县| 县级市| 泰安市| 图木舒克市| 股票| 静乐县| 稷山县| 东乡族自治县| 崇明县| 大英县| 洛阳市| 天气| 玉田县| 房产| 阿坝| 金平| 蓬莱市| 沙湾县| 金门县| 维西|