复制相关参数学习笔记--master上的参数

特别声明:

所有的过滤规则不建议在主库上设置。

 

server_id

是一个整数,范围:1 至 power(2,32)-1 之间。

推荐使用端口号+ip最后一位的方式。

唯一区别ID,同一个集群不可重复,从5.6开始可动态修改。

server_uuid

唯一区别ID,同一个集群不可重复,从5.6开始可动态修改。

从5.6开始,系统根据函数自动生成唯一的一个值,默认存放在$datadir/auto.cnf  ,MySQL启动时,会判断auto.cnf文件是否存在,如果不存在auto.cnf文件就会创建。在gtid中用此参数标识一个server,而不是server_id。

cat auto.cnf

[auto]

server-uuid=b16b53da-c1a1-11e6-915f-000c29355816

log_bin_index

mysql> show variables like ‘log_bin_index‘;

+---------------+---------------------------------------+

| Variable_name | Value                                 |

+---------------+---------------------------------------+

| log_bin_index | /data/mysql/3306/logs/mysql-bin.index |

+---------------+---------------------------------------+

此参数与log_bin_basename 参数文件做的一个前缀。

mysql> show variables like ‘log_bin_basename‘;

+------------------+---------------------------------+

| Variable_name    | Value                           |

+------------------+---------------------------------+

| log_bin_basename | /data/mysql/3306/logs/mysql-bin |

+------------------+---------------------------------+

此文件( /data/mysql/3306/logs/mysql-bin.index)可用vi等工具手工编辑。

cat /data/mysql/3306/logs/mysql-bin.index

/data/mysql/3306/logs/mysql-bin.000003

/data/mysql/3306/logs/mysql-bin.000004

/data/mysql/3306/logs/mysql-bin.000005

binlog_format

binlog日志格式:statement,row,mixed三种。

可动态修改。

生成环境建议使用row格式。

binlog_cache_size

binlog写入bugger。

建议设置值在1M-4M之间。

max_binlog_size

限制单个binlog大小。

默认是1G,在生产环境binlog文件生成要两分钟以上,此值推荐使用128M或者256M。

可动态修改。

sync_binlog

多少个SQL之后,调用fdatasync()函数刷新binlog到disk。

(fsync()和fdatasync()的区别是什么?fsync是完全刷新到磁盘,fdatasync值刷新数据,不刷新metedata。)

可动态修改。

交易系统为了安全,建议设置此值为1 。

expire_logs_days

binlog保存多少天。

可动态修改。

推荐此值设置为7天。

log_bin_trust_function_creators

开启binlog时,是否允许创建存储过程(除非有super权限,或者指定deterministic、reads sql data、no sql)

可动态修改。

推荐开启。

log_awrnings

如果政治设置的大于1,会在错误日志里看到异常断开的连接(Aborted connection )或者是被拒绝的请求。

binlog_row_image

5.6.2后出现。

full:

记录所有的行信息,和以前没有区别。

minimal:

只记录要修改的列的记录

noblob:

记录除了BLOB和TEXT之外的所有字段

注意,当binlog_format = statement的时候,不起作用;

= row的时候,完美支持;

= mixed 的时候,根据实际情况决定;

binlog_rows_query_log_events

5.6.2后出现。

在row模式下开启该参数,将把sql语句打印到binlog日志里面.默认是0(off);

虽然将语句放入了binlog,但不会执行这个sql,就相当于注释一样.但对于dba来说,在查看binlog的时候,很有用处.

基于MySQL 5.6 GTID的Crash Recover 

在5.6.23版本后才稳定。

传统复制也是支持的(前提是master_info_repository,relay_log_info_repository  两个值改为table )。

binlog_gtid_simple_recovery( 5.6.21 -5.6.23) 这个功能刚出来不久,在挂掉时,可以找到自己同步到哪里,完成的同步的GTID上接着同步,重新拉一下日志。

如果没启用这个特性,会从binlog全部搜索一下,如果日志很多,需要占用的时间比较多。

binlogging_impossable_mode ->binlog_error_action

binlog_error_action 当不能写binlog时,可以爆出来错,默认没开启:IGNORE_ERROR。

特别说明

5.6.5,5.7.5以后binlog v2格式,引入了GTID,主库是5.5从库是5.6是OK的,但是5.6到5.5或者5.7到5.6是同步不了的,会报错,如果相兼容的话,需要设置两个参数(分别是binlog_checksum=none和log_bin_use_v1_row_events=on)

binlog-do-db

binlog记录db,除此外,其他db上的binlog都不记录,存在风险。

use mysql;update db1.t1 set user=‘user2‘ where id=1; 这个SQL会记录到binlog里面么?

SBR模式下,这个SQL就不会记录binlog,会导致主从不一致,而在RBR/MBR模式下,则会被记录。

类似CREATE TABLE mydb3.mytable1 like mytable1,则会一如既然的记录binlog,只有INSERT/UPDATE/DELETE不会被记录。

binlog-ignore-db

和binlog-do-db规则相反。

se mysql;update db1.t1 set user=‘user2‘ where id=1; 这个SQL会记录到binlog里面么?

SBR模式下,这个SQL就不会记录binlog,会导致主从不一致,而在RBR/MBR模式下,则会被记录。

类似CREATE TABLE mydb3.mytable1 like mytable1,则会一如既然的记录binlog,只有INSERT/UPDATE/DELETE不会被记录。

max_binlog_cache_size

