关键词:binlog配置,binlog参数,二进制日志配置,二进制文件参数配置

关键词:binlog缓存,binlog 刷新

0、bin写入流程

写binlog流程如下:
# 数据操作buffer pool > binlog buffer > file system buffer > commit > binlog file

1、配置

【1.1】查看
show variables like '%log_bin%';
show variables like '%binlog%';
show variables like '%server%'; 【1.2】必要参数配置
[mysqld]
server_id=3306 #服务ID,主从必须不一致。(建议数字:ip+端口) 5.7.3以后版本,必须加
#目录必须存在且授权好,binlog为索引文件,实际文件会自动根据索引文件建立如binlog.0000001
log_bin=/mysql/log/3306/binlog
log_bin_index=/mysql/log/3306/binlog.index   #不设置的话,会根据log_bin值名称自动生成binlog.index
binlog_format='row' #(row,statement,mixed) #3种模式
binlog_rows_query_log_events=on #打开才能查看详细记录
expire_logs_days=10 #超过10天的数据会被认定为过期,且会被清理
max_binlog_size=100M #表示单个二进制文件的最大值为100M,如果有大事务可能会超出最大值
binlog_row_image=full #(full,minimal,noblob),分别表示binlog中内容全记录,只记录被操作的,和不记录二进制

binlog-do-db=db_name #该选项告诉服务器,binlog只记录db_name数据库操作(可写多行实现多个数据库)
binlog-ignore-db=db_name #该选项告诉服务器,binlog不记录db_name数据库操作(可写多行实现多个数据库) 【1.3】文件大小
show variables like '%binlog%';
(1)max_binlog_size:范围4K-1G,默认1G、最大也是1G一个。但如果一个SQL事务太大,比如这个SQL产生2G日志,那么binlog也会达到2G。
【1.4】缓存大小(如果事务巨大则会超出定义值)
(1)binlog_cache_size(默认32K):二进制日志写缓存区大小。写binlog流程如下:
# 数据操作buffer pool > binlog buffer > file system buffer > commit > binlog file
监控使用:show status like 'binlog_cache';
=>Binlog_cache_use 表示用到binlog缓存的次数
=>Binlog_cache_disk_use 表示使用临时文件来存放binlog缓存的次数。
(2)max_binlog_cache_size:binlog_cache_size缓存最大值,默认无限大,超出报错
(3)binlog_stmt_cache_size(默认32K):非事务语句文件缓存大小
(4)max_binlog_stmt_cache_size:binlog_stmt_cache_size缓存最大值,默认无限大,超出报错
(5)binlog_row_image:针对binlog_format='row'格式来设置记录的日志范围(默认full,minimal,noblob)
(6)binlog_gtid_simple_recovery:在主从复制时有影响,默认为on,如果主从复制计算gtid出错,改为off.
  #在重启/清理binlog的时候,只需要打开最早的和最晚的binlog来根据gtid对比,不需要打开所有文件。
#好处:可以通过这2个文件来计算当前的gtid来进行复制。 【1.5】flush disk相关的
写binlog流程如下:
# 数据操作buffer pool > binlog buffer > file system buffer > commit > binlog file
在写binlog file之前,commit有3种模式,分别是:0,1,N
sync_binlog=0:mysql不会主动同步Binlog内容到磁盘文件中,而是依赖操作系统刷新文件的机会刷binlog file.一般是1S/次
sync_binlog=1:默认值,mysql主动刷新file system buffer到磁盘上的binlog file中,每1次commit,就主动fsync一次。
sync_binlog=N:非0非1,mysql主动刷新file system buffer到磁盘上的binlog file中,每N次commit,就主动fsync一次。 【1.6】数据库先写redo log还是先写binlog?
答案:先写redo LOG,再写binlog。如果2个有任一失败,就会回滚。
sync_binlog配合另一个参数innodb_flush_log_at_trx_commit;
如果都是1,数据库挂了以后,最多只丢一条一句或一个事务的数据;
show variables like 'innodb_flush_log_at_trx_commit';
但会影响性能,只能说在数据要求非常高的场景下使用。

