关于mysql binlog日志的格式说明
2016-07-21 11:17
435 查看
Binary Log 记录方式
如果修改了表的结构,那么binlog日志记录的是重新创建表,在插入字段、update等操作语句,而不是的alter的动作。
优点:在Row Level模式下,Binnary Log可以不记录执行的Query语句的上下文相关信息,只要记录哪一行修改了,修改成什么样子。Row Level会详细的记录下每一行数据的修改细节,而且不会出现某个特定情况下的存储过程,或Function,以及Trigger的调用和触发无法被正确复制问题。
缺点:产生大量的日志内容。
优点:首先,解决了Row Level下的缺点,不须要记录每一行的数据变化,减少了Binnary Log日志量,节约了IO成本,提高了性能。
缺点:由于它是记录的执行语句,为了让这些语句在Slave端也能正确执行。那么它还必须记录每条语句在执行时的一些相关信息,即上下文信息,以保证所有语句在Slave端被执行的时候能够得到和在Master端执行时相同的结果。另外,由于MySQL发展比较快,很多新功能不断加入,使得MySQL复制遇到了不小的挑战,复制时设计的内容岳父在,越容易出bug。在Statement Level下,目前已发现不少的情况下会造成MySQL的复制问题。主要是在修改数据使用了某些特定的函数货功能后,出现,比如:Sleep()函数在有些版本中就不能正确的复制,在存储过程中使用了last_insert_id()函数,可能会使Slave和Master的到不一致的ID,等等。
Row Level
Binary Log会记录成每一行数据被修改的形式,然后在Slave端再对相同的数据进行修改。如果修改了表的结构,那么binlog日志记录的是重新创建表,在插入字段、update等操作语句,而不是的alter的动作。
优点:在Row Level模式下,Binnary Log可以不记录执行的Query语句的上下文相关信息,只要记录哪一行修改了,修改成什么样子。Row Level会详细的记录下每一行数据的修改细节,而且不会出现某个特定情况下的存储过程,或Function,以及Trigger的调用和触发无法被正确复制问题。
缺点:产生大量的日志内容。
Statment Level
每一条会修改的SQL语句都会记录到Master的Binnary中。Slave端在复制的时候,SQL线程会解析成和原来Master端执行过相同的SQL语句,并再次执行。优点:首先,解决了Row Level下的缺点,不须要记录每一行的数据变化,减少了Binnary Log日志量,节约了IO成本,提高了性能。
缺点:由于它是记录的执行语句,为了让这些语句在Slave端也能正确执行。那么它还必须记录每条语句在执行时的一些相关信息,即上下文信息,以保证所有语句在Slave端被执行的时候能够得到和在Master端执行时相同的结果。另外,由于MySQL发展比较快,很多新功能不断加入,使得MySQL复制遇到了不小的挑战,复制时设计的内容岳父在,越容易出bug。在Statement Level下,目前已发现不少的情况下会造成MySQL的复制问题。主要是在修改数据使用了某些特定的函数货功能后,出现,比如:Sleep()函数在有些版本中就不能正确的复制,在存储过程中使用了last_insert_id()函数,可能会使Slave和Master的到不一致的ID,等等。
Mixed Level
在Mixed模式下,MySQL会根据执行的每一条具体的SQL语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。除了MySQL认为通过Statement方式可能造成复制过程中Master和Slave之间产生不一致数据。(如特殊Procedure和Funtion的使用,UUID()函数的使用等特殊情况)时,它会选择ROW的模式来记录变更之外,都会使用Statement方式。相关文章推荐
- visual studio 2015连接到MySql相关问题
- sql语句查询优化的方法-mysql
- mysql编译安装
- MySQL优化
- mysql修改时区
- MySQL----MySQLi 类封装
- mysql 升级方法
- B-tree/B+tree/B*tree
- mysql主从复制
- MYSQL 中判断2个逗号分割的字符串是否有交集
- mysql操作
- Amoeba软件实现mysql读写分离
- Mysql游标阻止执行最后一次
- MySQL的安装配置
- mysql管理
- Mysql 下 Insert、Update、Delete、Order By、Group By注入
- mysql-5.7.13在windows上安装使用心得
- mysql在windows上如何使用
- 构建高性能web之路------mysql读写分离实战
- Mysql主从配置,实现读写分离