当前位置: 首页 > 编程日记 > 正文

mysql日志文件相关的配置【2】

1、二进制日志是什么?

mysql 的二进制日志用于记录数据库上做的变更、

2、二进制日志什么时间写到磁盘

1、总的来说二进制日志会在释放锁之前就写入磁盘、也就是说在commit完成之前;client还没发送commit这个时候mysql并不把binlog写入磁盘、

别一方面mysql保证在commit完成之前会把二进制日志写入磁盘。

2、如果表不支持事务、那么二进制日志会在执行语句的一开始就写入磁盘。

3、对于innodb表在client没有发送commit的时候、所有的执行结果将会被cache住;当commit语句下达到mysql时,mysql会马上写入二进制日志。

4、由1+2+3可以看出来二进制日志只的顺序就是事务commit的顺序。

3、binlog_cache_size=【缓存大小】

二进制日志写缓存的大小

4、max_binlog_cache_size=【最大缓存大小】

如果单个事务的二进制日志的大小大于这个值、那么这个事务就会被回滚。

5、log_bin=【二进制文件的全路径】

这个参数用于指定二进制日志文件的路径、同时还有另一层意思、如果这个参数没有被设置那么表示不开启二进制日志。

6、max_binlog_sizse=【单个二进制日志文件的最大大小】

这个参数用于控制单个二进制文件的最大大小、当然你也有可能看到二进制日志会比这个设定要大、是因为一个事务只会记录在一个

文件中、不会刻意追求文件大小固定而把一个事务分别写入两个文件中去。

7、sql_log_bin=【0 | 1】

这个参数控制当前session 的SQL语句是否写入二进制日志

8、binlog_checksum=【1 | 0 】

默认情况下mysql在记录二进制日志时会把事件的长度也写进去、通过分析写入的长度值与真正的长度值是否相等、来确定

二进制日志是否被正确的写入;然而这种通过事件长度来检验二进制日志是否正确的方法,强度不高;开启这个参数后就可以

通过检验和来完成检验。

9、master_verify_checksum=【1 | 0 】

设置在master的reading back阶段是否采用checksum的方案来校验

10、slave_sql_verify_checksum =【1 | 0 】

  默认情况下slave的IO_thread会通过事件长度来校验二进制日志的正确性、slave_sql_verify_checksum 用于控制IO_thread的校验方式

11、binlog_do_db=【数据库名】

  用一个例子做为说明:如binlog_do_db=master 那么只有在你use master 之后的语句才会记录到二进制日志中去;也就是说只有在

  select database(); 返回的是master的情况下才会记录二进制日志。

  注意1:就算是你的SQL语句操作的是别的库、也会被记录的。如:insert into test.t(x) values(1);虽然是操作的test库,但是还是会记录二进制日志

  注意2:不一定你所执行的所有写入特性的SQL都会被记录。如:create database db001;

  

12、binlog_ignore_db

  正好于binlog_do_db的过滤规则相反;

13、replication_do_db

  于binlog_do_db相近,只是它起作用的地方是在mysql群集环境中的slave端

14、replication_ignore_db

  于replication_do_db相反

15、发现一个问题

  show variables like xxx ; 语句并看不到binlog_do_db、binlog_ignore_db、replicate_do_db、replicate_ignore_db这四个参数

16、log_slave_updates=【1 | 0】

  通常来说发生在master 的变更经由replication传播到slave ;进而引起slave的变更、那么问题就来了slave上由replication所引起的变更是不是也要记录

  到它的binlog日志中去呢?如果要记录的话就把log_slave_updates=1

17、sync_binlog=【0、1、2、3、... ...】

  由2可以知道binlog的写入与commit是两个不同的操作、sync_binlog用于向mysql说明是不是每一次commit都把二进制日志写入磁盘。

  1、sync_binlog=0 不对二进制日志刷盘做什么限制、把这个刷盘操作交给linux系统。

  2、sync_binlog=1 每次commit都对应一次刷盘操作。

  3、sync_binlog=【{n | n>=2}】 mysql会累计n个commit操作后才刷一次盘。

