zoukankan      html  css  js  c++  java
  • Mysql 二进制日志

    二进制日志记录了所有对数据库执行更改的操作,二进制主要有以下两种作用:

    1、恢复(recovery2、复制(replication

    二进制日志的启动:配置参数log-bin[=name],如果不指定name,则默认二进制日志文件名为主机名,后缀名为二级制日志的序列号,所在路径为数据库所在目录。

    index为后缀的文件为二进制日志的索引文件,用来存储过往生产的二进制日志。


     

    和二进制日志相关的参数:

    max_binlog_size、binlog_cache_size、sync_binlog、binlog-do-db、binlog-ignore-db、log-slave-update、binlog_format

    max_binlog_size,该参数指定了单个二进制日志文件的最大值,如果超过该值,则产生新的二进制日志文件,后缀名+1,并记录到.index文件,从Mysql5.0开始的默认值为1073741824,代表1G

    Mysql5.5的默认值

     

    当使用事务的存储引擎InnoDB时,所有未提交的事务会记录到一个缓存中,等待事务提交时,直接将缓冲中的二进制日志写入二进制日志文件,而该缓冲的大小由binlog_cache_size决定,默认大小为32KB,此外,binlog_cache_size是基于回话的,也就是,当一个线程开始一个事务时,mysql会自动分配一个大小为binlog_cache_size的缓存,因此该值得设置需要相当小心,可以通过show global status 查看binlog_cache_usebinlog_cache_disk_use的状态,可以判断当前binlog_cache_size的设置是否合适

    Binlog_cache_size的默认大小为32KB

     

    参数sync_binlog=[N]表示每写缓存多少次就同步到磁盘,如果将N设置为1,则表示采用同步写磁盘的方式来写二进制日志,该参数很重要,这个以后还会提到。值得注意的是,在将该参数设置为1时,也应该将innodb_support_xa设为1来解决,这可以确保二进制日志和InnoDB存储引擎数据文件的同步。

    参数binlog-do-dbbinlog-ignore-db表示需要写入或者忽略写入哪些库的日志,默认值为空,则表示将所有库的日志同步到二进制日志。

    Log-slave-update该参数在搭建master=>slave=>slave的架构时,需要配置。

    Binlog_format参数也特别重要。从mysql5.1版本开始引入这个参数,该参数可以设置的值有STATEMENT\ROWMIXED

    (1)STATEMENT格式和之前的mysql版本一样,二进制日志文件记录的是日志的逻辑失SQL语句。

    (2)在ROW格式下,二进制日志记录的不再是简单的SQL语句了,而是记录表的行更改情况,此时可以将InnoDB的事务隔离基本设为READ COMMITTED,以获得更好的并发性。

    (3)MIXED格式下,mysql默认采用的STATEMENT格式进行二进制日志文件的记录,但是在一些情况下会使用ROW格式,可能的情况包括:

    1)表的存储引擎为NDB,这时对于表的DML操作都会以ROW格式记录

    2)使用了UUID()USER()CURRENT_USER()FOUND_ROWS()ROW_COUNT()等不确定函数

    3)使用了INSERT DELAY语句

    4)使用了用户定义函数

    5)使用了临时表

  • 相关阅读:
    少走弯路,一个老程序猿谈PHP职业发展规划
    Wireshark网络分析就这么简单
    MySQL高可用架构之MHA
    一般项目的开发流程(公司之间是有差异)
    Java EE大作业之创造class类出现问题-------Implicit super constructor Object() is undefined for default constructor. Mu
    三层架构与MVC
    Android仿QQ界面
    Android之侧滑导航栏
    Android滑动删除功能
    资源链接
  • 原文地址:https://www.cnblogs.com/benshan/p/2862212.html
Copyright © 2011-2022 走看看