mysql-二进制日志-理解与应用
1 二进制日志的两大作用
用于恢复;
用于复制;
2 二进制日志的开启与关闭
配置以下选项:
log_bin[=on|file_name]
server_id=1
3 其他配置选项
3.1 max_binlog_size
设置单个二进制日志文件的最大值,默认值为1G
3.2 binlog_cache_size
设置二进制日志的缓冲大小;这个值是基于session的,不能设的太大;但也不能设的太小,否则会使用临时文件写二进制日志;
设置依据:查看status中的binlog_cache_use和binlog_cache_disk_use
show global status like 'binlog_cache%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 34 |
+-----------------------+-------+
当Binlog_cache_disk_use的比例较大时,说明binlog_cache_size设置的有点小了;
3.3 sync_binlog
设置二进制日志同步到磁盘的方式,可以理解为缓冲写;取值为n,表示每写缓冲多少次就同步到磁盘;
0 默认值,表示不使用缓冲,这个会对性能稍有影响,在主服务器上或为了高可用性,建议设为0
1 表示采用同步写磁盘的方式来写二进制日志,不使用操作系统的缓冲机制;可能发生的问题,当事务commit之前,二进制日志会写入磁盘,但未提交时发生宕机,则下次启动时该事务不能被回滚(因为日志已记录了该事务记录);解决方法,同时设置innodb_support_xa=1
3.4 binlog-do-db和binlog-ignore-db
设置需要写入或忽略写入哪些库的日志
3.5 log-slave-update
设置从服务器是否写入自己的二进制日志;
3.6 binlog_format
设置二进制文件的格式
取值:statement, row, mixed
mixed模式下,默认采用statement格式,在一些特殊情况下会自动使用row格式;建议设置为mixed模式,保证复制的实时性和正确性;
row模式,虽然对于复制是最完整的模式,但带来的问题是:对一些影响行数较多的操作,会引起二进制日志文件的快速增长,从而对复制的网络传输有影响;
1 二进制日志的两大作用
用于恢复;
用于复制;
2 二进制日志的开启与关闭
配置以下选项:
log_bin[=on|file_name]
server_id=1
3 其他配置选项
3.1 max_binlog_size
设置单个二进制日志文件的最大值,默认值为1G
3.2 binlog_cache_size
设置二进制日志的缓冲大小;这个值是基于session的,不能设的太大;但也不能设的太小,否则会使用临时文件写二进制日志;
设置依据:查看status中的binlog_cache_use和binlog_cache_disk_use
show global status like 'binlog_cache%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 34 |
+-----------------------+-------+
当Binlog_cache_disk_use的比例较大时,说明binlog_cache_size设置的有点小了;
3.3 sync_binlog
设置二进制日志同步到磁盘的方式,可以理解为缓冲写;取值为n,表示每写缓冲多少次就同步到磁盘;
0 默认值,表示不使用缓冲,这个会对性能稍有影响,在主服务器上或为了高可用性,建议设为0
1 表示采用同步写磁盘的方式来写二进制日志,不使用操作系统的缓冲机制;可能发生的问题,当事务commit之前,二进制日志会写入磁盘,但未提交时发生宕机,则下次启动时该事务不能被回滚(因为日志已记录了该事务记录);解决方法,同时设置innodb_support_xa=1
3.4 binlog-do-db和binlog-ignore-db
设置需要写入或忽略写入哪些库的日志
3.5 log-slave-update
设置从服务器是否写入自己的二进制日志;
3.6 binlog_format
设置二进制文件的格式
取值:statement, row, mixed
mixed模式下,默认采用statement格式,在一些特殊情况下会自动使用row格式;建议设置为mixed模式,保证复制的实时性和正确性;
row模式,虽然对于复制是最完整的模式,但带来的问题是:对一些影响行数较多的操作,会引起二进制日志文件的快速增长,从而对复制的网络传输有影响;