18、innodb_support_xa=【1 | 0 】

  还是再说一下二进制日志刷盘(二进制日志从缓存写到磁盘文件);mysql大致上可以分成3个层次

  1、connection 层 这个位于mysql是上层;这个层用于管理client的连接。

  2、sql 层 像词发分析、SQL执行计划的生成和优化都在这一层解决。

  3、store engine层 存储引擎层

  一个commit操作是mysql各个层之间的穿越顺序是connection layer --> sql layer --> strore engine layer ;当sql layer 收到commit的时候就开始

  把二进制日志写入磁盘了(我这里假设sync_binlog=1);之后是stroe engine layer 收到commit 这个commit在store engine layer 也会触发相应的刷

  盘操作(通常来说这个store engine layer 上的实现会是innodb); 下面我们把问题深入一点,假设sql layer上的操作成功了,之后mysql被kill了,也就是说

  stroe engine layer 上的commit没有正确的执行完成;然后再启动mysql这个时候由于之前在store engine layer上的操作并没有被commit所以它会被

  回滚掉、所以这样就造成了binlog中的记录与innodb中的数据不一致的情况;为了使两者是一致的我们要把innodb_support_xa=1

19、binlog_format=【row | statement | mixed 】

  1、二进制日志里面记录的是什么?

      记录的是数据库上的变更、或是可能的变更(如一条update语句影响了0行)

  2、二进制日志可以怎么记录?

      1、一种可能的记法是直接把SQL语句记上去如:udpate user set birthday='xxxx' where id =2048;

      2、别一种可能的记法类似于:把表user里id=2048的那一行的birthday设置为'xxxx';

  3、这两种记录方式进一步认识?

      1、第一种记录方式、slave就相当到是把主库上执行的SQL语句重新执行一遍;想想这种情况一条SQL有非常复杂的逻辑,但是最后只改了一行数据。

      2、第二种记录方式、slave并没有去执行主库上执行的SQL而是直接把结果改成主库的样子。

  4、看起来十分完美、但是事实上并不是这么一回事

    1、在master-->slave的环境下、statement可能会引起主从的不一致问题;如果在库上的时间是1号、而在slave主机上的时间是2号;主库上执行

      了一条插入当前时间的操作、总的来看master & slave 上执行的SQL语句是一样的,但是它们自身的时间不一样使都它们的结果不一样、这样

      就造成了主从的不一致。

    2、在master-->slave环境下、row虽然消除了主从不一致的问题、但是它的使用上有一些要注意的地方、如一定要给表加上主键:由于row是基于

      行的、如果mysql能越快的定位行,那么它执行的就越快;有人会问“我给表上加上相应的索引还不行吗”,我告诉你啊,这还真不行,一定要是主

      键,我见过一个delete 操作引起主从延时1周的。以下是mysql官方文档上的一段

      

3、那有没有把这两个结合一下的呢?这个还真的有它就是mixed模式。mysql从来没有把这个模式设置为默认模式,我也不知道是出于什么

考虑

相关文章:

【PAT (Basic Level) 】1028 人口普查 (20 分)

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以…

SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示

深圳市展嵘电子有限公司有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98SW6206 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持AABCL 口任意口快充。其集成了5A高效率开关充电,20W高效率同步升压输出,PPS/PD/Q…

bash脚本【一】——批量处理文件

Bash脚本2.0 #!/bin/bashoutput_root_dir"0723weixin" data_root_dir"D:/data/"$output_root_dir config_dir"config"# speckle_name"SPEACKLEIMAGE.bmp" # ir_name"IRIMAGE.bmp" # rgb_name"RGBIMAGE.jpg" # co…

【PAT (Basic Level) 】1030 完美数列 (25 分)

给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。 【输入格式】&…

运营商劫持处理