binlog最大的cache size,有大SQL写入时需要用到,或者大数据LOAD DATA时。

binlog_stmt_cache_size

用于cache那些事务中非事务表产生的SQL语句,如果经常在事务中涉及到非事务表,需要加大该参数。

binlog_direct_non_transactional_updates 

事务中既有事务表也有非事务表的情况下,发生数据变更时,非事务表会直接写binlog,而不是也和事务表一样缓存在buffer中。

这个参数只影响SBR模式,RBR/MBR不影响。

gtid_mode

用于控制是否启用GTID。

如果设置成ON,则必须是log_bin,log_slave_updates,enforce_gtid_consistency 也要启用。

enforce_gtid_consistency

如果开启了GTID必须把这个参数选项打开。

用于控制只有是事务安全的语句才能被记录到log中。

gtid_next

5.6.5后出现。

用来表示下一个要执行的事务,设置这个变量需要由SUPER权限。

gtid_purged

用于指定哪个事务从binlog忽悠了,reset master这个值会被清空。

gtid_executed

执行到gtid号及所有执行过gtid号,和executed_gtid_set(show master status,show slave status )输出的这列意思是一样的。

reset master这个值会被清空。

时间: 2024-12-29 17:37:44

复制相关参数学习笔记--master上的参数的相关文章

复制相关参数学习笔记--slave上的参数

server_id server_uuid relay_log io_thread 读取过来的本地日志. relaylog文件名前缀,可以是全路径. relay_log_index relaylog索引文件前缀名,和realy_log一样,也可以是fullpath. 不可动态修改. read_only 除非有super权限,否则无法修改数据,不过不影响自主创建临时表.ANALYZE TABLE.OPTIMIZE TABLE也不影响. 可动态修改. replication_same_server_

端口相关知识学习笔记

端口相关知识学习笔记 端口相关知识学习笔记 本周主要精力是放在挂接上,所以知识矩阵的学习回归到根本上,所以这周发的学习笔记是关于计算机端口的相关介绍. 有过一些黑客攻击方面知识的读者都会知道,其实那些所谓的黑客并不是像人们想象那样从天而降,而是实实在在从您的计算机"大门"中自由出入.计算机的" 大门"就是我们平常所说的"端口",它包括计算机的物理端口,如计算机的串口.并口.输入/输出设备以及适配器接口等(这些端口都是可见的),但更多的是不可见的软

【HTML】【学习】 Canvas学习笔记【上】

Canvas是HTML新增的开发跨平台动画和游戏的标准解决方案,能够实现对图像和视频进行像素级操作. 一.在页面中添加canvas元素 就像添加一个普通div一样,canvas的添加方式为: <canvas id = "myCanvas" width = "200px" height = "100px">不支持时显示的部分</canvas> 可以用对div添加样式的方法使用CSS对Canvas添加样式 二.使用Canvas

【HTML】【学习】 2、Canvas学习笔记【上】

Canvas是HTML新增的开发跨平台动画和游戏的标准解决方案,能够实现对图像和视频进行像素级操作. 一.在页面中添加canvas元素 就像添加一个普通div一样,canvas的添加方式为: <canvas id = "myCanvas" width = "200px" height = "100px">不支持时显示的部分</canvas> 可以用对div添加样式的方法使用CSS对Canvas添加样式 二.使用Canvas

Linux学习笔记 -- 为 Shell 传递参数

我们可以在执行 Shell 脚本时,可以向脚本传递参数.脚本内获取参数的格式为:$n.(n 代表一个数字,0为所执行的shell脚本名称,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……) 举例说明 我们先编写一个脚本,名字为test.sh,她的内容如下: #!/bin/bash echo "Shell 输出脚本名称及参数"; echo "执行的脚本名:$0"; echo "第一个参数为:$1"; echo "第二个

react-native学习笔记--史上最详细Windows版本搭建安装React Native环境配置

参考:http://www.lcode.org/react-native/ React native中文网:http://reactnative.cn/docs/0.23/android-setup.html#content 1.安装Jdk(最好默认安装路径尽量别改) http://jingyan.baidu.com/article/a24b33cd59b58e19fe002bb9.html http://www.jb51.net/article/36811.htm(三个环境变量都配置)  Ja

For和Set参数学习笔记

Batch tips, for /f参数用法:1.1 "delims=*"等号左右空格是有意义的. 1.2 option的默认参数是"delims= ",故默认参数情况一下,读一行参数遇到空格就不读了.需要把整行读完的话,我们可以使delims的参数为最后结尾的字符. set参数小结:2.1 set i="abc" 给i赋值字符串.如:set i="abc"echo %i%if %i%=="abc" (ec

Struts2 学习笔记--Action Method--接收参数

struts2中的路径问题 注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp的根路径,即MyEclipse web项目中的WebRoot路径. 总结: struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径 . 虽然可以用redirect方式解决,但redirect方式并非必要. 解决办法非常简单,统一使用绝对路径. (在jsp中用request.getContextRoot方式来拿到weba

Python学习笔记5:函数参数详解

一.函数的定义格式: def 函数名(参数列表): 函数体 def fun1(a, b, c): return a + b + c 二.位置传递:位置对应 print(fun1(3 ,2 ,1)) 输出: 6 三.关键字传递:位置参数要出现在关键字参数之前 print(fun1(3 ,c = 1, b = 2)) 输出: 6 四.参数默认值:可以给参数赋予默认值(default) def fun2(a, b, c = 100): return a + b + c print(fun2(1, 10