MySql開啟binlog日誌
環境:win7,mysql-5.6.25-winx64
1、開啟binlog日誌
啟動時新增引數--log-bin,命令:
mysqld --log-bin
2、binlog日誌檢視
預設的在mysql安裝目錄的data子目錄下會出現一個***-bin.0000001的檔案。使用mysqlbinlog檢視。測試:
(1)mysql -u root
(2)use testdb;
(3)insert into user values(7,'ma7');
(4)另開命令視窗,輸入命令mysqlbinlog ../data/***-bin.000001,輸出結果:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @
DELIMITER /*!*/;
# at 4
#170329 9:38:10 server id 1 end_log_pos 120 CRC32 0x5f6548b1 Start: binlog v
4, server v 5.6.25-log created 170329 9:38:10 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
AhDbWA8BAAAAdAAAAHgAAAABAAQANS42LjI1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAACENtYEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAbFI
ZV8=
'/*!*/;
# at 120
#170329 9:41:38 server id 1 end_log_pos 197 CRC32 0x73209f2c Query thread_i
d=1 exec_time=0 error_code=0
SET TIMESTAMP=1490751698/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.uniq
ue_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
;
/*!\C gbk *//*!*/;
SET @@session.character_set_client=28,@@session.collation_connection=28,@@sessio
n.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 197
#170329 9:41:38 server id 1 end_log_pos 301 CRC32 0x17b63e3c Query thread_i
d=1 exec_time=0 error_code=0
use `dev`/*!*/;
SET TIMESTAMP=1490751698/*!*/;
insert into user values(7,'ma7')
/*!*/;
# at 301
#170329 9:41:38 server id 1 end_log_pos 332 CRC32 0x9e1db9f9 Xid = 33
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET [email protected]_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
可以看到該插入語句被記錄了下來。
參考:
FROM:http://www.linuxidc.com/Linux/2015-04/116300.htm
MySQL各種日誌介紹
目錄
1、日誌分類
2、各種日誌介紹
1、日誌分類
錯誤日誌
查詢日誌
慢查詢日誌
事務日誌
二進位制日誌
中繼日誌
2、各種日誌介紹
2.1、錯誤日誌
預設時錯誤日誌的存放位置在資料目錄中,名稱為“server_name.err”
錯誤日誌記錄的事件:
a)、伺服器啟動關閉過程中的資訊
b)、伺服器執行過程中的錯誤資訊
c)、事件偵錯程式執行一個事件時間生的資訊
d)、在從伺服器上啟動從伺服器程序時產生的資訊
檢視與日誌相關的變數:
mysql> SHOW GLOBAL VARIABLES LIKE '%log%';
與錯誤日誌相關的變數有兩個:
log_error=/PATH/TO/ERROR_LOG_FILENAME
例如:log_error = /mydata/data/hostname.err
定義錯誤日誌檔案。作用範圍為全域性或會話級別,可用於配置檔案,屬非動態變數。
log_warnings=#
設定是否將警告資訊記錄進錯誤日誌。預設設定為1,表示啟用;可以將其設定為0以禁用;而其值為大於1的數值時表示將新發起連線時產生的“失敗的連線”和“拒絕訪問”類的錯誤資訊也記錄進錯誤日誌。
2.2、查詢日誌
查詢日誌記錄查詢語句與啟動時間,建議不是在除錯環境下不要開啟查詢日誌,因為會不斷佔據你的磁碟空間,並會產生大量的IO。
與查詢日誌相關的變數:
log={YES|NO}
是否啟用記錄所有語句的日誌資訊於一般查詢日誌(general query log)中,預設通常為OFF。MySQL 5.6已經棄用此選項。
general_log={ON|OFF}
設定是否啟用查詢日誌,預設值為取決於在啟動mysqld時是否使用了--general_log選項。如若啟用此項,其輸出位置則由--log_output選項進行定義,如果log_output的值設定為NONE,即使啟用查詢日誌,其也不會記錄任何日誌資訊。作用範圍為全域性,可用於配置檔案,屬動態變數。
log_output={TABLE|FILE|NONE}
定義一般查詢日誌和慢查詢日誌的儲存方式,可以是TABLE、FILE、NONE,也可以是TABLE及FILE的組合(用逗號隔開),預設為TABLE。如果組合中出現了NONE,那麼其它設定都將失效,同時,無論是否啟用日誌功能,也不會記錄任何相關的日誌資訊。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
sql_log_off={ON|OFF}
用於控制是否禁止將一般查詢日誌類資訊記錄進查詢日誌檔案。預設為OFF,表示不禁止記錄功能。使用者可以在會話級別修改此變數的值,但其必須具有SUPER許可權。作用範圍為全域性和會話級別,屬動態變數。
general_log_file=FILE_NAME
查詢日誌的日誌檔名稱,預設為“hostname.log",預設在資料目錄。作用範圍為全域性,可用於配置檔案,屬動態變數。
2.3、慢查詢日誌
慢查詢日誌建議開啟
與慢查詢日誌相關的變數:
slow_query_log={ON|OFF}
設定是否啟用慢查詢日誌。0或OFF表示禁用,1或ON表示啟用。日誌資訊的輸出位置取決於log_output變數的定義,如果其值為NONE,則即便slow_query_log為ON,也不會記錄任何慢查詢資訊。作用範圍為全域性級別,可用於選項檔案,屬動態變數。
log_slow_queries={YES|NO}
是否記錄慢查詢日誌。慢查詢是指查詢的執行時間超出long_query_time引數所設定時長的事件。MySQL 5.6將此引數修改為了slow_query_log。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
slow_query_log_file=/PATH/TO/SOMEFILE
設定慢查詢日誌檔案的名稱。預設為hostname-slow.log,,預設在資料目錄,但可以通過--slow_query_log_file選項修改。作用範圍為全域性級別,可用於選項檔案,屬動態變數。
log_query_not_using_indexes={ON|OFF}
設定是否將沒有使用索引的查詢操作記錄到慢查詢日誌。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
long_query_time=#
設定區別慢查詢與一般查詢的語句執行時間長度。這裡的語句執行時長為實際的執行時間,而非在CPU上的執行時長,因此,負載較重的伺服器上更容易產生慢查詢。其最小值為0,預設值為10,單位是秒鐘。它也支援毫秒級的解析度。作用範圍為全域性或會話級別,可用於配置檔案,屬動態變數。
2.4、事務日誌
事務日誌檔名為"ib_logfile0"和“ib_logfile1”,預設存放在表空間所在目錄
與事務日誌相關變數:
innodb_log_group_home_dir=/PATH/TO/DIR
設定InnoDB重做日誌檔案的儲存目錄。在預設使用InnoDB日誌相關的所有變數時,其預設會在資料目錄中建立兩個大小為5MB的名為ib_logfile0和ib_logfile1的日誌檔案。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
innodb_log_file_size={108576 .. 4294967295}
設定日誌組中每個日誌檔案的大小,單位是位元組,預設值是5MB。較為明智的取值範圍是從1MB到快取池體積的1/n,其中n表示日誌組中日誌檔案的個數。日誌檔案越大,在快取池中需要執行的檢查點刷寫操作就越少,這意味著所需的I/O操作也就越少,然而這也會導致較慢的故障恢復速度。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
innodb_log_files_in_group={2 .. 100}
設定日誌組中日誌檔案的個數。InnoDB以迴圈的方式使用這些日誌檔案。預設值為2。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
innodb_log_buffer_size={262144 .. 4294967295}
設定InnoDB用於輔助完成日誌檔案寫操作的日誌緩衝區大小,單位是位元組,預設為8MB。較大的事務可以藉助於更大的日誌緩衝區來避免在事務完成之前將日誌緩衝區的資料寫入日誌檔案,以減少I/O操作進而提升系統性能。因此,在有著較大事務的應用場景中,建議為此變數設定一個更大的值。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
innodb_flush_log_at_trx_commit = 1
# 表示有事務提交後,不會讓事務先寫進buffer,再同步到事務日誌檔案,而是一旦有事務提交就立刻寫進事務日誌,並且還每隔1秒鐘也會把buffer裡的資料同步到檔案,這樣IO消耗大,預設值是"1",可修改為“2”
innodb_locks_unsafe_for_binlog OFF
#這個變數建議保持OFF狀態,詳細的原理不清楚
innodb_mirrored_log_groups = 1
#事務日誌組儲存的映象數
2.5、二進位制日誌
記錄修改資料或有可能引起資料改變的MySQL語句
二進位制日誌格式:
a)、statement(語句)格式:資料量小,但在資料恢復時可能出現數據不一致
b)、row(行)格式:資料量大,但資料精確
c)、mixed(混合格式):交替使用statement和row,讓mysql自己判斷該使用哪一種
顯示二進位制日誌相關語句:
mysql> SHOW {BINARY | MASTER} LOGS ; #顯示當前mysql有哪些二進位制日誌檔案
mysql> SHOW MASTER STATUS; #顯示當前伺服器所使用的二進位制日誌檔案及所處的位置
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000021 | 311 | | |
+------------------+----------+--------------+------------------+
mysql> SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]; #讀取二進位制日誌的事件詳情
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000021';
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------+
| mysql-bin.000021 | 4 | Format_desc | 1 | 107 | Server ver: 5.5.36-log, Binlog ver: 4 |
| mysql-bin.000021 | 107 | Query | 1 | 213 | use `mydb2`; DROP TABLE `tb2` /* generated by server */ |
| mysql-bin.000021 | 213 | Query | 1 | 311 | use `mydb2`; CREATE TABLE tb2 SELECT * FROM tb1 |
+------------------+-----+-------------+-----------+-------------+---------------------------------------------------------
mysql> SHOW BINLOG EVENTS IN 'mysql-bin.000021' FROM 213; #指定位置
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+
| mysql-bin.000021 | 213 | Query | 1 | 311 | use `mydb2`; CREATE TABLE tb2 SELECT * FROM tb1 |
+------------------+-----+------------+-----------+-------------+-------------------------------------------------+
在shell下也有相關的工具讀取二進位制日誌檔案,比在互動式環境讀取的資訊更可讀:
1 [[email protected] ~]# mysqlbinlog /mydata/data/mysql-bin.000021
藉助二進位制日誌檔案和mysqlbinlog命令可實現資料的恢復操作,此命令常用的4個選項:
--start-datetime=#
表示二進位制日誌檔案中一個事件的開始時間
--stop-datetime=#
表示二進位制日誌檔案中一個事件的結束時間
--start-position=#
表示二進位制日誌檔案中一個事件的開始位置
--stop-position=#
表示二進位制日誌檔案中一個事件的結束位置
二進位制日誌檔案安全的的刪除方法(刪除前請備份):
語法: PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 27702 |
| mysql-bin.000002 | 1063490 |
| mysql-bin.000003 | 733 |
| mysql-bin.000004 | 150 |
| mysql-bin.000005 | 126 |
| mysql-bin.000006 | 126 |
| mysql-bin.000007 | 126 |
| mysql-bin.000008 | 126 |
| mysql-bin.000009 | 126 |
| mysql-bin.000010 | 126 |
| mysql-bin.000011 | 381 |
| mysql-bin.000012 | 126 |
| mysql-bin.000013 | 1625 |
+------------------+-----------+
mysql> PURGE BINARY LOGS TO 'mysql-bin.000010'; #把此二進位制日誌檔案之前的都刪除
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000010 | 126 |
| mysql-bin.000011 | 381 |
| mysql-bin.000012 | 126 |
| mysql-bin.000013 | 1625 |
二進位制日誌相關變數:
log_bin={YES|NO}
是否啟用二進位制日誌,如果為mysqld設定了--log-bin選項,則其值為ON,否則則為OFF。其僅用於顯示是否啟用了二進位制日誌,並不反應log_bin的設定值,即不反應出二進位制日誌檔案存放的具體位置,在my.cnf中可定義。作用範圍為全域性級別,屬非動態變數。值可與log_error一樣值為一個路徑,不要加字尾
log_bin = /mydata/data/mysql-bin
#定製二進位制檔案路徑,不要加字尾
binlog_cache_size = 32768
#啟動mysql伺服器時二進位制日誌的快取大小
binlog_format={ROW|STATEMENT|MIXED}
指定二進位制日誌的型別,5.5.31以前預設為STATEMENT,以後預設為MIXED。如果設定了二進位制日誌的格式,卻沒有啟用二進位制日誌,則MySQL啟動時會產生警告日誌資訊並記錄於錯誤日誌中。作用範圍為全域性或會話,可用於配置檔案,且屬於動態變數。
binlog_stmt_cache_size = 32768
#基於statement(語句)格式的快取大小
expire_logs_days={0..99}
設定二進位制日誌的過期天數,超出此天數的二進位制日誌檔案將被自動刪除。預設為0,表示不啟用過期自動刪除功能。如果啟用此功能,自動刪除工作通常發生在MySQL啟動時或FLUSH日誌時。作用範圍為全域性,可用於配置檔案,屬動態變數。
max_binlog_cache_size{4096 .. 18446744073709547520}
二進定日誌快取空間大小,5.5.9及以後的版本僅應用於事務快取,其上限由max_binlog_stmt_cache_size決定。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
max_binlog_size={4096 .. 1073741824}
設定二進位制日誌檔案上限,單位為位元組,最小值為4K,最大值為1G,預設為1G。某事務所產生的日誌資訊只能寫入一個二進位制日誌檔案,因此,實際上的二進位制日誌檔案可能大於這個指定的上限。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
max_binlog_stmt_cache_size = 18446744073709547520
#基於statement格式的二進位制日誌檔案的最大快取大小
sql_log_bin={ON|OFF}
用於控制二進位制日誌資訊是否記錄進日誌檔案。預設為ON,表示啟用記錄功能。使用者可以在會話級別修改此變數的值,但其必須具有SUPER許可權。作用範圍為全域性和會話級別,屬動態變數。
sync_binlog=#
設定多久同步一次二進位制日誌至磁碟檔案中,0表示不同步,任何正數值都表示對二進位制每多少次寫操作之後同步一次。當autocommit的值為1時,每條語句的執行都會引起二進位制日誌同步,否則,每個事務的提交會引起二進位制日誌同步。
在生產環境下建議不要把二進位制日誌檔案與資料放在同一目錄。
2.6、中繼日誌
在複製環境中產的的日誌資訊
與中繼日誌相關的變數:
log_slave_updates
用於設定複製場景中的從伺服器是否將從主伺服器收到的更新操作記錄進本機的二進位制日誌中。本引數設定的生效需要在從伺服器上啟用二進位制日誌功能。
relay_log=file_name
設定中繼日誌的檔名稱,預設為host_name-relay-bin。也可以使用絕對路徑,以指定非資料目錄來儲存中繼日誌。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
relay_log_index=file_name
設定中繼日誌的索引檔名,預設為為資料目錄中的host_name-relay-bin.index。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
relay-log-info-file=file_name
設定中繼服務用於記錄中繼資訊的檔案,預設為資料目錄中的relay-log.info。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
relay_log_purge={ON|OFF}
設定對不再需要的中繼日誌是否自動進行清理。預設值為ON。作用範圍為全域性級別,可用於選項檔案,屬動態變數。
relay_log_space_limit=#
設定用於儲存所有中繼日誌檔案的可用空間大小。預設為0,表示不限定。最大值取決於系統平臺位數。作用範圍為全域性級別,可用於選項檔案,屬非動態變數。
max_relay_log_size={4096..1073741824}
設定從伺服器上中繼日誌的體積上限,到達此限度時其會自動進行中繼日誌滾動。此引數值為0時,mysqld將使用max_binlog_size引數同時為二進位制日誌和中繼日誌設定日誌檔案體積上限。作用範圍為全域性級別,可用於配置檔案,屬動態變數。
相關推薦
mysql開啟binlog日誌和慢查詢日誌
logs launch style spa 簡單 bsp mys 自動 文件的 1)首先,為什麽要開啟binlog日誌和慢查詢日誌呢? binlog日誌會記錄下數據庫的所以增刪改操作,當不小心刪除、清空數據,或數據庫系統出錯,這時候就可以使用binlog日誌來還原數據庫,
windows環境mysql開啟binlog日誌方法
進入mysql C:\Users\hcf> mysql -uroot -p123456 檢視binlog mysql> show binary logs; ERROR 開始配置 在myslq的安裝目錄下,找到my.ini 在mysqld下面新增 s
windows下mysql開啟binlog日誌及利用binlog日誌恢復資料筆記
1、開啟binlog日誌。 找到mysql安裝目錄,開啟配置檔案my.ini 在[mysqld]下新增: bin-log=mysql-bin 儲存後重啟mysql。此時在data目錄會生成mysql-bin.000001和mysql-bin.index。 注意:My
mysql開啟binlog日誌後重啟失敗
今天在CentOS系統中開啟了mysql的binlog日誌,結果重啟mysql報錯。報錯資訊如下: Job for mysqld.service failed because the control process exited with error code. See "
MySql開啟binlog日誌
環境:win7,mysql-5.6.25-winx64 1、開啟binlog日誌 啟動時新增引數--log-bin,命令: mysqld --log-bin 2、binlog日誌檢視 預設的在mysql安裝目錄的data子目錄下會出現一個***-bin.0000001的檔案
Linux下開啟Mysql的BinLog日誌模式
1.因為有時候我們需要實現:mysql增量備份、主從複製,所以需要修改mysql的日誌模式,那麼首先mysql的cnf檔案一般都是在/etc/my.cnf,找到這個檔案然後準備修改內容。 2.輸入: vim /etc/my.cnf , 找到server-id設
開啟MySQL的binlog日誌
binlog 就是binary log,二進位制日誌檔案,這個檔案記錄了mysql所有的dml操作。通過binlog日誌我們可以做資料恢復,做主住複製和主從複製等等。對於開發者可能對binlog並不怎麼關注,但是對於運維或者架構人員來講是非常重要的。 如何開啟mysql的
開啟mysql的binlog日誌&檢視$備份
1、5.7版本前 修改my.cnf檔案,新增log-bin=my-bin(my.cnf的位置根據自己安裝的路徑檢視) # vi /usr/local/mysql/my.cnf log-bin=my-bin &nbs
Centos為mysql開啟binlog
mysql開啟 blog service 重啟 star variable serve image var 1.查詢mysql配置文件所在位置 2.編輯配置文件/etc/my.cnf 在文件尾部添加: log-bin=/var/lib/mysql/mysql-bi
利用Maxwell組件實時監聽Mysql的binlog日誌
nbsp 重啟 mysqld pan cli 生成 flush rest 插入數據 一:在linux環境下安裝部署好mysql 開啟binlog Vim /etc/my.cnf mysql的binlog格式有3種,為了把binlog解析成json數據格式,要設置b
mysql開啟查詢日誌功能
variable show 重新 註意 但是 重啟 www mysq 開啟 1、開啟查詢日誌 https://www.cnblogs.com/kerrycode/p/7130403.html MYsql 查詢日誌配置 mysql> show variabl
Mysql之binlog日誌說明及利用binlog日誌恢復數據操作記錄
Language 命令 ani art ase 回來 log日誌 slaves update 眾所周知,binlog日誌對於mysql數據庫來說是十分重要的。在數據丟失的緊急情況下,我們往往會想到用binlog日誌功能進行數據恢復(定時全備份+binlog日誌恢復增量數據部
mysql資料庫binlog日誌太大的清理方法
mysql資料庫binlog日誌太大的清理方法 1.檢視binlog日誌 mysql> show binary logs; +------------------+------------+ | Log_name
在mysql 使用binlog日誌
一. 利用binlog恢復庫表策略:1.啟用binlog日誌2.建立db1庫tb1表,插入3條記錄3.刪除tb1表中剛插入的3條記錄4.使用mysqlbinlog恢復刪除的3條記錄 步驟一:啟用binlog日誌1)調整/etc/my.cnf配置,並重啟服務[mysqld]......log_bin=logd
在mysql 使用binlog日誌
str gdi strong my.cnf配置 dup lec sel ins 之前 一. 利用binlog恢復庫表策略:1.啟用binlog日誌2.創建db1庫tb1表,插入3條記錄3.刪除tb1表中剛插入的3條記錄4.使用mysqlbinlog恢復刪除的3條記錄 步驟一
mysql 開啟binlog
登入mysql之後使用下面的命令檢視是否開啟binlog show variables like 'log_%'; if沒有開啟則在mysql的配置檔案中 加入以下內容 server_id=2 log_bin = mysql-bin binlog_format =
【轉】MySQL的binlog日誌
轉自:https://www.cnblogs.com/martinzhang/p/3454358.html binlog 基本認識 MySQL的二進位制日誌可以說是MySQL最重要的日誌了,它記錄了所有的DDL和DML(除了資料查詢語句)語句,以事件形式記錄,還包含語句所執行的消耗的時間,
MySQL開啟binlog並且儲存7天有效資料
開啟binlog日誌(在[mysqld]下修改或新增如下配置):server-id=1 log-bin=mysql-bin binlog_format=MIXEDbinlog日誌模式Mysql複製主要有三種方式:基於SQL語句的複製(statement-based repli
MySQL設定binlog日誌的有效期自動回收
設定日誌保留天數,到期後自動刪除 檢視當前日誌儲存天數: show variables like '%expire_logs_days%'; 預設是0,即永不過期。 通過設定全域性引
資料採集之解析Mysql的binlog日誌傳送至Kafka實時消費
本文采用Maxwell來實現實時解析mysql的binlog日誌傳送至kafka 1、開啟mysql binlog 環境中mysql是docker容器,所以需要進入容器修改mysql配置.