zoukankan      html  css  js  c++  java
  • MySQL5.6复制技术(4)-MySQL主从复制过滤参数

     复制的过滤主要有2种方式:

    1. 在主服务器在把事件从进二制日志中过滤掉,相关的参数是:binlog_do_db和binlog_ignore_db。
    2. 在从服务器上把事件从中继日志中过滤掉,相关的参数是replicate_*。

    复制只能扩展读取,不能扩展写入,对数据进行分区可以进行扩展写入。

    复制的优化

    在mysql复制环境中,有8个参数可以让我们控制,需要复制或需要忽略不进行复制的DB或table分别为:

    下面二项需要在Master上设置:

    • Binlog_Do_DB:设定哪些数据库需要记录Binlog

    • Binlog_Ignore_DB:设定哪里数据库不需要记录Binlog

    优点是Master端的Binlog记录所带来的Io量减少,网络IO减少,还会让slave端的IO线程,SQL线程减少,从而大幅提高复制性能,

    缺点是mysql判断是否需要复制某个事件不是根据产生该事件的查询所在的DB,而是根据执行查询时刻所在的默认数据库(也就是登录时指定的库名或运行"use database"中指定的DB),只有当前默认DB和配置中所设定的DB完全吻合时IO线程才会将该事件读取给slave的IO线程.所以,如果在默认DB和设定须要复制的DB不一样的情况下改变了须要复制的DB中某个Table中的数据,该事件是不会被复制到Slave中去的,这样就会造成Slave端的数据和Master的数据不一致.同样,在默认的数据库下更改了不须要复制的数据库中的数据,则会被复制到slave端,当slave端并没有该数据库时,则会造成复制出错而停止。

    下面六项需要在slave上设置:

    • Replicate_Do_DB:设定需要复制的数据库,多个DB用逗号分隔

    • Replicate_Ignore_DB:设定可以忽略的数据库.

    • Replicate_Do_Table:设定需要复制的Table

    • Replicate_Ignore_Table:设定可以忽略的Table

    • Replicate_Wild_Do_Table:功能同Replicate_Do_Table,但可以带通配符来进行设置。

    • Replicate_Wild_Ignore_Table:功能同Replicate_Do_Table,功能同Replicate_Ignore_Table,可以带通配符。

    优点是在slave端设置复制过滤机制,可以保证不会出现因为默认的数据库问题而造成Slave和Master数据不一致或复制出错的问题.

    缺点是性能方面比在Master端差一些.原因在于:不管是否须要复制,事件都会被IO线程读取到Slave端,这样不仅增加了网络IO量,也给Slave端的IO线程增加了Relay Log的写入量。

    主从过滤的注意事项:

    使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错。

    如在Master(主)服务器上设置 replicate_do_db=test(my.conf中设置)

    use mysql;
    update test.table1 set ......

    那么Slave(从)服务器上第二句将不会被执行 

    如Master设置 replicate_ignore_db=mysql

    use mysql;
    update test.table1 set ......

    那么Slave上第二句会被忽略执行

    原因是设置replicate_do_db或replicate_ignore_db后,MySQL执行sql前检查的是当前默认数据库,所以跨库更新语句在Slave上会被忽略。

    可以在Slave上使用 replicate_wild_do_table 和 replicate_wild_ignore_table 来解决跨库更新的问题,如:

    replicate_wild_do_table=test.%

    replicate_wild_ignore_table=mysql.%

    这样就可以避免出现上述问题了

  • 相关阅读:
    VIM 配色方案,先保存一下
    ncurses库的介绍与安装
    win7 设置双屏壁纸
    3. Vim入门教程
    2. Vim 概念扫盲
    把Debian 设置中文环境
    静态代码块和构造代码块的区别
    jsp详解(3个指令、6个动作、9个内置对象、11个隐式对象)
    JVM虚拟机详解
    Java 的内置对象
  • 原文地址:https://www.cnblogs.com/ilifeilong/p/7202525.html
Copyright © 2011-2022 走看看