测试URL:因近期发现长宽资源经常出现被劫持和转发错误的现象。解决办法如下:1、把转发列表写到named.conf文件里,更新我们的转发ip2、然后编写策略针对我们要去的域名从BGP出口出去,防止NAT。x.x.x.x.com,(…

oracle维护数据的完整性

转自:https://www.cnblogs.com/roger112/p/7722376.html 介绍: 数据的完整性用于确保数据库数据遵从一定的商业的逻辑规则。在oracle中,数据完整性可以使用约束、触发器、应用程序(过程、函数)三种方法来实现,在这三种方法中&…

MATLAB【五】———— matlab 调用C++生成exe文件,高斯核函数

两种方式调用C生成的exe文件, 语法: status system(command) [status,cmdout] system(command) [status,cmdout] system(command,-echo) 说明 status system(command) 调用操作系统执行指定的命令。操作会等待命令执行完毕,然后再将命令…

REACT day 1

https://facebook.github.io/react/ A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES Declarative views make your code more predictable and easier to debug. React是Facebook在2013年发布的一个前端框架,而如今的React俨然已经演变成一个前端生态&#xff…

win10+Chrome浏览器截长图方法

本方法亲测可行,操作系统为win10,其他操作系统没有试过。 部分内容基于https://blog.csdn.net/ianly123/article/details/80565614并进行修正。 打开 Chrome 浏览器,进入需要截图的网站页面。打开开发者工具:在页面任何地方点击…

如何打造一流的视觉AI技术

本次分享主要分以下几个部分:首先简要介绍一下计算机视觉技术的相关背景,然后结合格灵深瞳的实践,从算法研发、训练平台、智能数据处理、异构计算等几个方面着重介绍如何打造一流的视觉AI技术,最后介绍格灵深瞳在相关技术落地方面…

MATLAB【六】 ———— matlab 随机散斑模拟

%% %input for image size(NX,NY) <散斑图大小&#xff08;像素&#xff09;> NX 1280; NY 800; %input for numble of speckles(S)<散斑数量> S 9226; %输入的散斑大小 a 4; %input for peak intensity of each speckle(I0)<散斑峰值强度> I0 1; %input …

【Python】zip函数

zip()函数用于将可迭代对象作为参数&#xff0c;将对象中对应的元素打包成一个个元组&#xff0c;然后返回这些由元组组成的列表。 如果各个迭代器的元素不一致&#xff0c;则返回列表长度与最短的对象相同。 利用*号操作符&#xff0c;可将元组解压为列表。 >>> a …

CentOS 7.0,启用iptables防火墙

CentOS 7.0默认使用的是firewall作为防火墙&#xff0c;这里改为iptables防火墙。1、关闭firewall&#xff1a;systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动2、安装iptables防火墙yum install iptables-services…

手撸 webpack4.x 配置(一)

现在的前端开发框架 &#xff0c;都绕不开 webpack 打包 。 但绝大数前端开发人员 基本都是用 脚手架 自动生成 一套开发环境 如&#xff1a; vue-cli , create-react-app等 , 但开发中总会遇到各种问题 &#xff0c;基本都是 webpack 配置问题 &#xff0c; 每次遇到基本都是…

MATLAB【七】———— matlab 高斯核使用,超像素图像模拟,矩阵转图像,深度相机模型实践实现

深度模型&#xff0c;图片转稀疏矩阵&#xff0c;稀疏矩阵转图片 %% mat to 2array temp_speckle ref_speckle; [row_index,col_index,v]find(temp_speckle); obj_matrix [row_index,col_index]; [obj_matrix_height,obj_matrix_width] size(obj_matrix);%% depth camera m…

jsp 出现cannot be resolved to a type问题解决办法

&#xff08;1&#xff09;检查<% page import>是否导入了相关的包。若是没有则需导入 &#xff08;2&#xff09;若导入相应的包后问题仍然存在则需创建相关的servlet转载于:https://www.cnblogs.com/wth21-1314/p/6126655.html

U盘中毒了?教你如何删除System Volume Information这个顽固文件夹

不得不说cmd命令很好用呢。最近我的U盘中毒了&#xff0c;格式化都删除不了System Volume Information这个顽固的文件夹&#xff0c;真心伤不起哇&#xff01;还好现在解决了问题。看来以后得好好对待U盘&#xff0c;不能乱用了。本篇文章教大家如何删除System Volume Informat…

69亿美元英伟达史上最大收购!这家基金又赢了

。另一方面&#xff0c;在虚拟货币的浪潮告一段落之后&#xff0c;英伟达需要给增速放缓的数据中心业务注入一枚强心剂。 有意思的是&#xff0c;英伟达对Mellanox的收购也成就了国际知名维权对冲基金Starboard Value LP的又一次投资胜利。 击败微软、英特尔&#xff0c;交易…

基础数据结构【一】————数组

二维数组相乘&#xff0c;矩阵相乘&#xff0c; #include <iostream> using namespace std;void MatrixMultiply(int*, int*, int*, int, int, int); int main() {int M, N, P;int i, j;//矩阵A部分 cout << "请输入矩阵A的维数(M,N): " << endl;…

Fragment 和 FragmentActivity的使用

Fragment 和 FragmentActivity的使用 http://blog.csdn.net/izy0001989624/article/details/17072211转载于:https://www.cnblogs.com/as3lib/p/6126761.html

win10 VMware15 安装 CentOS6.4 64位(慢慢弄吧,别急)

参考&#xff1a;CentOS 6.4安装&#xff08;超级详细图解教程&#xff09; 可以都不勾&#xff0c;有需要&#xff0c;以后使用中有需要再手动安装 除了KDE&#xff0c;其他都选就可以了 系统管理、虚拟化、负载平衡器、高可用性可以都不选

Nginx网站常见的跳转配置实例

相信大家在日常运维工作中如果你用到nginx作为前端反向代理服务器的话&#xff0c;你会对nginx的rewrite又爱又恨&#xff0c;爱它是因为你搞定了它&#xff0c;完成了开发人员的跳转需求后你会觉得很爽&#xff0c;觉得真的很强大&#xff0c;恨它是因为当一些稀奇古怪跳转的需…

基础数据结构【二】————动态数组,单向链表及链表的反转

DEMO1&#xff1a; 动态分配变量&#xff08;链表&#xff0c;而静态数组是线性表&#xff0c;意味着动态数组访问和遍历复杂度为O&#xff08;n&#xff09;,而插入和删除复杂度为O&#xff08;1&#xff09;&#xff0c;而静态数组线性表则完全相反&#xff09; int* in…

VMware15克隆虚拟机Centos

在克隆虚拟机之前&#xff0c;我们需要了解以下文件&#xff1a; 1、/etc/udev/rules.d/70-persistent-net.rules 这是网卡有关信息的配置文件&#xff0c;我们可以先查看一下master的网卡信息&#xff08;当然也可以用ifconfig命令查看&#xff09; 要注意的是网卡名称以及…

EXPDP 时ORA-27054 问题处置

现象&#xff1a;[oracleoracle1 ~]$ expdp xian/xian schemasxian directorydumpdir dumpfilexian.dmp LOGFILExian.logExport: Release 10.2.0.5.0 - 64bit Production on Friday, 02 December, 2016 20:19:48Copyright (c) 2003, 2007, Oracle. All rights reserved.Connec…

OSC源创会往期图文回顾链接地址收藏

为什么80%的码农都做不了架构师&#xff1f;>>> 格式&#xff1a;源创会报名链接地址 - 源创会结束后图文回顾链接地址 【深圳】第1期】- 图文回顾【广州】第2期】- 图文回顾【北京】第3期】- 图文回顾【珠海】第4期】- 图文回顾【深圳】第5期】- 图文回顾--------…

ionic + cordova+angularJs 搭建的H5 App完整版总结

为期半个月的项目实践开发&#xff0c;已完整告一段落&#xff0c;团队小组获得第一名&#xff0c;辛苦总算没有白费&#xff0c;想起有一天晚上&#xff0c;整个小组的人&#xff0c;联调到12点才从公司回去&#xff0c;真是心酸。这里总结一下&#xff0c;项目过程中遇到的问…

基础数据结构【三】————老鼠走迷宫问题————堆栈应用

假设&#xff1a;老鼠在一个二维地图中i行走&#xff0c;地图中大部分路径被墙阻断&#xff0c;无法前进。老鼠可以按照尝试错误的方法找到出口。只是&#xff0c;这只老鼠必须具备走错路时候就退回来&#xff0c;并且把走过的路记下来&#xff0c;避免下次走重复路&#xff0c…

eclipse Debug中step into功能失灵的问题

step into 和 step over功能一样&#xff0c;无法进入方法内部&#xff0c;解决方法如下&#xff1a; 需要使用jdk中的jre&#xff0c;而不是独立安装的jre 再次Debug&#xff0c;当运行到断点的时候&#xff0c;点击step into&#xff08;F5&#xff09;就可以看见println函数…

Linux 基金会宣布红队项目,致力于孵化开源安全工具

百度智能云 云生态狂欢季 热门云产品1折起>>> 谁都想软件有着很高的安全性吧。毕竟&#xff0c;每一天都会有不一样的安全漏洞&#xff0c;从糟糕软件的沼泽中冒出来。 在近期举办的开源领导力峰会上&#xff0c;Linux 基金会宣布了新的红队项目&#xff08;Red Tea…