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';