MySQL中如何開啟二進(jìn)制日志(Binlog)
在 MySQL 中開啟二進(jìn)制日志(Binlog)可以幫助記錄數(shù)據(jù)庫的變更信息,這在數(shù)據(jù)恢復(fù)、主從復(fù)制等場景中非常有用。
下面不同 MySQL 版本下開啟 Binlog 的方法:
windows系統(tǒng)
手動(dòng)停止mysql,修改完配置再重新啟動(dòng)
1. 停止 MySQL 服務(wù)
在修改配置文件之前,需要先停止 MySQL 服務(wù),以避免在修改過程中出現(xiàn)問題。
你可以通過以下兩種常見方式停止服務(wù):
使用服務(wù)管理器
- 按下
Win + R組合鍵,輸入services.msc并回車,打開 “服務(wù)” 窗口。 - 在服務(wù)列表中找到
MySQL服務(wù)(具體名稱可能因安裝時(shí)的配置有所不同),右鍵點(diǎn)擊該服務(wù),選擇 “停止”。
使用命令行
以管理員身份打開命令提示符,執(zhí)行以下命令:
net stop mysql
2. 找到并打開 my.ini 文件
my.ini 是 MySQL 的配置文件,其位置通常取決于 MySQL 的安裝路徑。
常見的位置如下:
- 默認(rèn)安裝路徑:
C:\ProgramData\MySQL\MySQL Server X.X(X.X為具體的 MySQL 版本號(hào))。 - 自定義安裝路徑:如果你在安裝 MySQL 時(shí)選擇了自定義路徑,那么
my.ini文件會(huì)位于你指定的安裝目錄下。
找到 my.ini 文件后,使用文本編輯器(如記事本、Notepad++ 等)打開它。
3. 編輯 my.ini 文件
在 my.ini 文件中找到 [mysqld] 部分,如果沒有則手動(dòng)添加。
在 [mysqld] 部分下添加或修改以下配置項(xiàng):
[mysqld] # 開啟二進(jìn)制日志 # 默認(rèn)是在安裝目錄的data文件里面 log-bin = C:/mysql/logs/mysql-bin.log # 設(shè)置服務(wù)器 ID,必須為正整數(shù),在主從復(fù)制場景中,每個(gè)服務(wù)器的 ID 要唯一 server-id = 1 # 二進(jìn)制日志格式,可選值有 STATEMENT、ROW、MIXED binlog_format = ROW
配置項(xiàng)說明:
log-bin:指定二進(jìn)制日志文件的路徑和名稱。注意在 Windows 系統(tǒng)中,路徑分隔符要使用/而不是\,或者使用雙反斜杠\\。你可以根據(jù)實(shí)際情況修改路徑,例如C:/mysql/logs/mysql-bin.log,確保該目錄存在且 MySQL 服務(wù)有讀寫權(quán)限。server-id:每個(gè) MySQL 服務(wù)器必須有一個(gè)唯一的server-id,用于標(biāo)識(shí)不同的服務(wù)器,在主從復(fù)制中非常重要,這里設(shè)置為1。binlog_format:指定二進(jìn)制日志的格式。STATEMENT:基于 SQL 語句的日志記錄,記錄執(zhí)行的 SQL 語句。ROW:基于行的日志記錄,記錄每一行數(shù)據(jù)的變更情況,這種格式更詳細(xì),能避免一些潛在的復(fù)制問題。MIXED:混合模式,根據(jù)不同的 SQL 語句自動(dòng)選擇合適的日志記錄方式。
補(bǔ)充:如果在 Windows 系統(tǒng)中找不到 my.ini 文件
創(chuàng)建 my.ini 文件:
若系統(tǒng)中沒有 my.ini 文件,你需要手動(dòng)創(chuàng)建。一般情況下,該文件會(huì)存于 MySQL 的安裝目錄或者 C:\ProgramData\MySQL\MySQL Server X.X(X.X 代表具體的 MySQL 版本號(hào))路徑下。
- 打開文件資源管理器,定位到相應(yīng)目錄。
- 在該目錄下右鍵單擊空白處,選擇 “新建” -> “文本文檔”。
- 將新建的文本文檔重命名為
my.ini。
4. 創(chuàng)建日志文件目錄(如果需要)
如果你指定的日志文件目錄不存在,需要手動(dòng)創(chuàng)建該目錄。例如,對(duì)于 C:/mysql/logs 目錄,你可以通過以下步驟創(chuàng)建:
- 打開 “此電腦”,找到
C:盤。 - 在
C:盤根目錄下,右鍵點(diǎn)擊空白處,選擇 “新建” -> “文件夾”,將文件夾命名為mysql。 - 進(jìn)入
mysql文件夾,重復(fù)上述操作,創(chuàng)建名為logs的文件夾。
5. 啟動(dòng) MySQL 服務(wù)
完成 my.ini 文件的修改后,需要重新啟動(dòng) MySQL 服務(wù),讓配置生效。
同樣可以通過以下兩種方式啟動(dòng)服務(wù):
使用服務(wù)管理器:
- 打開 “服務(wù)” 窗口(按下
Win + R組合鍵,輸入services.msc并回車)。 - 在服務(wù)列表中找到
MySQL服務(wù),右鍵點(diǎn)擊該服務(wù),選擇 “啟動(dòng)”。
使用命令行:
以管理員身份打開命令提示符,執(zhí)行以下命令:
net start mysql
6. 驗(yàn)證 Binlog 是否開啟
可以通過以下 SQL 語句驗(yàn)證 Binlog 是否已經(jīng)成功開啟:
SHOW VARIABLES LIKE 'log_bin';
在 MySQL 命令行客戶端(如 MySQL Command Line Client 或 MySQL Workbench)中執(zhí)行上述語句,如果結(jié)果中的 Value 為 ON,則表示 Binlog 已經(jīng)開啟。
你還可以查看當(dāng)前使用的二進(jìn)制日志文件:
SHOW MASTER STATUS;
通過以上步驟,你就可以在 Windows 系統(tǒng)中成功開啟 MySQL 的 Binlog 功能。
ps:可以手動(dòng)啟停MySQL