(4.6)mysql备份还原——深入解析二进制日志(2)binlog参数配置解析的更多相关文章

  1. mysql导出csv/sql/newTable/txt的方法,mysql的导入txt/sql方法...mysql备份恢复mysqlhotcopy、二进制日志binlog、直接备份文件、备份策略、灾难恢复.....................................................

    mysql备份表结构和数据 方法一. Create table new_table_nam备份到新表:MYSQL不支持: Select * Into new_table_name from old_t ...

  2. (4.5)mysql备份还原——深入解析二进制日志(1)binlog的3种工作模式与配置

    (4.5)mysql备份还原——深入解析二进制日志(binlog) 关键词:二进制日志,binlog日志 0.建议 (1)不建议随便去修改binlog格式(数据库级别) (2)binlog日志的清理 ...

  3. (4.7)mysql备份还原——深入解析二进制日志(3)binlog的三种日志记录模式详解

    关键词:binlog模式,binlog,二进制日志,binlog日志 目录概述 0.binlog概述 查看binlog日志参数设置: show variables like '%log_bin%'; ...

  4. (4.3)mysql备份还原——mysql备份策略

    (4.3)mysql备份还原——mysql备份策略 1.指定备份策略时需要考虑的点 [1.1]备份周期:2次备份间隔时长 [1.2]备份方式:在备份周期中,使用什么备份方式.备份模式 [1.3]实现方 ...

  5. 基于xtrabackup实现mysql备份还原

    简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...

  6. (4.8)mysql备份还原——binlog查看工具之show binlog的使用

    (4.8)mysql备份还原——binlog查看工具之mysqlbinlog及show binlog的使用 关键词:show binlog,mysql binlog查看,二进制文件查看,binlog查 ...

  7. (4.1)mysql备份还原——mysql常见故障

    (4.1)mysql备份还原——mysql常见故障 1.常见故障类型 在数据库环境中,常见故障类型: 语句失败,用户进程失败,用户错误 实例失败,介质故障,网络故障 其中最严重的故障主要是用户错误和介 ...

  8. MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...

  9. MySQL二进制日志文件Binlog的三种格式以及对应的主从复制中三种技术

    二进制日志文件Binlog的格式主要有三种: 1.Statement:基于SQL语句级别的Binlog,每条修改数据的SQL都会保存到Binlog里面. 2.ROW:基于行级别,每一行数据的变化都会记 ...

随机推荐

  1. Python实现无向图最短路径

    一心想学习算法,很少去真正静下心来去研究,前几天趁着周末去了解了最短路径的资料,用python写了一个最短路径算法.算法是基于带权无向图去寻找两个点之间的最短路径,数据存储用邻接矩阵记录.首先画出一幅 ...

  2. Springboot学习笔记(六)-配置化注入

    前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...

  3. SqlServer 数据去重

    找出所有不重复的数据 SELECT [Id] ,[Name] ,[Mobile] ,[City] ,[Counter] ,[utm_source] ,[utm_medium] ,[utm_campai ...

  4. [React] 08 - Tutorial: evolution of code-behind

    有了七篇基础学习,了解相关的知识体系,之后便是系统地再来一次. [React] 01 - Intro: javaScript library for building user interfaces ...

  5. 04单例模式Singleton

    一.什么是单例模式 单例模式是一种对象创建型模式,使用单例模式, 可以保证为一个类只生成唯一的实例对象.也就是说, 在整个程序空间中,该类只存在一个实例对象. 其实,GoF对单例模式的定义是:保证一个 ...

  6. PHP-CLI环境变量的设置和读取

    http://luokr.com/p/30 通常我们在维护PHP线上项目的时候,为了隔离配置和代码,会使用fastcgi_param的形式将环境变量定义在Nginx的配置文件中(Apache可以使用S ...

  7. Android开发训练之第五章第六节——Transferring Data Using Sync Adapters

    Transferring Data Using Sync Adapters GET STARTED DEPENDENCIES AND PREREQUISITES Android 2.1 (API Le ...

  8. 服务器中了蠕虫病毒Wannamine2.0小记

    近期用户反馈某台服务器总感觉性能不是很好存在卡顿,于是今天远程上去分析. 打开任务管理器发现CPU使用率非常低,内存使用也在接受范围内(10/64G).不过我有一个偏好就是不喜欢用系统自带的任务管理器 ...

  9. 【BZOJ5210】最大连通子块和 树剖线段树+动态DP

    [BZOJ5210]最大连通子块和 Description 给出一棵n个点.以1为根的有根树,点有点权.要求支持如下两种操作: M x y:将点x的点权改为y: Q x:求以x为根的子树的最大连通子块 ...

  10. mysql学习之索引

    首先,看一个例子,有一张大表,记录数超过1000,SELECT * FROM student WHERE name='xinan'; 如果没有索引,查找程序就得从头查找,很费时间,表越大越费时间.建立 ...