mysql 数据丢失

问题描述

系统环境:Linuxversion2.6.18-194.el5PAEmysql5.0.22,forpc-linux-gnumysql-connector-java-5.1.1-alpha-bin.jartry{//订单处理开始时间logHelpService.writeProgramLog(person.getPartyId(),person.getName(),ComLog.logLevel_Info,"派单开始时间:","派单","订单处理时间",System.currentTimeMillis()+"");//保存订单。并派送到门店。//暂时先将保存订单和发送订单事务分离。//orderBiz.saveAndTransport(ccbsOrderHeader,orderItems,person.getName(),person.getPartyId());ccbsOrderHeader=orderBiz.saveOrderWithOutTransport(ccbsOrderHeader,orderItems,person);JdbcTemplatejdbcTemplate=(JdbcTemplate)SpringContextUtils.getService("jdbcTemplateCcbs");StringBuffersql=newStringBuffer();sql.append("selectorder_codefromorder_headerwhereorder_id="+ccbsOrderHeader.getOrderId());logger.info("订单保存成功!从数据库取得订单ID"+ccbsOrderHeader.getOrderId()+"对应的ORDER_CODE为:"+jdbcTemplate.queryForObject(sql.toString(),String.class));//如果是大订单,则将订单的状态改为待审核。if(orderRuleBiz.isBigOrder(ccbsOrderHeader)){orderBiz.reviewingOrder(ccbsOrderHeader,person.getName());}else{//如果不是大订单,则进行派单。orderBiz.transportNewOrder(ccbsOrderHeader,person.getName());}//订单处理结束时间logHelpService.writeProgramLog(person.getPartyId(),person.getName(),ComLog.logLevel_Info,"派单结束时间:","派单","订单处理时间",System.currentTimeMillis()+"");json.put("canOperate","true");}catch(Exceptione){e.printStackTrace();json.put("canOperate",Boolean.FALSE);json.put("warnMsg",e.getMessage());}

上面为我的action层的java程序代码。会打出如下日志:17:43:53PerformOrderAction-20110613174353派单开始:session中的token为:TOKEN2011061317414817:43:53PerformOrderAction-20110613174353派单开始:ccbsOrderHeader中的token为:TOKEN2011061317414817:43:53OrderBiz-saveOrderWithOutTransport():保存订单开始时间:130795823347417:43:53OrderBiz-saveOrderWithOutTransport():保存订单结束时间:130795823359317:43:53PerformOrderAction-订单保存成功!从数据库取得订单ID1003339对应的ORDER_CODE为:20110613001610事务是配置在service层。及biz相关的方法是事务的。所以此段代码会先保存订单。并通过jdbc的方式从数据库里面读取订单ID对应的订单号。事务是通过spring来进行控制的。因为事务不在action层,所以简单的理解是:1.保存订单后事务是提交了的。2.能够通过ID取得提交的订单,则订单应该是持久化到数据库中的。但最终的结果是,订单信息丢失。且查看bin-log的日志,也未找到订单ID对应的数据日志。对于该问题非常纠结,还望javaeyer们帮忙分析,指导!谢谢!

时间: 2024-09-16 13:50:43

mysql 数据丢失的相关文章

防止服务器宕机时MySQL数据丢失的几种方案

  这篇文章主要介绍了防止服务器宕机时MySQL数据丢失的几种方案,结合实践介绍了Replication和Monitor以及Failover这三个项目的应用,需要的朋友可以参考下 对于多数应用来说,MySQL都是作为最关键的数据存储中心的,所以,如何让MySQL提供HA服务,是我们不得不面对的一个问题.当master当机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master当机并进行相应的故障转移处理,都是需要我们好好思考的.这里,笔者将结合这段时间做的MySQL proxy以及

MySQL数据丢失讨论

原文地址:http://hatemysql.com/tag/sync_binlog/ 1.  概述 很多企业选择MySQL都会担心它的数据丢失问题,从而选择Oracle,但是其实并不十分清楚什么情况下,各种原因导致MySQL会丢失部分数据.本文不讨论Oracle和MySQL的优劣,仅仅关注MySQL丢失数据的几种情况.希望能够抛砖引玉,让各位MySQL大牛们梳理出MySQL最安全或者性价比合适的适合各种应用场景的方案. 2.  问题定义 一般我们希望把一系列的数据作为一个原子操作,这样的话,这一

防止服务器宕机时MySQL数据丢失的几种方案_Mysql

对于多数应用来说,MySQL都是作为最关键的数据存储中心的,所以,如何让MySQL提供HA服务,是我们不得不面对的一个问题.当master当机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master当机并进行相应的故障转移处理,都是需要我们好好思考的.这里,笔者将结合这段时间做的MySQL proxy以及toolsets相关工作,说说我们现阶段以及后续会在项目中采用的MySQL HA方案.Replication要保证MySQL数据不丢失,replication是一个很好的解决方案,

【MySQL】数据安全性讨论思维导图

一  前言     和团队内部的同事一起沟通,讨论了MySQL 数据库系统数据安全性问题,主要针对MySQL丢数据库的场景 ,主从不一致的场景 ,还有业务层面使用不得当导致主备库数据结构不一样的情况,本文是基于以上的讨论和总结做的思维导图. 二 思维导图     参考 资料  [1] MYSQL数据丢失讨论  [2] 细看InnoDB数据落盘  [3] MySQL5.7 深度解析: Loss-Less半同步复制技术  [4] MySQL 5.7 Replication 相关新功能说明 

【MySQL】undo,redo,2PC,恢复思维导图

一 前言    本来今天打算继续研究InnoDB 锁机制并完成第二篇文章,查找资料的时候忽悠想起来自己遗漏了之前的CSDN的公开课<深入理解MySQL中的undo,redo,mvcc> .于是乎走入另外一条路了,把MySQL IO 层面的知识复习一遍,加深了对MySQL 数据一致性,主从一致性的理解.本文是结合视频和相关资料整理了一张思维导图,总结的时候,部分 OS/MySQL crash 的例子没有完全给出,以后也需要在完善一下,想深入了解这方面知识的同学,可以自己针对各种写入失败的场景,和

为什么在 Redis 实现 Lua 脚本事务?

在刚过去的几个月中,我一直在构思并尝试在 redis 中实现 lua 脚本的事务功能.没有多少人理解我的想法,所以我将通过一些历史为大家做下解释. MySQL 与 Postgres 在 1998-2003 年间,如果你想运行一个正规的数据库驱动的网站/服务,但又没有足够的资金购买微软或 Oracle 的数据库,你可以选择 MySQL 或 Postgres .很多人都选择了 MySQL,因为它速度较快--主要是因为 MyISAM 存储引擎没有提供事务功能以此来换取性能,但速度确实很快.另一些人转向

嵌套查询-关于mysql的嵌套查寻数据丢失的问题

问题描述 关于mysql的嵌套查寻数据丢失的问题 上周发现在mysql嵌套查询的时候有数据丢失示例如下: 情况1: select group_concat(p.prod_no separator ',') prod_no from core_request_prod 情况2: select * from (select group_concat(p.prod_no separator ',') prod_no from core_request_prod) d 情况1可以查出全部的数据(数据很多

mysql 临时表、内存表和视图

虚拟表,顾名思义,就是实际上并不存在(物理上不存在),但是逻辑上存在的表.这样说很抽象,还是看一些实际的例子吧.在MySQL中,存在三种虚拟表:临时表.内存表和视图. 一.mysql临时表1.什么是临时表临时表是建立在系统临时文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作. 临时表的数据和表结构都储存在内存之中,退出时,其所占的空间会自动被释放.2.创建临时表(1)定义字段CREATE TEMPORARY TABLE tmp_table (        name VARCHAR(

【MySQL】Got fatal error 1236原因和解决方法

一 前言  MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主从复制数据库集群的时候,作为专职的MySQL DBA,笔者相信大多数人都会遇到"Got fatal error 1236 from master when reading data from binary log" 这类的报错/报警.本文整理了常见的几种 error 1236 报错,并给出相应的解决方法,有所不足之处,当然也希望各位读者朋友指正. 二 常见的error 1236 报错2.1 log