翻譯人員: 鐵錨
翻譯時間: 2013年12月25日
原文地址:
Activating the Binary Log
參考了: 《高可用MySQL 構建健壯的數據中心》
要啟用二進制日志功能,可以使用 "
--log-bin[=name]"選項來啟動服務器.
如果文件名中包含了後綴(例如 "
--log-bin[=master-bin.log]"),則後綴("
.log")將會被忽略.
如果沒有指定文件名,默認使用
datadir/log-basename-bin,
datadir/mysql-bin 或者
datadir/mariadb-bin(如果也沒有
--log-basename
選項,根據server版本的不同,會使用後兩個中的一個);
datadir 是存放數據(data)的目錄,由系統變量
datadir 定義.(啟動參數
--datadir=path 或者
-h path);
強烈建議: 使用
--log-basename 或者指定二進制日志的文件名,以便服務器的hostname改變以後也不影響復制(replication );
存儲二進制日志的目錄,用於存放 各個獨立的二進制日志文件,以及對這些文件的二進制日志索引(文件).
二進制日志文件的擴展名是一序列的數字.每增加一個日志文件,擴展名的數字就會增加;所以較老的日志的擴展名數字較小,最近的日志的擴展名數字最大。
每次服務器啟動,就會啟用一個新的二進制日志,當然擴展名也是新的;啟動或停止時日志會被強制寫入物理文件(平時可能存儲在內存緩存中,由操作系統決定何時寫入).也可以通過定義
max_binlog_size 變量來指定一個數字,當日志累增到此值就會強制寫入硬盤.
二進制日志索引文件按順序儲存著所有的二進制日志文件的索引.
datadir下的文件列表示例如下:
shell> ls -l
total 100
...
-rw-rw---- 1 mysql adm 2098 Apr 19 00:46 mariadb-bin.000079
-rw-rw---- 1 mysql adm 332 Apr 19 00:56 mariadb-bin.000080
-rw-rw---- 1 mysql adm 347 Apr 19 07:36 mariadb-bin.000081
-rw-rw---- 1 mysql adm 306 Apr 20 07:15 mariadb-bin.000082
-rw-rw---- 1 mysql adm 332 Apr 20 07:41 mariadb-bin.000083
-rw-rw---- 1 mysql adm 373 Apr 21 07:56 mariadb-bin.000084
-rw-rw---- 1 mysql adm 347 Apr 21 09:09 mariadb-bin.000085
-rw-rw---- 1 mysql adm 398 Apr 21 21:24 mariadb-bin.000086
-rw-rw---- 1 mysql adm 816 Apr 21 17:05 mariadb-bin.index
二進制日志index文件的名字部分默認與其他的二進制日志文件相同,而擴展名使用"
.index",當然,index文件的名字也可以通過"
--log-bin-index[=filename] " 選項來單獨指定.
具有
SUPER 權限的客戶端,可以通過設置
sql_log_bin 變量,來為此次會話禁用或者再次啟用二進制日志;
(
sql_log_bin 是一個
session變量,默認值是1,只有具有 SUPER 權限的客戶端可以設置;設置為 0 則此客戶端的的操作將不記入二進制日志;)
示例如下:
MariaDB [test]> SET sql_log_bin = 0;
MariaDB [test]> SET sql_log_bin = 1;
二進制日志的格式
二進制日志有三種格式:
默認是 基於語句的日志(
statement-based);
row-based是基於行的日志;
mix是可以混合前面兩種日志的格式;
詳情請參考: Binary Log Formats
MariaDB服務器所有的配置選項參見:
mysqld Options (full list)
MariaDB服務器系統變量參見:
Server System Variables