首页 > 数据库技术 > 详细

mysql学习------二进制日志管理

时间:2015-10-09 12:18:11      阅读:237      评论:0      收藏:0      [点我收藏+]

MySQL二进制日志(Binary Log)


  a、它包含的内容及作用如下:
    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)
    包含关于每个更新数据库(DML)的语句的执行时间信息
    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能
    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新
    用于在主复制服务器上记录所有将发送给从服务器的语句
    启用该选项数据库性能降低1%,但保障数据库完整性,对于重要数据库值得以性能换完整。有些类似于Oracle开启归档模式。
  
  b、开启二进制日志的方法及属性
    使用--log-bin[=file_name]选项或在配置文件中指定log-bin启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。
    对于未给出file_name值,默认名为-bin后面所跟的主机名。
    在未指定绝对路径的情形下,缺省位置保存在数据目录下。
    每个二进制日志名会添加一个数字扩展名用于日志老化,因此不支持自定义的扩展名,会被mysql数字扩展名动态替换。
    若当前的日志大小达到max_binlog_size,则自动创建新的二进制日志。
    对于大的事务,二进制日志会超过max_binlog_size设定的值。也即是事务仅仅写入一个二进制日志。
    由是可知,二进制日志文件大小接近,其size不是完全相等,这点不同于oracle。
    二进制日志文件会有一个对应二进制日志索引文件,该文件包含所有的二进制日志,其文件名与二进制日志相同,扩展名为.index
    二进制索引文件通过--log-bin-index[=file_name]选项来指定
    RESETMASTER语句将删除所有二进制日志文件,这将影响到从库。也可以用PURGE MASTER LOGS只删除部分二进制文件。

    开启如下:

                #=号后面的可以随意指定,也可以不指定

                log-bin=/var/lib/mysql/binlog/master-bin.log
                log-bin-index=/var/lib/mysql/binlog/master-bin.index

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

1、恢复(recovery)2、复制(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

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

Mysql5.5的默认值

 

  1. mysql> show variables like ‘%max_binlog%‘;  
  2. +----------------------------+----------------------+  
  3. | Variable_name              | Value                |  
  4. +----------------------------+----------------------+  
  5. | max_binlog_cache_size      | 18446744073709547520 |  
  6. | max_binlog_size            | 1073741824           |  
  7. | max_binlog_stmt_cache_size | 18446744073709547520 |  
  8. +----------------------------+----------------------+  
  9. 3 rows in set (0.00 sec)  

 

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

mysql学习------二进制日志管理

原文:http://www.cnblogs.com/Yongzhouunknown/p/4863446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!