binlog配置和使用
binlog启用和禁用
在/etc/my.cnf文件中添加log-bin=mysql-bin来启用binlog,mysql-bin为日志文件名前缀。
如果用户有super权限,可通过set sql_log_bin=1/0来启用或禁用当前会话的binlog记录。
binlog的设置
A: binlog_do_db=dbname设置只记录dbname库的二进制日志,如果有多个则添加多行即可。
B: binlog_ignore_db=dbname设置不记录dbname库的二进制日志,如果有多个则添加多行即可。
C: binlog_format=mixed 综合了statement和row的优点,默认即为此值。
D: binlog_cache_size 使用内存的大小,默认为32KB。
E: max_binlog_cache_size 使用内存的最大尺寸。
F: max_binlog_size 日志的最大值和默认值是1GB
G: sync_binlog=0 这个参数直接影响mysql的性能和完整性,当事务提交后,mysql仅是将
binlog_cache中的数据写入binlog文件,但不执行fsync之类的硬盘,这时性能是最好的,
但是风险也是最大的,一旦系统crash,在文件系统缓存中的所有binlog信息都会丢失。
当使用事务的表存储引擎时,所有未提交的二进制日志会被记录到一个缓存中,
等该事务提交时直接将缓存中的二进制日志写入二进制日志文件。
使用SHOW GLOBAL STATUS查看下面两项的值,根据它们来调整binlog_cache_size的值
binlog_cache_use 记录了使用缓存写二进制日志的次数
binlog_cache_disk_use 记录了使用临时文件写二进制日志的次数
binlog的查看
mysqlbinlog binlog-file-name
binlog的删除
A:自动删除
show variables like 'expire_logs_days';
set global expire_logs_days=3;
B:手动删除
reset master or reset slave 清除所有日志
purge master logs before '2014-05-30 14:45:00' 删除指定日期以前的日志
purge master logs to 'mysql-bin.000001' 删除指定的日志文件
按照手册上的说法,
把--innodb-support-xa设置为1,同时保证sync_binlog=1,才能保证innodb的binlog和数据一致