log_bin
#设置MySQL实例是否开启binlog日志,它是在my.cnf的[mysqld]模块下进行设置
#注意该参数不能直接设置成log_bin=on/1/off/0。它需要指定binlog日志的保
#存路径及二进制日志文件名的前缀,后缀会自动添加;
#例如:log_bin=/data/mysql/3306/binlog/110_mysql_bin
#我们登录mysql实例后用命令show global variables like "log_bin";来
#查看时,它的结果要么是on要么是off,不会显示所存储的路径。若要看log_bin存
#放在什么位置,可以用show global variables like "log_bin_basename";
#来查看。
log_bin_index
#设置binlog日志的索引文件的存放路径及索引文件名
#例如:log_bin_index=/data/mysql/3306/binlog/mysql_bin.index
expire_logs_days
#后面接数字,它的作用是保存最近多少天的二进制日志文件,这个你可以根据自己的存储容量和备份策略来设置,
#我在工作中一般设置成60天,配置示例:expire_logs_days=60
binlog_format
#设置二进制日志的模式,二进制日志模式有:statement、row、mixed
#mysql 5.5版本以后建议设置成row模式,配置示例:binlog_format=row

binlog_row_image
#设置该参数的前提是binlog_format等于row,它的作用是用来设置当binlog_format等于row时
#记录日志的范围,有三个参数值(full全记录,minimal最小,noblob不记录大字段)
#默认值为full全记录,工作中设置成full就行了。示例:binlog_row_image=full

binlog_rows_query_log_events
#设置该参数的前提是binlog_format等于row,这个参数控制二进制日志文件是不是详细记录每条执行的语句,当binlog_format等于row时,默认是开启的。
#若该参数的值为off时,我们用"mysqlbinlog --base64-output=decode-row -vv 二进制文件名"命令来解析时,你是看不到具体执行了DML数据操纵语句的,
#你在登录mysql实例后,用"show binlog in 二进制文件名;"来看执行了什么语句,也是看不见的。配置示例:binlog_rows_query_log_events=on

max_binlog_size
#该参数默认大小为1G(1073741824 b)它的作用是设置binlog日志文件的大小,当超过这个大小后,自动生成一个新的binlog日志文件。
#如果一个SQL事务太大,也会超过1G(比如SQL产生了5G日志,binlog日志也会达到5G)工作中一般设置成2G。配置示例:max_binlog_size=2G

binlog_cache_size
#该参数默认值为32kb(32768 b),为每个session分配的内存,在事务过程中用来存储二进制日志写的缓存,作用是提高记录binlog日志的效率。
#MySQL记录binlog日志的流程为:buff pool(内存池) --> binlog cache --> file system cache --> commit --> binlog file(磁盘中)
#binlog_cache_size的状态监控如下所示:
   mysql> show status like "binlog_cache%";
   +-----------------------+-------+
   | Variable_name         | Value |
   +-----------------------+-------+
   | Binlog_cache_disk_use | 50    |  
   | Binlog_cache_use      | 57    |  
   +-----------------------+-------+
   2 rows in set (0.00 sec)

   Binlog_cache_disk_use 
   #表示当binlog_cache_size设置的内存不足时导致缓存二进制日志时使用到了磁盘的临时文件的次数

   Binlog_cache_use  
   #表示binlog缓存被使用了的次数(内存中)注意,这个不是容量,而是事务个数。每次有一条事务提交,都会有一次增加。
工作中一般设置成4M,配置示例:binlog_cache_size=4M

max_binlog_cache_size
#这个参数的默认值太大了,它表示的是所有session在写binlog时能够使用的最大缓存大小,当我们执行多语句事务的时候,
#所有session使用的内存超过max_binlog_cache_size的值时,就会报错误:
#Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again

sync_binlog
#MySQL记录binlog日志的流程为:buff pool(内存池) --> binlog cache --> file system cache --> commit --> binlog file(磁盘中)
#设置binlog日志提交的模式,它的默认值为1。sync_binlog有:0,1,N三种模式
#0 #mysql不会主动同步binlog内容到磁盘中,面是依赖操作系统刷新文件的机制到binlog file中
#1 #默认值,mysql主动刷新file system cache中的内容到binlog file,每1次commit就主动刷新
#N #不是0也不是1,就是你人为可以设置多少次提交后,再刷新到log file中
#工作中中的配置示例:sync_binlog=1
 
log_slave_updates
#当你想在主众复制的slave中记录binlog日志,你在配置了上面相关的参数后,你还需要配置log_slave_updates=1