设为首页 收藏本站
查看: 1138|回复: 0

[经验分享] MySQL5.7备机(slave)启动参数

[复制链接]

尚未签到

发表于 2018-10-11 08:36:19 | 显示全部楼层 |阅读模式
  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>  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表:
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 FILTERREPLICATION_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语句起作用,对数据库中的其他对象例如存储程序不起作用。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-620166-1-1.html 上篇帖子: MySQL大表优化方案 下篇帖子: mysql配置——my.cnf配置讲解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表