MySQL 5.5主从关于‘复制过滤’的深入探究
关于MySQL主从复制的过滤,例如通过binlog-ignore-db、replicate-do-db、replicate-wild-do-table等。如果不好好研究过这些过滤选
关于MySQL主从复制的过滤,例如通过binlog-ignore-db、replicate-do-db、replicate-wild-do-table等。如果不好好研究过这些过滤选项就用的话,是有可能造成主从数据不一致问题的。本文将参考MySQL-5.5官方文档并结合实验,和各位一起探讨下这里的各个设置。
以下内容参考5.5官方文档
binlog_format(STATEMENT,ROW,MIXED,5.5默认为STATEMENT)的设置会导致一些复制执行上的差异。
当使用MIXED格式时,binlog绝大多数情况也是以STATEMENT格式记录,只有在下列情况下才会切换到ROW格式:
1、 当时用UUID()函数时
2、 当一个或多个拥有AUTO_INCREMENT列的表被更新同时有‘trigger’或者‘stored function’被调用时
# MIXED对于‘trigger’和‘stored function’总是使用statement-based
3、 执行INSERT DELAYED时
4、 当视图里的某一部分需要row-based复制(例如UUID())时,创建该视图的语句被改为row-based
5、 使用用户自定义函数(UDF)时
6、 当某语句被判定为row-based,并且执行它的session需要用到临时表,则session下的所有子语句都将以ROW格式记录
7、 当使用USER(),CURRENT_USER()或者 CURRENT_USER
8、 当语句引用了一个或多个system variables。
9、 当使用LOAD_FILE()
所有DDL语句都是基于statements,不论binlog_format如何设置
复制双方binlog_format需一致,否则复制无法进行
Binlog格式影响到以下‘复制过滤’配置的行为
--binlog-do-db
--binlog-ignore-db=ljk
该选项的行为取决于binlog格式
Statement-based logging:当use ljk后(即当前库为ljk时),所有的语句不被记录进binlog
当登陆mysql后不use/或者use ljk之外的库,执行update ljk.table 依然会记录近binlog并复制
Row-based format:告诉服务器不记录任何ljk库下表的更改,无论当前在哪个库(即无论有无use语句,是否use ljk)
--replicate-do-db = ljk
该选项的行为取决于binlog格式
Statement-based replication:只有主库在use ljk 之后执行的语句才会被从库复制
无use语句或者use其他库后执行的语句均不被复制
Row-based replication:只有ljk库的更改会被复制(无论use哪个库或者是否use)
无论是否use或use哪个库,ljk库之外的变更都不会被复制
--replicate-ignore-db
总结:Statement-based跟当前use的库有关,Row-based更直接,只关心指定的库‘做或不做’。
还有以下两种参数可‘过滤复制’
以下两种选项只对表的更改有影响,库的复制不受这些参数影响(但是类似ljk.%这种,也会对库起作用)
--replicate-do-table
这两个选项在我的实验里跟描述不太一致,详细见下文实验结果
--replicate-wild-do-table = ljk.%
无论use ljk或use 其他库或不use,对ljk库的更新都能被复制,同时,其他库任何情况下均不会复制(包括建库建表操作)
--replicate-wild-ignore-table
根据以上,综合建议:对复制的过滤,采用replicate-wild-do-table/ replicate-wild-ignore-table,比较严格和明确
下面是实验过程(MySQL-5.5.39)
一、 主库添加“binlog-ignore-db = mysql”,从库不加过滤
库操作:
1. 主库不use,执行建库语句
mysql> create database kai;
从库复制
2. 主库use mysql,再执行
mysql> create database kai;
从库复制
在kai数据库执行建表操作:
1. 不use
create table kai.li (id int,name char(15));
从库复制
2. use mysql;
create table kai.li (id int,name char(15));
从库不复制
3. use 其他库;
create table kai.li (id int,name char(15));
从库复制
对表内容修改:
1. 主库不use,向li表增加数据
insert into kai.li values('1','ljk');
从库复制
2. 主库 use mysql,向li表增加数据
从库不复制
3. 主库use 其他库,更新li库(即跨库更新)
mysql> use picture;
mysql> insert into kai.li values('2','lhy');
从库复制
1. 不 use
mysql> create table mysql.ljk (id int,name varchar(15));
从库复制
2. Use 其他库
mysql> drop table mysql.ljk;
从库复制
二、从库添加“replicate-ignore-db = mysql”,主库不加过滤

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

