trigger、procedure和event如何同步

最近遇到一个需求涉及存储过程,被突然问题到如何同步问题问到了,赶紧补课学习一下。

首先,先看一下trigger、procedure和event的定义都是什么?

trigger: 触发器是一个被指定关联到一个表的数据对象,当对个表的特别事件出现时,它被激活。

procedure:是一组为了完成特定功能的SQL语句集。

event:定时任务,类似Linux的crontab。

其次,mysql的同步中可以设定不同的binlog_format,包括statment、row和mix。

statment:语句级,记录原始SQL语句。

row:行级,记录受到影响的行的真实修改情况。

mix:上面两种的混合,基础使用语句级,当会导致数据不一致的时候会采用行格式。

最后,分别在statement和row两种格式下,看看trigger、procedure和event是如何记录binlog的。

1、statement+trigger

  binlog会把create trigger记录下来,并推给slave,然后记录正常的sql语句,不会记录trigger中的任何sql。

2、row+trigger

  binlog会把create trigger记录下来,然后会将正常的sql和trigger的sql的所有执行结果记录下来,并推送给slave。

3、statement+procedure

  binlog中会把create procedure记录下来,然后不会记录call语句,而是将procedu中的sql用语句级记录下来,推送给slave。

4、row+procedure

  binlog会将create procedure记录下来,然后不会记录call procedure,而是会把所有执行的记过记录在binlog中,然后推送给slave。

5、statement+event

  binlog会将create event记录下来,并会将event中的操作记录成语句级,推送给slave。

6、row+event

  binlog会将create event记录下来,并将event中的所有操作按照行格式记录下来,推送给slave。

这期间的问题:

1、由于create都是语句级的,从库会自动更改binlog_format。

2、从库如果binlog_format是statement但是主库是row的话,同步会报错,需要将从库也改成row才会恢复。

以上这2点很容易造成同步中断,故不建议在mysql中使用以上3种设置,如果要用最好使用statement格式。

trigger、procedure和event如何同步

时间: 2024-10-07 19:11:10

trigger、procedure和event如何同步的相关文章

trigger()的event事件对象之坑

问题引入,先贴一段有问题的代码,如果你对 trigger()  这个函数了解不透彻,还真看不出这段代码错在哪.完成的功能是样式转换器,想让页面在加载后自行触发点击事件隐藏三个按钮,但是效果如图并没有隐藏按钮们:控制台会报错: target  属性是 undefined ,肯定是 event 这个事件对象没获取到的问题,程序到17行出错停止,这让我感到疑问:自定义触发的事件难道没有event对象吗?. 1 <div id="switcher" class="switche

jQuery事件之:jQuery.event.trigger

现在我们来看看事件机制中的主动触发,我们要分析的是jQuery.event.trigger. 先来看看它在jQ源码中的调用. // 1, 在jQuery.event.simulate中 jQuery.event.simulate = function(){ ... if ( bubble ) { jQuery.event.trigger( e, null, elem ); } ... } // 2, 事件的实例方法中 jQuery.fn.extend({ trigger: function( t

Yii2的深入学习--yii\base\Event 类

根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Component 实现. 今天先来看下类级别事件的实现,代码是 yii\base\Event 类. <?php namespace yii\base; /** * Event is the base class for all event classes. */ class Event extends Obje

jquery14 on() trigger() : 事件操作的相关方法

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script src="jquery-2.0.3.js"></script> <script> jQu

【转】Python线程同步机制: Locks, RLocks, Semaphores, Conditions, Events和Queues

Python线程同步机制: Locks, RLocks, Semaphores, Conditions, Events和Queues | Comments 翻译自Laurent Luce的博客原文名称:Python threads synchronization: Locks, RLocks, Semaphores, Conditions, Events and Queues原文连接:http://www.laurentluce.com/posts/python-threads-synchron

gem5中event queue运行原理机制详细分析

搞清楚这个花了两天时间,同时为了给自己赚点下载用的积分,如需要详细问自己介绍版本,请点击下载点击打开链接 图1 与Event相关的类 以上是在gem5中,event相关的类继承图,SimObject.EventBase是Event的基础类.GlobalEvent继承于Event类. (1)Event:gem5中所有和时序相关的操作都是由event来驱动的,比如tick.trap.writeback等等.Event是event queue中的node,任何需要使用Event作为基类的子类需要重构虚

Zepto源码分析-event模块

源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT license. ;(function($){ var _zid = 1, undefined, slice = Array.prototype.slice, isFunction = $.isFunction, isString = function(obj){ return typeof obj

DOM Event delegation

DOM event delegation is a mechanism of responding to ui-events via a single common parent rather than each child, through the magic of event "bubbling" (aka event propagation). When an event is triggered on an element, the following occurs: The

zepto源码学习-04 event

之前说完$(XXX),然后还有很多零零碎碎的东西需要去分析,结果一看代码,发现zepto的实现都相对简单,没有太多可分析的.直接略过了一些实现,直接研究Event模块,相比JQuery的事件系统,zepto的设计相对简单很多,看起来也就相对轻松,整个event模块也就300行代码. 先看事件的相关接口以及用法 $.Event $.Event(type, [properties]) ⇒ event 创建并初始化一个指定的DOM事件.如果给定properties对象,使用它来扩展出新的事件对象.默认