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
获取binlog
show binary logs;

设置binlog格局命令

设置以后库binlog格局
set binlog_format='statement/row/mixed';
设置全局binlog格局

set global binlog_format='statement/row/mixed';