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如何同步的更多相关文章
- trigger()的event事件对象之坑
问题引入,先贴一段有问题的代码,如果你对 trigger() 这个函数了解不透彻,还真看不出这段代码错在哪.完成的功能是样式转换器,想让页面在加载后自行触发点击事件隐藏三个按钮,但是效果如图并没有隐 ...
- 同步对象(同步条件Event)
event = threading.Event() #创建同步对象 event.wait() #同步对象等待状态 event.set() #同步对象设置Trueevent.clear() ...
- 多线程模块的同步机制event对象
多线程模块的同步机制event对象 线程的核心特征就是他们能够以非确定的方式(即何时开始执行,何时被打断,何时恢复完全由操作系统来调度管理,这是用户和程序员无法确定的)独立执行的,如果程序中有其他线程 ...
- JAVA通过Gearman实现MySQL到Redis的数据同步(异步复制)
MySQL到Redis数据复制方案 无论MySQL还是Redis,自身都带有数据同步的机制,像比较常用的 MySQL的Master/Slave模式 ,就是由Slave端分析Master的binlog来 ...
- canal+mysql+kafka实时数据同步安装、配置
canal+mysql+kafka安装配置 概述 简介 canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 基于日志增量订阅和消费的业务包括 数 ...
- SQLServer数据实时同步PostgreSQL
SQLServer数据实时同步至PostgreSQL 前言: 为迎合工作需求有时候传送的数据保存在SQLServer中但由于工作需要需要保存到PostgreSQL中进行处理,本文主要通过在SQLSer ...
- SAP CRM 使用Javascript触发SAP Server Event
原文地址:How To Trigger SAP Server Event With Javascript 本文地址:http://www.cnblogs.com/hhelibeb/p/5977921. ...
- Yii2的深入学习--yii\base\Event 类
根据之前一篇文章,我们知道 Yii2 的事件分两类,一是类级别的事件,二是实例级别的事件.类级别的事件是基于 yii\base\Event 实现,实例级别的事件是基于 yii\base\Compone ...
- 深入理解jQuery的Event机制
jQuery的Event模块非常强大.其功能远远比原生事件监听器强大许多,对同一个元素的监听只用一个eventListener,内部则是一个强大的观察者,根据匹配事件类型触发相应回调.jQuery不仅 ...
随机推荐
- static, const 和 static const 变量的初始化问题
const 常量的在超出其作用域的时候会被释放,但是 static 静态变量在其作用域之外并没有释放,只是不能访问. static 修饰的是静态变量,静态函数.对于类来说,静态成员和静态函数是属于整个 ...
- Deploy Openstack all-in-one Shell Script
Deploy Openstack all-in-one Shell Script At present(2015/10), the RDO deploment method can only inst ...
- 产看Linux运行时间
Linux下如何查看系统启动时间和运行时间 1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.0 ...
- iOS网络加载图片缓存与SDWebImage
加载网络图片可以说是网络应用中必备的.如果单纯的去下载图片,而不去做多线程.缓存等技术去优化,加载图片时的效果与用户体验就会很差. 一.自己实现加载图片的方法 tips: *iOS中所有网络访问都是异 ...
- SQL 2008 还原SQL 2005备份文件不成功的解决方
在SQL Server 2008 r2上还原一个SQL Server 2005时,还原不成功,提示如下信息: 按照如下情况则还原成功: -- 查看备份文件的类型 RESTORE FILELISTONL ...
- 004 Ajax中传输格式为JSON
一: 1.介绍 2.嵌套 3.json解析 4.优缺点 二:json功能程序测试 1.设计 2.程序 <!DOCTYPE html> <html> <head> & ...
- 全文搜索引擎 Elasticsearch (二) 使用场景
1.场景—:使用Elasticsearch作为主要的后端 传统项目中,搜索引擎是部署在成熟的数据存储的顶部,以提供快速且相关的搜索能力.这是因为早期的搜索引擎不能提供耐用的存储或其他经常需要的功能 ...
- Windows 修改电脑属性(二)
一.秀出自我风格的屏幕保护画面 1.气泡屏幕保护 打开电脑,按开始键,点击运行输入regedit按回车键进入注册表界面,找到如下路径:HKEY_CURRENT_USER/Software/Micros ...
- Pearls in a Row CodeForces 620C 水题
题目:http://codeforces.com/problemset/problem/620/C 文章末有一些测试数据仅供参考 题目大意 给你一个数字串,然后将分成几个部分,要求每个部分中必须有一对 ...
- [leetcode sort]148. Sort List
Sort a linked list in O(n log n) time using constant space complexity. 以时间复杂度O(n log n)排序一个链表. 归并排序, ...