数据备份与故障恢复:MySQL主从复制在集群模式下的重要性探讨引言:近年来,随着数据规模和复杂性的不断增长,数据库的备份和故障恢复变得尤为重要。在分布式系统中,MySQL主从复制在集群模式下被广泛应用,以提供高可用性和容错性。本文将探讨MySQL主从复制在集群模式下的重要性,并给出一些代码示例。一、MySQL主从复制的基本原理及优势MySQL主从复制是一种通

优化数据库性能:MySQL主从复制在集群技术中的最佳使用方法摘要:随着互联网的快速发展,数据库的性能问题成为了各个企业和组织关注的焦点。MySQL主从复制技术在解决数据库性能瓶颈方面发挥着重要作用。本文将介绍MySQL主从复制的概念及原理,以及在集群技术中的最佳使用方法,帮助读者优化数据库性能。一、引言随着数据量不断增加,数据库的性能问题日益突出。如何优化数

从容应对高并发:MySQL主从复制作为集群技术的性能优势分析随着互联网的快速发展,用户对于网站和应用的访问量呈现出爆炸性增长的趋势。在这种高并发的情况下,如何保证系统的稳定性和性能成为了每个开发人员和系统管理员的重要任务。在数据库中,MySQL主从复制技术被广泛应用,成为了应对高并发的有效解决方案之一。本文将探讨MySQL主从复制作为集群技术的性能优势。首先

解密MySQL主从复制:揭秘其集群模式下的关键实现机制引言:在现代数据库系统中,数据的高可用性和灵活性是非常重要的。MySQL作为一款开源的关系型数据库管理系统,在满足用户需求方面具有广泛的应用性。而MySQL的主从复制是MySQL数据库架构中非常关键的一部分,用于实现数据的备份和高可用性。本文将重点揭秘MySQL主从复制的关键实现机制,特别是其在集群模式下

MySQL主从复制属于集群技术还是负载均衡技术?解析和区别摘要:MySQL主从复制是一种数据库复制技术,用于在多个服务器上同步数据库的数据。本文将从技术原理、应用场景和功能特点等方面来解析和区分MySQL主从复制与集群技术以及负载均衡技术的区别。引言:在现代互联网应用中,数据库的高可用性和扩展性是至关重要的。MySQL主从复制是一种常见的解决方案之一,但是,

详解MySQL主从复制在集群技术中发挥的功能和优势引言MySQL是一款功能强大的关系型数据库管理系统,广泛应用于各种大型网站和应用程序中。随着数据量的增大和访问请求的增加,单台MySQL服务器的压力也逐渐增大,为了提高数据库的性能和可靠性,人们开始采用集群技术,其中MySQL主从复制就是其中一种常用的技术手段。MySQL主从复制原理MySQL主从复制是指将一

挖掘MySQL主从复制的集群技术潜力:开源方案与商业解决方案比较评估随着互联网业务的不断发展和数据量的不断增加,对于数据库集群方案的需求也日益强大。MySQL主从复制技术正好满足了这一需求,它能够将数据库的读写操作在多个节点上进行分别处理,提高了数据库的读取性能和可用性。本文将对MySQL主从复制的集群技术潜力进行挖掘,并对开源方案和商业解决方案进行比较评估

随着互联网的快速发展,应用系统的数据量越来越大,对数据库的性能和可靠性要求也越来越高。MySQL作为最常用的开源关系型数据库之一,具有较高的性能和稳定性,被广泛应用在各种企业级应用中。而MySQL主从复制作为一种常用的数据复制方案,能够提高数据的可靠性和读写性能,被广泛应用在大规模数据应用中。MySQL主从复制的集群特性指的是通过复制机制将主数据库的数据同步
