内容来源于网络

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

如设置 replicate_do_db=test
use mysql;
update test.table1 set ......
第二句将不会被执行

如设置 replicate_ignore_db=mysql
use mysql;
update test.table1 set ......
第二句会被忽略执行

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

可以使用replicate_wild_do_table和replicate_wild_ignore_table来代替

replicate_wild_do_table=test.%

replicate_wild_ignore_table=mysql.%

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

实验如下:

    1.  
      第一种情况
    2.  
      从库:
    3.  
      replicate-ignore-db = mysql
    4.  
      主库:
    5.  
      use mysql
    6.  
      CREATE TABLE test.testrepl1(
    7.  
      id int(5))ENGINE=INNODB DEFAULT CHARSET=UTF8;
    8.  
      从库不会同步。坑
    9.  
       
    10.  
      第二种情况
    11.  
      从库:
    12.  
      replicate-ignore-db = mysql
    13.  
       
    14.  
      主库:
    15.  
      use test
    16.  
      CREATE TABLE mysql.testrepl2(
    17.  
      id int(5))ENGINE=INNODB DEFAULT CHARSET=UTF8;
    18.  
      从库不会同步。
    19.  
       
    20.  
       
    21.  
      第三种情况
    22.  
      use test
    23.  
      update mysql.user set user = 'testuser5' where user = 'testuser1';
    24.  
      从库会同步
    25.  
       
    26.  
      第四种情况
    27.  
      grant all on *.* to testnowild@'%' identified by 'ge0513.hudie';
    28.  
      从库会同步
    29.  
       
    30.  
      第二大类:
    31.  
      Replicate_Wild_Ignore_Table: mysql.%
    32.  
       
    33.  
      第五种情况
    34.  
      主库:
    35.  
      use test
    36.  
      update mysql.user set user = 'testuser1' where user = 'testuser5';
    37.  
      从库没有同步。
    38.  
       
    39.  
      第六种情况
    40.  
      主库:
    41.  
      grant all on *.* to testwild@'%' identified by 'ge0513.hudie';
    42.  
      从库没有同步。

小心使用replicate_do_db和replicate_ignore_db的更多相关文章

  1. mysql中replicate_wild_do_table和replicate_do_db区别

    使用replicate_do_db和replicate_ignore_db时有一个隐患,跨库更新时会出错. 如在Master(主)服务器上设置 replicate_do_db=test(my.conf ...

  2. mysql 主主互备

    双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到 ...

  3. percona-toolkit 之 【pt-slave-delay】说明

    摘要: 在主从复制的架构中,正常情况下主上操作的记录也会在从上进行操作,虽说是异步复制,但操作会“实时”的同步到从.比如在主上不小心误操作了,还没等反应过来从上也会马上执行误操作,后期只有通过二进制或 ...

  4. show slave各项参数解释

    how slave status 各个参数的解释 -- mysql 分类: mysql基础2012-08-23 11:03 2315人阅读 评论(0) 收藏 举报 服务器sslfilesqltable ...

  5. 12-MySQL DBA笔记-MySQL复制

    第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...

  6. MySQL主从同步、读写分离配置步骤、问题解决笔记

    MySQL主从同步.读写分离配置步骤.问题解决笔记 根据要求配置MySQL主从备份.读写分离,结合网上的文档,对搭建的步骤和出现的问题以及解决的过程做了如下笔记:       现在使用的两台服务器已经 ...

  7. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  8. Mysql5.7.13主从同步(复制)配置

    主从同步是分布式mysql数据库相当重要的配置,现在我在虚拟机上完成主从配置,系统是CenterOS6.5,mysql版本是5.7.13 主服务器的ip是192.168.19.139 副服务器的ip是 ...

  9. MySQL学习笔记十七:复制特性

    一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...

随机推荐

  1. ST Link 调试问题总结

    用过ST Link调试工具的同事都应该知道,ST Link是一个很不错的调试工具,它具有小并且功能齐全,价格便宜等特点,现在市场上普遍是下面这两种ST Link, 但如果用的比较多,会发现有时候会存在 ...

  2. Java API 常用 详解

    Runtime类的使用:可以查看内存信息,系统变量,执行系统软件命令,备份数据库相关操作

  3. leetcode-Restore IP Addresses-ZZ

    http://www.cnblogs.com/remlostime/archive/2012/11/14/2770072.html class Solution { private: vector&l ...

  4. docker images存放路径指定

    steps: 1. mkdir /home/docker(你想要docker存放image的目录) 2. systemctl stop docker 3. vi /usr/lib/systemd/sy ...

  5. 实验5&期中考试后两题

    实验内容1: #include <iostream> #include <vector> #include <string> using namespace std ...

  6. 028class_part2

    1.成员修饰符    2.特殊成员   3.metaclass,类的祖宗   ###成员修饰符###公有和私有 #__author:_nbloser #date:2018/1/19 #私有类.对象成员 ...

  7. c++中左值的含义

    <<cpp primer plus 6th edition>>中的原文(Chapter 8 Adventures in Functions): What is an lvalu ...

  8. hdu 6169 gems gems gems【DP】

    题目链接:hdu 6169 gems gems gems Now there are n gems, each of which has its own value. Alice and Bob pl ...

  9. perl学习---控制:unless,until,next,redo,last

    1.1.unless unless 的含义是:除非条件为真,否则执行块中的代码,和if正好相反 unless($fred=~ /^[A-Z_]\w*$/i){ print “The value of ...

  10. 牛客网多校训练第一场 I - Substring(后缀数组 + 重复处理)

    链接: https://www.nowcoder.com/acm/contest/139/I 题意: 给出一个n(1≤n≤5e4)个字符的字符串s(si ∈ {a,b,c}),求最多可以从n*(n+1 ...