zoukankan      html  css  js  c++  java
  • MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术

    二进制日志文件Binlog的格式主要有三种:

    1、Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存到Binlog里面。

    2、ROW:基于行级别,每一行数据的变化都会记录到Binlog里面,但是并不记住原始SQL语句,因此它会记录的非常详细,日志量也比statement格式记录的多得多。在主从复制中,这样的Binlog格式不会因存储过程或触发器原因造成主从数据不一致的问题。

    3、Mixed:混合Statement和Row模式。

    在mysql5.7中,默认是ROW模式记录

    mysql> show variables like 'binlog_format%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | binlog_format | ROW   |
    +---------------+-------+
    1 row in set (0.00 sec)

    上面的三种复制模式也对应了MySQL的三种复制技术:

    binlog_format=Statement:基于SQL语句的复制,在MySQL5.1.4之前的版本都是基于SQL语句的复制

    binlog_format=ROW:基于行的复制

    binlog_Mixed:混合复制模式,基于行的复制和基于SQL语句的复制。

    总结:在MySQL的主从复制中,主库的Binlog_format设置为ROW格式比Statement格式更能保证从库数据的一致性,只是ROW格式下的Binlog日志可能会增大非常多,在设置时需要考虑磁盘空间问题。

  • 相关阅读:
    Linux 或 Windows 上实现端口映射
    请收藏,Linux 运维必备的 40 个命令总结,收好了~
    收藏:存储知识全面总结
    超详干货!Linux 环境变量配置全攻略
    iv012-LockSupport
    iv011-死锁编码及定位分析
    iv010-线程池
    iv009-Callable接口
    iv008-线程之间通信之生产者消费者
    iv007-synchronized和Lock的区别
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/10212950.html
Copyright © 2011-2022 走看看