zoukankan      html  css  js  c++  java
  • MySQL binlog

    binlog(The Binary Log)用于记录用户对数据库更新的SQL语句信息,例如数据库的增删改语句都会记录到binlog里,不会记录查询语句。默认情况下,binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat,vi等)查看,而使用mysqlbinlog解析查看。mysql的binlog日志是被设计用来作主从备份或者数据恢复用的。

    1. mysql提供了三种不同的binlog记录形式

    STATEMENT 语句模式(默认):日志中记录了所有的执行的sql语句,从库在执行的时候,重新执行相应sql即可。但是因为不记录语句执行的上下文,在从库执行某些语句(比如存储过程)的时候,有些语句不一定能成功执行导致丢失数据
    ROW 行模式:日志中记录每一行每个字段的变化,能清楚记录每行数据的变化历史,主从丢失数据的情况大大降低,但是缺点是会产生大量的binlog占用存储空间
    MIX 混合模式:在 Mixed 模式下,MySQL 会根据执行的每一条具体的 SQL 语句来区分对待记录的日志形式,也就是在 statement 和 row 之间选择一种。比如遇到表结构变更的时候就会以 statement 模式来记录,如果 SQL 语句确实就是 update 或者 delete 等修改数据的语句,那么还是会记录所有行的变更。目前这种模式其实就是由mysql来选择到底用哪种模式记录。

    2. 如何开启binlog日志功能
    在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名
    log_bin = /application/mysql/logs/dadong-bin

    3. 查看binlog情况

    show variables like 'log_bin'  //查看自己的mysql是否打开了binlog选项
    show variables like 'binlog_format' //查看binlog的格式
    show binary logs   //获取binlog列表
    show master logs   //获取binlog列表
    show master status //查看正在写入的binlog

    4. 查看binlog

    如果binlog的格式是STATEMENT,show binlog event的方式是可以看到sql语句的
    如果row模式的话只能通过mysqlbinlog工具进行查看,mysqlbinlog也是mysql dba常用的备份恢复数据的工具。该工具需要登录到数据库主机使用: mysqlbinlog [options] log_file

    ---------------------
    作者:frog4
    来源:CSDN
    原文:https://blog.csdn.net/frog4/article/details/80280149
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    技术普及帖:你刚才在淘宝上买了一件东西
    centos 安装yum
    eclipse 中java 项目红色感叹号终极解决方案
    centos x8664位版本 想安装qq for linux
    甲骨文放弃对RHEL的ASMLib支持
    amoeba连接mysqlERROR 2006 (HY000): MySQL server has gone away
    让Fedora 15/CentOS 6显示详细启动信息,不显示进度条
    Oracle10g RAC安装手册
    如何控制oracle RAC 进行并行运算
    利用mysql的inet_aton()和inet_ntoa()函数存储IP地址
  • 原文地址:https://www.cnblogs.com/anxiao/p/11081870.html
Copyright © 2011-2022 走看看