mysql三大日志_了解的mysql三大日志-----binlog
binlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并且由Server层进行记录,使用任何存储引擎的mysql数据库都会记录binlog日志。
逻辑日志:可以简单理解为记录的就是sql语句。
物理日志:因为mysql数据最终是保存在数据页中的,物理日志记录的就是数据页变更。
binlog是通过追加的方式进行写入的,可以通过max_binlog_size参数设置每个binlog文件的大小,当文件大小达到给定值之后,会生成新的文件来保存日志。
binlog使用场景
在实际应用中,binlog的主要使用场景有两个,分别是主从复制和数据恢复。
主从复制:在Master端开启binlog,然后将binlog发送到各个Slave端,Slave端重放binlog从而达到主从数据一致。
数据恢复:通过使用mysqlbinlog工具来恢复数据。
binlog刷盘时机
对于InnoDB存储引擎而言,只有在事务提交时才会记录biglog,此时记录还在内存中,那么biglog是什么时候刷到磁盘中的呢?mysql通过sync_binlog参数控制biglog的刷盘时机,取值范围是0-N:
0:不去强制要求,由系统自行判断何时写入磁盘;
1:每次commit的时候都要将binlog写入磁盘;
N:每N个事务,才会将binlog写入磁盘。
从上面可以看出,sync_binlog最安全的是设置是1,这也是MySQL 5.7.7之后版本的默认值。但是设置一个大一些的值可以提升数据库性能,因此实际情况下也可以将值适当调大,牺牲一定的一致性来获取更好的性能。
binlog日志格式
binlog日志有三种格式,分别为STATMENT、ROW和MIXED。
在 MySQL 5.7.7之前,默认的格式是STATEMENT,MySQL 5.7.7之后,默认值是ROW。日志格式通过binlog-format指定。
STATMENT
基于SQL语句的复制(statement-based replication, SBR),每一条会修改数据的sql语句会记录到binlog中。
优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO, 从而提高了性能;
缺点:在某些情况下会导致主从数据不一致,比如执行sysdate()、slepp()等。
ROW
基于行的复制(row-based replication, RBR),不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了。
优点:不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题;
缺点:会产生大量的日志,尤其是alter table的时候会让日志暴涨
MIXED
基于STATMENT和ROW两种模式的混合复制(mixed-based replication, MBR),一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog
mysql三大日志_了解的mysql三大日志-----binlog相关推荐
- 解读mysql日志_全方位解读 MySQL 日志实现内幕(四)
作者介绍 王竹峰,去哪儿网数据库专家,擅长数据库开发.数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解.曾就职于达梦数据库,多年从事数据库内核开发的工 ...
- mysql导出二进制日志_使用mysqlbinlog提取二进制日志
MySQL binlog日志记录了MySQL数据库从启用日志以来所有对当前数据库的变更.binlog日志属于二进制文件,我们可以从binlog提取出来生成可阅读的SQL语句来重建当前数据库以及根据需要 ...
- 操作 mysql 不生成日志_详解MySQL的日志
MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...
- 删除部分mysql日志_正确删除MYSQl日志方法
1.查找当 mysql> show binary logs; +------+---–+ | Log_name | File_size | +------+---–+ | mysql-bin.0 ...
- 怎么在mysql查看运行日志_如何查看mysql运行、访问记录等日志
如何查看mysql运行.访问记录等日志 1.首先确认你日志是否启用了 mysql>show variables like 'log_bin'; mysql>show variables l ...
- mysql下日志_浅谈mysql下日志记录
1,如何查看mysql执行命令历史 #.mysql_history 此文件记录了在mysql中执行命令的历史 2,事务日志: transaction log:事务型存储引擎自行的管理和使用. ...
- mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)
前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...
- mysql 硬负载_为啥单机MySQL又遭遇瓶颈?MySQL主从复制替你解决单机问题
成长是一棵树,总是在你不知不觉的情况下快乐长大:成长是一株草,总是在你不知不觉的情况下长满大地:成长是一朵花,总是在你不知不觉的情况下开满山头. 这不,随着时间的迁移.项目网站的用户量.数据量持续上升 ...
- mysql fnv算法_《高性能MySQL》读书笔记之创建高性能的索引
索引是存储引擎用于快速找到记录的一种数据结构.索引优化是对查询性能优化的最有效手段.索引能够轻易将查询性能提高几个数量级.创建一个最优的索引经常需要重写查询. 5.1索引基础 在MySQL中,存储引擎 ...
- 监控mysql数据库 更新_实时监控mysql数据库变化
对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...
最新文章
- windows 连Linux,Windows下访问Linux资源
- 修改Eclipse/MyEclipse项目的默认编码
- SDNE: 阿里应用深度学习进行图嵌入,构造凑单算法模型
- 跨语言、多语言信息检索
- Docker 方式安装 Nexus 私服
- 孙正义:一个有远见的赌徒
- 利用Xposed+JustTrustMe绕过Android App(途牛apk)的SSL Pinning
- 如何从零开始搭建公司自动化测试框架?
- 安卓刷java_安卓逆向刷题(攻防世界)
- Python-pptx Table
- 翻译来自HiDDeN网络架构-Lifeifei
- I.MX6U嵌入式Linux应用编程学习
- 出现 Cannot read property 'xxxxxx' of null 问题思路
- python获取股票数据,并计算技术指标
- 中国劳动关系学院计算机专业分数,中国劳动关系学院是几本?录取分数线是多少?...
- CSS基础知识---三种选择器
- 常用电平标准(TTL、RS232、RS485、RS422)
- 【云计算与虚拟化】第三章 实验二 在ESXi主机中安装操作系统
- delete请求数据详解
- unityhub下载地址