Linux 系統(tǒng)
1. 停止 MySQL 服務(wù)
在修改配置文件之前,需要先停止 MySQL 服務(wù)。
以 Linux 系統(tǒng)為例,使用以下命令停止服務(wù):
sudo systemctl stop mysql
在 Windows 系統(tǒng)中,可以通過服務(wù)管理器停止 MySQL 服務(wù)。
2. 編輯 MySQL 配置文件
通常 MySQL 的配置文件為 my.cnf(Linux)或 my.ini(Windows)。
你可以使用以下命令打開該文件:
sudo vim /etc/mysql/my.cnf
在配置文件中找到 [mysqld] 部分,如果沒有則添加,然后在該部分下添加或修改以下配置項(xiàng):
[mysqld] # 開啟二進(jìn)制日志 log_bin = /var/log/mysql/mysql-bin.log # 設(shè)置服務(wù)器 ID,必須為正整數(shù),在主從復(fù)制場景中,每個(gè)服務(wù)器的 ID 要唯一 server-id = 1 # 二進(jìn)制日志格式,可選值有 STATEMENT、ROW、MIXED binlog_format = ROW
log_bin:指定二進(jìn)制日志文件的路徑和名稱,這里設(shè)置為/var/log/mysql/mysql-bin.log,你可以根據(jù)實(shí)際情況修改。server-id:每個(gè) MySQL 服務(wù)器必須有一個(gè)唯一的server-id,用于標(biāo)識(shí)不同的服務(wù)器,在主從復(fù)制中非常重要。binlog_format:指定二進(jìn)制日志的格式。STATEMENT:基于 SQL 語句的日志記錄,記錄執(zhí)行的 SQL 語句。ROW:基于行的日志記錄,記錄每一行數(shù)據(jù)的變更情況。MIXED:混合模式,根據(jù)不同的 SQL 語句自動(dòng)選擇合適的日志記錄方式。
3. 創(chuàng)建日志文件目錄并設(shè)置權(quán)限
如果指定的日志文件目錄不存在,需要?jiǎng)?chuàng)建該目錄,并設(shè)置合適的權(quán)限:
sudo mkdir -p /var/log/mysql sudo chown -R mysql:mysql /var/log/mysql
4. 啟動(dòng) MySQL 服務(wù)
完成配置文件的修改后,啟動(dòng) MySQL 服務(wù):
sudo systemctl start mysql
5. 驗(yàn)證 Binlog 是否開啟
可以通過以下 SQL 語句驗(yàn)證 Binlog 是否已經(jīng)成功開啟:
SHOW VARIABLES LIKE 'log_bin';
如果結(jié)果中的 Value 為 ON,則表示 Binlog 已經(jīng)開啟。
你還可以查看當(dāng)前使用的二進(jìn)制日志文件:
SHOW MASTER STATUS;
Docker 容器中的 MySQL
如果你使用 Docker 部署 MySQL,可以在啟動(dòng)容器時(shí)通過環(huán)境變量或掛載配置文件的方式開啟 Binlog。
使用環(huán)境變量
docker run -d \ --name mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ -e MYSQL_LOG_BIN_ENABLED=1 \ -e MYSQL_LOG_BIN=/var/lib/mysql/mysql-bin.log \ -e MYSQL_SERVER_ID=1 \ -e MYSQL_BINLOG_FORMAT=ROW \ -p 3306:3306 \ mysql:8.0
掛載配置文件
創(chuàng)建一個(gè)包含 Binlog 配置的 my.cnf 文件:
[mysqld] log_bin = /var/lib/mysql/mysql-bin.log server-id = 1 binlog_format = ROW
然后使用以下命令啟動(dòng)容器并掛載配置文件:
docker run -d \ --name mysql \ -e MYSQL_ROOT_PASSWORD=your_password \ -v /path/to/your/my.cnf:/etc/mysql/my.cnf \ -p 3306:3306 \ mysql:8.0
其中 /path/to/your/my.cnf 是你本地 my.cnf 文件的路徑。
通過以上步驟,你就可以在 MySQL 中成功開啟 Binlog 功能。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL的查詢緩存機(jī)制基本學(xué)習(xí)教程
這篇文章主要介紹了MySQL的查詢緩存機(jī)制基本學(xué)習(xí)教程,默認(rèn)針對(duì)InnoDB存儲(chǔ)引擎下來將,需要的朋友可以參考下2015-11-11
JDK1.7下測試ConnectorJ連接MySQL8.0的方法
MySQL?Connector/J是一個(gè)JDBC?4型驅(qū)動(dòng)程序。Type?4標(biāo)志意味著驅(qū)動(dòng)程序是MySQL協(xié)議的純Java實(shí)現(xiàn),不依賴于MySQL客戶端庫,這篇文章主要介紹了JDK1.7下測試ConnectorJ連接MySQL8.0,需要的朋友可以參考下2022-10-10
MySQL FIND_IN_SET 函數(shù)實(shí)戰(zhàn)實(shí)例
FIND_IN_SET是MySQL處理分隔字符串的函數(shù),用于判斷字符串是否存在于列表中,返回位置或0,適用于標(biāo)簽、分類等多值場景,但無法使用索引,性能較差,建議結(jié)合替代方案或優(yōu)化設(shè)計(jì),注意大小寫敏感和空值處理問題,對(duì)mysql find_in_set函數(shù)感興趣的朋友一起看看吧2025-07-07
mysql中如何判斷當(dāng)前是字符 mysql判斷字段中有無漢字
這篇文章主要介紹了mysql如何判斷字段中有無漢字的方法,使用length與char_length兩個(gè)函數(shù)就可以完成2014-01-01
mysql8.0.11安裝配置方法圖文教程 MySQL8.0新密碼認(rèn)證方式
這篇文章主要為大家詳細(xì)介紹了mysql8.0.11安裝配置方法圖文教程,以及MySQL8.0新密碼認(rèn)證方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
Mysql數(shù)據(jù)庫定時(shí)備份腳本分享
這篇文章主要分享了Mysql數(shù)據(jù)庫的定時(shí)備份腳本,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下2020-09-09
MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼
這篇文章主要介紹了MySQL數(shù)據(jù)庫備份恢復(fù)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

