trigger、procedure和event如何同步_MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了trigger、procedure和event如何同步_MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1601字,纯文字阅读大概需要3分钟。
内容图文
最近遇到一个需求涉及存储过程,被突然问题到如何同步问题问到了,赶紧补课学习一下。
首先,先看一下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如何同步_MySQL全部内容,希望文章能够帮你解决trigger、procedure和event如何同步_MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。