mysqlrow⽇志格式下查看binlogsql语句
mysql查看所有存储过程有时候我们需要使⽤row作为binlog的⽇志格式,即配置⽂件使⽤了binlog_format= row 参数
批处理怎么写注释这样以来,我们在查看数据库binlog内容时候,就看不到增删改查的具体语句了,在数据库恢复的时候
不利于我们查恢复数据点。
使⽤row⽇志格式的⽇志:
可以看到都是⼀段段类似加密过的字符串⼀样,不要着急,其实sql真实语句就在这⾥这⾥,只不过
是经过64位编码转换后的内容,我们使⽤mysqlbinlog对应的参数即可查看具体的sql内容:
mysqlbinlog --base64-output=decode-rows -v --start-date="2017-08-12 15:00:19" --stop-date="2017-08-12 15:30:19" mysql-bin.000055
umbrella species说明:--base64-ouput=decode-rows 代表解码
-v 代表换⾏显⽰这些语句,如果没有-v 你依然看不到具体的语句
--start-date 代表你要获取⽇志的开始时间
--stop-date 代表你要获取⽇志的结束数据
备注:你也可以使⽤pos位置来查询⼀定阶段呢的⽇内容
结果:
可以查看到很多###开头的数据,这些就是具体的sql语句,只不过不是在⼀⾏⽽已,⽽是分⾏显⽰,已经不耽误我们查看了。
binlog⽇志补习:
binlog格式
binlog有三种格式:Statement、Row以及Mixed。
–基于SQL语句的复制(statement-based replication,SBR),
–基于⾏的复制(row-based replication,RBR),
–混合模式复制(mixed-based replication,MBR)。
算法导论需要的数学基础2.1 Statement
每⼀条会修改数据的sql都会记录在binlog中。
优点:不需要记录每⼀⾏的变化,减少了binlog⽇志量,节约了IO,提⾼性能。
缺点:由于记录的只是执⾏语句,为了这些语句能在slave上正确运⾏,因此还必须记录每条语句在执⾏的时候的⼀些相关信息,以保证所有语句能在slave得到和在master端执⾏时候相同的结果。另外的复制,像⼀些特定函数功能,slave可与master上要保持⼀致会有很多相关问题。
ps:相⽐row能节约多少性能与⽇志量,这个取决于应⽤的SQL情况,正常同⼀条记录修改或者插⼊row格式所产⽣的⽇志量还⼩于Statement产⽣的⽇志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产⽣⼤量⽇志,因此在考虑是否使⽤ROW格式⽇志时应该跟据应⽤的实际情况,其所产⽣的⽇志量会增加多少,以及带来的IO性能问题。
2.2 Row
5.1.5版本的MySQL才开始⽀持row level的复制,它不记录sql语句上下⽂相关信息,仅保存哪条记录被修改。
使div在页面水平垂直居中优点: binlog中可以不记录执⾏的sql语句的上下⽂相关的信息,仅需要记录那⼀条记录被修改成什么了。所以rowlevel的⽇志内容会⾮常清楚的记录下每⼀⾏数据修改的细节。⽽且不会出现某些特定情况
下的存储过程,或function,以及trigger的调⽤和触发⽆法被正确复制的问题.
缺点:所有的执⾏的语句当记录到⽇志中的时候,都将以每⾏记录的修改来记录,这样可能会产⽣⼤量的⽇志内容。
ps:新版本的MySQL中对row level模式也被做了优化,并不是所有的修改都会以row level来记录,像遇到表结构变更的时候就会以statement 模式来记录,如果sql语句确实就是update或者delete等修改数据的语句,那么还是会记录所有⾏的变更。
2.3 Mixed
从5.1.8版本开始,MySQL提供了Mixed格式,实际上就是Statement与Row的结合。
手机android删除会影响什么在Mixed模式下,⼀般的语句修改使⽤statment格式保存binlog,如⼀些函数,statement⽆法完成主从复制的操作,则采⽤row格式保存binlog,MySQL会根据执⾏的每⼀条具体的sql语句来区分对待记录的⽇志形式,也就是在Statement和Row之间选择⼀种。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论