Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
MySQL instr_查看binlog日志的命令,希望能够帮助你!!!。
MySQL的binlog是用来记录数据库修改的二进制文件,主要用于数据恢复和主从复制。binlog有三种录入格式:STATEMENT,ROW和MIXED。它们的区别如下:
详细介绍每一种格式
STATEMENT格式
在这种格式下,binlog中记录的是执行的SQL语句,比如INSERT,UPDATE,DELETE等。当slave端接收到这些语句时,会重新执行一遍,从而实现数据的同步。这种方式相当于把master端的操作逻辑复制到slave端。但是,并不是所有的语句都可以用这种方式复制,有些语句会导致master和slave之间的数据不一致。例如:
为了避免这些问题,MySQL提供了一些参数和变量来控制哪些语句可以用STATEMENT格式复制,哪些语句必须用ROW格式复制。具体可以参考MySQL官方文档。
ROW格式
在这种格式下,binlog中记录的是每一行数据被修改后的内容,比如插入了什么值,更新了什么字段,删除了哪一行等。当slave端接收到这些内容时,会直接应用到相应的表中,从而实现数据的同步。这种方式相当于把master端的操作结果复制到slave端。这种方式可以避免STATEMENT格式中出现的数据不一致问题,因为不管语句如何执行,最终影响到数据行的变化都是一样的。但是,这种方式也有一些缺点,主要有:
为了解决这些问题,MySQL提供了一些参数和变量来控制哪些表或哪些列可以用ROW格式复制,哪些表或哪些列可以忽略。具体可以参考MySQL官方文档。
MIXED格式
在这种格式下,binlog中根据语句的类型,自动选择STATEMENT或ROW格式。一般情况下,如果语句可以安全地用STATEMENT格式复制,就使用STATEMENT格式;如果语句可能导致数据不一致或无法复制,就使用ROW格式。这种方式相当于把master端的操作逻辑和结果结合起来复制到slave端。这种方式可以结合前两种方式的优势,尽量减少binlog文件的大小,同时保证数据的一致性。但是,这种方式也有一些缺点,主要有:
为了避免这些问题,MySQL提供了一些参数和变量来控制哪些语句可以用STATEMENT格式复制,哪些语句必须用ROW格式复制。具体可以参考MySQL官方文档。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章