我们的Rails程序,在使用SpiderDB是,一旦对多个分区节点数据库进行更新,就会发生Mysql::Error: This xid is already exist: COMMIT 错误,在网上查找了很久,中日英三文呀,就没有解决办法。
没有办法,只好试探了。在一个Spider的说明文档中,发现Spider引擎有个参数spider_internal_xa,当设成有效时,可以自动把Transaction转换成xa,这样对于应用程序来说,就不用把原来的Transaction
mysql> BEGIN;
mysql> INSERT, UPDATE, DELETE...
mysql> COMMIT;
改成xa Transaction
mysql> XA START 'xatest';
mysql> INSERT, UPDATE, DELETE...
mysql> XA END 'xatest';
mysql> XA PREPARE 'xatest';
mysql> XA COMMIT 'xatest';
了,是非常方便的。
抱着死马当活马医的心情,设置了spider_internal_xa=1、重新启动SpiderDB后,发现一旦执行INSERT,Spider引擎就会当掉,而且无法重启。错误信息如下:
引用
100703 13:37:15 mysqld_safe Starting mysqld daemon with databases from /root/sandboxes/spider_main/data
100703 13:37:15 [Warning] The syntax '--default-character-set' is deprecated and will be removed in a future release. Please use --character-set-server instead.
100703 13:37:17 InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 128 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100
100703 13:37:23 InnoDB: Log file ./ib_logfile1 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile1 size to 128 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
100703 13:37:27 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
100703 13:37:28 InnoDB: Started; log sequence number 0 7608332
100703 13:37:28 [Note] Recovering after a crash using tc.log
100703 13:37:28 - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
key_buffer_size=1048576
read_buffer_size=2097152
max_used_connections=0
max_threads=3000
threads_connected=0
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 3919505 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.
thd: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = (nil) thread_stack 0x30000
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld(my_print_stacktrace+0x22) [0x84bc7a2]
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld(handle_segfault+0x37f) [0x81fbaef]
[0x236420]
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld(TC_LOG_MMAP::open(char const*)+0x435) [0x82a4c25]
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld [0x81fd9bf]
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld(main+0x4c5) [0x8200655]
/lib/libc.so.6(__libc_start_main+0xdc) [0xc7bdec]
/home/spider/mysql-5.1.44/5.1.44/bin/mysqld [0x8131dd1]
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
100703 13:37:28 mysqld_safe mysqld from pid file /root/sandboxes/spider_main/data/mysql_sandbox5144.pid ended
开始的时候只能是安装SpiderDB,以前的数据都没了。
经过多次试探,发现删除掉tc.log、ib_logfile0、ib_logfile1 后,就可以重新启动SpiderDB了。
spider_internal_xa=1不行,还有什么办法呢?在Spider的参数说明中,发现一个spider_support_xa。一旦把这个设置成无效,xa Transaction就不起作用了,不过此时internal_xa是有效的。
OK,测试一下,果然对多个分区节点数据库进行更新的操作不会再让Spider当掉了,而且Mysql::Error: This xid is already exist: COMMIT 错误也没有了。
分享到:
相关推荐
J-Spider:是一个完全可配置和定制的Web Spider引擎.你可以利用它来检查网站的错误(内在的服务器错误等),网站内外部链接检查,分析网站的结构(可创建一个网站地图),下载整个Web站点,你还可以写一个JSpider插件来扩展...
5. **MySQL协议兼容性**:Spider引擎完全兼容MySQL协议,使得现有应用程序可以无缝迁移至Spider引擎环境中。 #### 四、Spider引擎的局限性 尽管Spider引擎提供了一系列强大的功能,但也存在一些不足之处: 1. **...
在Windows环境中,如果你想要利用SpiderMonkey引擎执行JavaScript代码,你需要以下组件: - `js32.dll`:这是SpiderMonkey的动态链接库,包含了引擎的核心功能。 - `jsapi.h` 和 `jsconfig.h`:这些是头文件,提供...
搜索引擎是互联网上的一种重要工具,它的核心功能是通过爬虫(Spider)技术抓取网络上的信息,然后对抓取的数据进行处理和索引,以便用户能够快速、准确地找到所需内容。在这里,我们将深入探讨“搜索引擎,spider...
C++ js 互相调用 spider monkey
在实际应用中,开发者通常需要先初始化SpiderMonkey引擎,然后创建上下文,定义全局对象,加载脚本,执行脚本,处理结果,最后释放资源。例如,你可以使用以下步骤创建一个简单的脚本执行环境: 1. 初始化引擎:`JS...
对于初学者而言,在使用Scrapy框架进行网络爬虫开发的过程中,经常会遇到各种各样的错误,其中一种较为常见的错误便是“Spider error processing”(蜘蛛错误处理)。这类错误不仅会打断爬虫的正常执行流程,还可能...
PHPDig蜘蛛(phpdig_spider)是PHPDig搜索引擎的重要部分,主要负责从互联网上抓取和分析网页内容。`spider.php`和`robot_functions.php`是实现这一功能的关键脚本,而`www.pudn.com.txt`可能是用于配置抓取行为的...
SpiderMonkey 是 Mozilla 开源项目中的一个关键组件,它是一个高性能的 JavaScript 引擎,由 Brendan Eich 在 1998 年创建,旨在为 Netscape Navigator 浏览器提供支持。随着 Web 技术的发展,JavaScript 逐渐成为...
### 抢先式多线程Spider在智能搜索引擎中的实现 #### 概述 随着互联网的飞速发展,网络上信息量呈爆炸性增长,如何高效地检索这些信息成为了一个重要的研究课题。智能搜索引擎技术应运而生,成为了计算机工业界和...
在Black Spider 1.7.2的压缩包中,"black spider"这个文件可能是主程序或者启动脚本,用户解压后可以通过这个文件运行工具。由于没有具体的文件列表,我们只能推测这个文件的重要性,实际使用时需要根据软件的配套...
**Spider:开源爬虫引擎详解** Spider是一种优秀的开源爬虫引擎,主要针对互联网数据的抓取和处理。它以其高效、灵活和可扩展性而受到开发者们的青睐。在这个Eclipse项目中,Spider被设计为一个Java开发的工具,...
SpiderMonkey是Mozilla公司开发的一个开源JavaScript引擎,它由C++编写,被广泛用于各种项目中,包括Mozilla Firefox浏览器。由于JavaScript引擎的不同版本之间可能存在兼容性问题,因此,使用特定版本的Spider...
SpiderMonkey是Mozilla公司开发的一款JavaScript引擎,它是Firefox浏览器的核心组成部分之一。这个名为"spiderMonkey_js-1.5-rc6a.tar.gz"的压缩包文件包含了SpiderMonkey的1.5版本的源代码,其中rc6a代表的是...
【标题】"Spider_java.zip" 是一个包含Java实现的网络爬虫项目的压缩包,主要针对搜索引擎数据抓取。这个项目的核心在于使用Java编程语言来构建一个能够自动化浏览网页、解析HTML内容并收集所需信息的程序。网络爬虫...
在这个过程中,Spider(爬虫)作为一种自动化工具,扮演着至关重要的角色。它能帮助研究人员高效地抓取互联网上的大量信息,为网络分析提供丰富的数据来源。 首先,我们需要理解什么是Spider。Spider,又称网络爬虫...
Scrapy 框架中 Spider 的用法 Scrapy 框架中 Spider 的用法是指在 Scrapy 里面要抓取网站的链接配置、抓取逻辑、解析逻辑里都是在 Spider 里面去完成的。在实现 Scrapy 爬虫项目里面,最核心的就是 Spider 类了,它...
SpiderMonkey的API允许开发者在C/C++应用中嵌入JavaScript引擎,这样就可以在C/C++程序中使用JavaScript来编写部分业务逻辑或扩展功能。通过js32.lib库,开发者可以创建JavaScript上下文,执行脚本,调用JavaScript...
Spider,又称为网络爬虫或网络机器人,是互联网中一种自动化程序,其主要任务是在互联网上抓取网页信息。Spider的基本工作原理是通过跟随网页上的超链接,像一只蜘蛛在巨大的蜘蛛网上爬行一样,从一个网页跳转到另一...
2. **错误修复**:作为稳定版,31.2.0应该修复了前一版本中发现的多个错误和安全问题,确保了引擎的稳定性和安全性。 3. **API更新**:可能对开发者接口进行了调整,以提高易用性和兼容性,或者引入了新的功能,...