• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 逐步分析MySQL从库com_insert无变化的原因

逐步分析MySQL从库com_insert无变化的原因

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql触发器insert,mysql insert,mysql insert into,mysql insert语句,mysql insert id等相关知识,希望本文的分享对您有所帮助

大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS。并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的。
如下面显示,第二列代表主库,第三列代表从库:

但是我们看另外一个业务:

我们可以很明显的看出来,主库有92个写,但是从库0个写,这是为什么呢?

这2个业务唯一的区别就是binlog_format的设置不一样。

第二个业务
show global variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW   |
+---------------+-------+
</div>

我们来看下com_xxx的官方文档定义:

The Com_xxx statement counter variables indicate the number of times each xxx statement has been executed. There is one status variable for each type of statement. For example, Com_delete and Com_update count DELETE and UPDATE statements, respectively. Com_delete_multi and Com_update_multi are similar but apply to DELETE and UPDATE statements that use multiple-table syntax.

从上述文档,我们只能看到com_xxx是如何运作的,但是并不能解释为什么使用RBR之后com_insert就不变化了。

接下来我们结合下面这段文档来一起看看。

You cannot examine the logs to see what statements were executed, nor can you see on the slave what statements were received from the master and executed.
However, you can see what data was changed using mysqlbinlog with the options --base64-output=DECODE-ROWS and --verbose.

这2段话结合来看,原因应该是这样的:

1、主库上接收的是statement的语句,所以com_insert符合触发条件,会随着业务增加。

2、而从库是拿到主库的binlog后重放更新数据,但是主库的日志格式是row format,这就导致了binlog中记录的不是statement语句,而是data的变化记录。

3、这样从库虽然依然能进行更新记录,但是无法解析出来这些data变化是一条statement语句导致的还是多条statment语句导致,所以就不在更新com_insert这个statment counter了。

基本上推论符合现实情况,但是没有code证明,比较遗憾。

另外,如果我们无法通过com_insert来监控从库的写入情况,那么我们应该监控那个status呢?

个人建议对于row格式的实例,通过监控innodb_rows_inserted来监控写入情况。

附:(两个文档的官方文档链接)

http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Com_xxx

http://dev.mysql.com/doc/refman/5.5/en/replication-sbr-rbr.html

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 如何测试mysql触发器和存储过程
  • mysql 触发器实现两个表的数据同步
  • MySQL 在触发器里中断记录的插入或更新?
  • MySQL 5.0触发器参考教程第1/4页
  • MYSQL设置触发器权限问题的解决方法
  • 逐步分析MySQL从库com_insert无变化的原因
  • mysql触发器实现oracle物化视图示例代码
  • MySQL中触发器入门简单实例与介绍
  • MySQL 关于表复制 insert into 语法的详细介绍

相关文章

  • 2018-12-05Windows下ORACLE 10g完全卸载的方法分析
  • 2018-12-05mysql事务处理机制的使用技巧步骤
  • 2017-05-11win2003服务器下配置 MySQL 群集(Cluster)的方法
  • 2018-12-05MySQL数据库varchar的限制规则说明
  • 2018-12-05关于SQL Server 的全文搜索功能详解
  • 2018-12-05mysql日期和时间
  • 2018-12-05sqlserver主键设计的注意点
  • 2017-05-11MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
  • 2017-05-11Ubuntu下取消MySQL数据库本机绑定限制方法
  • 2018-12-05MySQL OOM 系统二 OOM Killer_MySQL

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 5个经常犯的数据库设计错误
    • mysql中RAND()随便查询记录效率问题和解决办法分享
    • Mysql结合备份+binlog恢复误删除操作数据
    • MySQL DNS的使用过程详细分析
    • 关于mysql5.7.18的安装并修改初始密码的图文教程
    • MyBatis模糊查询的sql拼接的两种方法
    • sqlserver 数据库压缩与数据库日志(ldf)压缩方法分享
    • MySql事务无法回滚的原因有哪些
    • Mysql存储引擎InnoDB和Myisam的六大区别
    • mysql + Fluently NHibernate + WebAPI + Autofac

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有