翻译人员: 铁锚
翻译时间: 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