Mysql 5.7開啟binlog日志
前言
binlog是MySQL的二進制日志,并且是MySQL中最重要的日志,binlog記錄了對MySQL資料庫執行更改的所有操作,包括對資料庫表結構的變更,對資料的變更,例如CREATE、ALTER TABLE、INSERT、UPDATE、DELETE…,但是不會記錄查詢陳述句select,需要注意的是,如果是update操作,即使是沒有資料更新,也會記錄在binlog日志中,binlog日志是以事件形式記錄,并且還包含陳述句所執行的消耗時間,
查看binlog是否開啟
show variables like '%log_bin%';

開啟binlog
修改mysql組態檔
[mysqld]
log-bin=mysql-bin
server_id=1

重新啟動mysql
windows系統
net stop mysql # 停止mysql服務
net start mysql # 啟動mysql服務
Linux系統
service mysql stop # 停止mysql服務
service mysql start # 啟動mysql服務
service mysql restart # 重啟mysql服務
擴展
應用
-
主從復制
master端開啟binlog,master把二進制日志傳遞給slaves來達到master-slave資料保持一致,
-
資料恢復
可以通過mysqlbinlog工具決議binlog來恢復資料,
binlog日志常用命令
-
查看所有的binlog日志串列
show master logs; -
查看master狀態,即最后一個binlog日志的編號名稱,及其最后一個操作時間pos結束點值
show master status; -
flush重繪binlog日志,此刻之后會產生一個新編號的binlog日志檔案
flush logs;
bin-log日志存放地址
binlog存放在/var/lib/mysql里面的,如果是docker,則在相應的映射目錄

配置存放位置、過期時間
在MySQL組態檔my.cnf或者my.ini中[mysqld]標簽內修改
# 配置定時清理
expire_logs_days = 5
# 配置修改后的日志路徑
log-bin=/home/logs/mysql-bin

配置每個日志檔案的大小
在MySQL組態檔my.cnf或者my.ini中[mysqld]標簽內修改
# binlog每個日志檔案大小
max_binlog_size = 100m
binlog格式
# binlog日志格式,MySQL默認采用的是STATEMENT,建議使用MIXED
binlog_format = MIXED
-
STATEMENT模式(SBR)
基于SQL陳述句的復制(statement-based replication),每一潭訓修改資料的sql陳述句都會記錄到binlog中,
優點:
- 不需要記錄每一條sql陳述句和每一行的資料變化,減少了binlog日志量,節約IO,提高性能
缺點:
- 某些情況會導致master-slave中的資料不一致,例如sleep(),last_insert_id()等
-
ROW模式(RBR)
基于行的復制(row-based replication),不記錄每條sql陳述句的背景關系資訊,僅記錄哪條資料被修改了,修改成什么樣,
優點:
- 任何情況都可以復制,并且不會出現特定情況下存盤程序、function等呼叫或者觸發無法被正確復制的問題
缺點:
- binlog日志檔案會非常大
- master上執行update陳述句時,所有變化都會寫到binlog里面,SBR只會寫一次,所以會導致頻繁發生binlog的并發寫問題
-
MIXED模式
上面兩種模式的混合使用,一般的復制使用STATEMENT模式保存binlog,對于STATEMENT模式無法復制的操作使用ROW模式保存binlog,MySQL會根據執行的SQL陳述句選擇日志保存方式,
如有侵權請立即與我們聯系,我們將及時處理,聯系郵箱:[email protected],
原文鏈接: https://monkey.blog.xpyvip.top/archives/Mysql57開啟binlog日志
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/506163.html
標籤:MySQL
上一篇:MySQL用戶和權限管理
