binlog日志是什么
MySQL的架构可以分为server层与引擎层,引擎层类似于插件像是InnoDB等,binlog就是由server层提供的日志服务。
binlog的格式
binlog支持的格式主要有statement,row,mixed三种。
statement
statement中存储的是SQL语句,这样的存储方式更加节省空间,但是也会带来相应的问题。
缺点:由于存储的是SQL语句所以在主从同步时很可能会有不同的执行结果导致主从数据不一致,例如delete时语句选择的索引不同等。
row
row格式中存储的是数据本身,正因为如此占用的空间更多,但是能够保证数据的准确性。
mixed
mixed模式下,当statement格式中的语句存在导致主从数据不一致的风险时则会自动切换为row。可以通过show warning查看。
对三种日志格式的选择
row格式存储的时数据本身,所以在恢复数据时就很方便。statement虽然占用空间少但是一般的生产环境中所采用的都是主从结构,因此数据的一致性尤其重要。
常用命令
查看binlog命令
查看当前使用的binlog格式
show global variables like '%binlog_format%';
查看第一个binlog文件内容show binlog events;
查看指定文件内容show binlog events in 'mysql.000002';
查看正在写入的文件show master status\G
获取binlogshow binary logs;
设置binlog格式命令
设置当前库binlog格式set binlog_format='statement/row/mixed';
设置全局binlog格式
set global binlog_format='statement/row/mixed';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。