阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL5.7备机(slave)启动参数

116次阅读
没有评论

共计 3431 个字符,预计需要花费 9 分钟才能阅读完成。

1,–log-slave-updates
  系统变量名:log_slave_updates
  一般情况下 slave 不会把从 master 接收到的 binlog 记录写入自己的 binlog,这个参数会使 slave 通过 SQL 线程把从 master 接受到的 binlog 写进自己的 binlog,但是前提是 slave 一定要开启自己的 binlog,此参数一般用于级联复制,例如需要 A 复制到 B,B 复制到 C,那么 B 就要开启此参数。
 
2,–master-info-file=file_name
  slave 记录的关于 master 信息的文件的名称,默认 master.info,在 datadir 下。
 
3,–max-relay-log-size=size
  系统变量名:max_relay_log_size
  自动轮流记录的中转日志文件的大小,如果设置为非 0,当中转日志文件的大小超过此值,则记录下一个中转日志文件,如果此值为 0(默认),则中转日志的大小由 max_binlog_size 决定。
 
4,–relay-log=file_name
  系统变量名:relay_log
  中转日志文件前缀名 (base name),对于默认的复制通道,默认值为 host_name-relay-bin,对于非默认的复制通道,默认值为 host_name-channel-relay-bin,这里 channel 为记录在中转日志的复制通道名称,如果这个文件名称前面没有绝对路径,则中转文件路径在 datadir 下,服务器创建中转文件的时候会在文件末尾添加一个数字的序号。如果指定了此参数但是没有指定参数的值,则文件名称取决于其他参数、参数的顺序以及是在命令行指定还是在配置文件指定。此参数还被用于生成中转日志索引文件,但是可以通过指定 –relay-log-index 参数进行覆盖。
  在下面几种情况下,此参数非常有用:
  1,创建独立于 master 名的中转日志文件。
  2,如果你想把中转日志放到别的地方而不是 datadir 下。
  3,提高通过在磁盘之间做负载均衡的速度
  可以从 relay_log_basename 系统变量获得中转日志文件的名称和路径。
 
5,–relay-log-index=file_name
  系统参数名称:relay_log_index
  中转日志后缀名,默认 host_name-relay-bin.index,在 datadir 目录下。
 
6,–relay-log-info-file=file_name
  用来记录中转日志信息的文件的名称。默认 relay-log.info,在 datadir 目录下。
 
7,–relay-log-purege={0|1}
  系统参数名称:relay_log_purge
  开启或关闭在不需要的时候自动删除中转日志。默认开启(1),这是个全局变量,可以通过
  SET GLOBAL relay_log_purge = N 动态设置。
 
8,–relay-log-recovery
  开启在服务器启动后立刻恢复中转日志。恢复进程会创建一个新的中转日志文件并且使 I / O 线程从 master 读取 binlog 写入此中转文件,使 SQL 线程读取此中转文件。此参数主要是为了防止 slave 宕机后 SQL 线程读取损坏的中转日志(如果这样的话有可能会导致数据和 master 不一致)。不过为了达到此目的还需要将 –relay-log-info-repository 参数设置为 TABLE(即以表的形式记录中转日志的信息) 以及开启 –relay-log-purege(默认开启)参数,此参数默认为 0,没有开启。当使用多线程复制的时候,有可能出现数据不连续的情况,如果开启此参数还是不能解决则可以通过如下命令解决:
  START SLAVE UNTILSQL_AFTER_MTS_GSPS,这样会使服务器处于更加连续的状态,然后执行 RESET SLAVE 删除中转日志。
 
9,–relay-log-space-limit=size
  系统变量名称:relay_log_space_limit
  设置所有中转日志文件的大小总和的上限 (单位:字节),如果设置为 0,意味着没有限制。在服务磁盘空间不大的情况这,这一参数非常有用,当中转文件大于此值的时候 I / O 线程停止从 master 读取 binlog,直到 SQL 线程最赶上并删除没用的中转日志。但是也不是绝对的,当 SQL 线程在删除中转日志前需要更多的事件的时候,I/ O 线程就会超出此值,否则就会导致死锁(SQL 线程和 I / O 线程互相等待),
另外此值不应该低于 –max-relay-log-size(当 –max-relay-log-size 为 0 的时候不应该低于 –max-binlog-size 的两倍)值的两倍。有这么一种情况,当 I / O 线程因超出 –relay-log-space-limit 的值而等待空闲磁盘的时候,但是 SQL 线程没有中转日志删除并且不能满足 I / O 线程,此时会暂时的轻质 I / O 忽略 –relay-log-space-limit。
 
10,–replicate-do-db=db_name
  在 slave 创建过滤器复制指定数据库,在 5.7.3 及以后的版本可以使用 CHANGE REPLICATION FILTER REPLICATION_DO_DB 命令创建,具体的复制细节在不同的 binlog 有不同的表现,具体如下:
  基于语句的复制(Statement-based replication): 告诉 SQL 线程那些库需要复制,如果多个数据库则使用多次此参数,SQL 线程根据默认数据库(USER DB1)来判断是否需要复制,如果 slave 设置为 –replicate-do-db=sales,那么下面的语句不会更新 sales 库中的 january 表:
12 USE prices;
UPDATE sales.january SET amount=amount+1000;

  因为 SQL 线程只根据默认数据库去判断是否需要复制,发现默认的数据库不是 sales 则下面的所有 SQL 都不会执行。
  基于行的复制(Row-based replication): 基于行的复制则与基于语句的复制恰恰相反,SQL 线程不关系默认库是什么只关心 sql 语句是否影响了指定的数据库,如果 slave 设置为 –replicate-do-db=sales,那么下面的语句会更新 sales 库中的 february 表:
USE prices;
UPDATE sales.february SET amount=amount+1000;

  这种策略会带来一些小副作用,例如下面的 sql:
USE db1;
UPDATE db1.table1 SET col1 = 10, db2.table2 SET col2 = 20;

  如果此时 slave 设置为 –replicate-do-db=db1,那么不只是 db1.table1 表会发生变化,db2.table2 也会发生变更。
 综上所述,考虑到数据库复制,跨数据库的 sql 一定要谨慎了。
 
11,–replicate-ignore-db=db_name
  在 slave 上创建过滤器,指定忽略哪些数据库,在 5.7.3 及以后的版本可以使用 CHANGE REPLICATION FILTER REPLICATION_IGNORE_DB 命令创建,不同格式的 binlog 的规则与 –replicate-do-db=db_name 类似。
 
12,–replicate-do-table=db_name.tbl_name
  创建表级别的复制过滤器,告诉 SQL 线程那个库的那些表需要复制,不管是跨数据库的更新还是默认数据的更新都起作用,在 5.7.3 及以后的版本可以使用 CHANGE REPLICATION FILTER REPLICATION_DO_TABLE 命令创建。只对 sql 语句起作用,对数据库中的其他对象例如存储程序不起作用。
 
13,–replicate-ignore-table=db_name.tbl_name
  创建忽略哪些表的过滤器,跨数据库更新依然有效,在 5.7.3 及以后的版本可以使用 CHANGE REPLICATION FILTER REPLICATION_IGNORE_TABLE 命令创建。只对 sql 语句起作用,对数据库中的其他对象例如存储程序不起作用。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139065.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计3431字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中