• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql过滤复制思路详解

    mysql过滤复制

    两种思路:

    所以主从过滤复制尽量不用,要用的也仅仅在从库上使用,因为要尽可能保证binlog的完整性

    主库上实现

    在Master 端为保证二进制日志的完整, 不使用二进制日志过滤。

    主库配置参数:

    #配置文件中添加
    
    binlog-do-db=db_name     #定义白名单,仅将制定数据库的相关操作记入二进制日志。如果主数据库崩溃,那么仅仅之恢复指定数据库的内容,不建议在主服务器端使用,这样导致日志不完整。
    binlog-ignore-db=db_name   #定义黑名单, 定义ignore 的库上发生的写操作将不会记录到二进制日志中

    从库上实现

    可以下载配置文件中

    REPLICATE_DO_DB = (db_list)		#过滤复制哪些库
    REPLICATE_IGNORE_DB = (db_list)		#不复制哪些库
    REPLICATE_DO_TABLE = (tbl_list)	#过滤表
    REPLICATE_IGNORE_TABLE = (tbl_list)	#忽略过滤表
    REPLICATE_WILD_DO_TABLE = (wild_tbl_list)	#根据正则匹配过滤表
    REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)	#根据正则匹配忽略过滤这些表
    REPLICATE_REWRITE_DB = (db_pair_list)
    #将源数据库的db1发生的语句重写到从库的db2
    CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB = ((db1, db2));

    语法:

    官网语法参考:https://dev.mysql.com/doc/refman/5.7/en/change-replication-filter.html

    CHANGE REPLICATION FILTER filter[, filter][, ...]
    
    filter: {
        REPLICATE_DO_DB = (db_list)
      | REPLICATE_IGNORE_DB = (db_list)
      | REPLICATE_DO_TABLE = (tbl_list)
      | REPLICATE_IGNORE_TABLE = (tbl_list)
      | REPLICATE_WILD_DO_TABLE = (wild_tbl_list)
      | REPLICATE_WILD_IGNORE_TABLE = (wild_tbl_list)
      | REPLICATE_REWRITE_DB = (db_pair_list)
    }
    #从库实现过滤复制
    
    ​	stop slave sql_thread;
    ​	change replication filter replicate_do_db=(db);
    ​	start slave sql_thread;
    
    #取消过滤复制
    ​	stop slave sql_thread;
    ​	change replication filter replicate_do_db=();
    ​	start slave sql_thread;

    一些问题

    主库删除某个表,从库没有这个表,导致从库sql线程关闭

    或者主从正常,从库不小心删除某个表,主库随后再删除这个表,从库又会去删除这个不存在的表,报错,导致sql线程退出

    解决方法:跳过这一步操作

    解决方案:从库sql线程跳过误操作的步骤
    
    stop slave sql_thread;
    
    #找到Executed_Gtid_Set执行到19
    set gtid_next='94fc1fbe-b7a0-11eb-b0a0-000c2969aba1:20'; 将gtid分配给下一个事务
    
    begin;commit;
    set gtid_next=automatic; 系统自动分配gtid
    start slave sql_thread;

    到此这篇关于mysql过滤复制思路详解的文章就介绍到这了,更多相关mysql过滤复制 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • MySQL 到底是如何做到多版本并发的?
    • MySQL 外键(FOREIGN KEY)用法案例详解
    • MySQL如何利用存储过程快速生成100万条数据详解
    • Python接口自动化浅析pymysql数据库操作流程
    • MySQL事务控制流与ACID特性
    • Mysql使用存储过程快速添加百万数据的示例代码
    • MySQL去除重叠时间求时间差和的实现
    • Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
    • MySQL的全局锁和表级锁的具体使用
    • 基于Redo Log和Undo Log的MySQL崩溃恢复解析
    上一篇:MySQL 外键(FOREIGN KEY)用法案例详解
    下一篇:MySQL 到底是如何做到多版本并发的
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql过滤复制思路详解 mysql,过滤,复制,思路,详解,