首页 文章

多个内连接3个或更多崩溃mysql服务器5.1.30 opensolaris

提问于
浏览
1

当对4个内连接表进行简单查询时,服务器崩溃,出现在mysql .err文件中的下面输出 .

例如 . select * from table1 inner join table2 on table1.a = table2.a and table1.b = table2.b inner join table3 on table2.a = table3.a and table2.c = table3.c inner join table4 on table3.a = table4.a和table3.d = table4.d

如果我删除其中一个表,它执行正常 . 同样,如果我删除一个不同的表,它执行正常 . 虽然所有表格都已经过检查,但这表明它不是特别针对其中一个表格的问题 .

mysql.err跟踪:

100503 18:13:19 - mysqld收到信号11;这可能是因为你遇到了一个bug . 此二进制文件或其链接的库之一也可能是损坏的,不正确的构建或配置错误 . 此错误也可能由硬件故障引起 . 我们将尽力挖掘一些有助于诊断问题的信息,但由于我们已经崩溃,因此肯定是错误的,这可能会失败 .

key_buffer_size = 1572864000 read_buffer_size = 2097152 max_used_connections = 11 max_threads = 151 threads_connected = 10 mysqld有可能最多使用key_buffer_size(read_buffer_size sort_buffer_size)* max_threads = 2155437 K字节的内存希望没问题;如果不是,减少等式中的一些变量 .

thd:0x72febda8尝试回溯 . 您可以使用以下信息找出mysqld死亡的位置 . 如果你在此之后没有看到任何消息,那么就出现了一些错误... stack_bottom = fe07efb0 thread_stack 0x40000试图得到一些变量 . 某些指针可能无效并导致转储中止... thd->查询be1021f0 =解释select * from business inner join timetable on business.id = timetable.business_id inner join timetableentry on timetable.business_id = timetableentry.business_id and timetable .kid = timetableentry.parent内部联接人员的时间表.business_id = staff.business_id和timetable.staf f_person = staff.kid其中business.id = '3050bb04fda41df64a9c1c149150026c' thd-> thread_id = 9 thd-> killed = NOT_KILLED http://dev.mysql.com/doc/mysql/en/crashing.html的手册页包含可以帮助您找出导致崩溃的原因的信息 . 100503 18:13:19 mysqld_safe mysqld restarted 100503 18:13:20 InnoDB:无法在文件上设置DIRECTIO_ON ./ibdata1:OPEN:Inap propriate ioctl for device,无论如何继续100503 18:13:20 InnoDB:无法设置DIRECTIO_ON文件./ibdata1:OPEN:Inap为设备提供ioctl,无论如何都要继续InnoDB:ibdata文件中的日志序列号与InnoDB不匹配:ib_logfiles中的日志序列号! 100503 18:13:20 InnoDB:数据库没有正常关闭! InnoDB:开始崩溃恢复 . InnoDB:从.ibd文件中读取表空间信息... InnoDB:从doublewrite InnoDB恢复可能的半写数据页:缓冲区... InnoDB:上一个MySQL binlog文件位置0 2731,文件名./mysql-bin.000093 100503 18:13:20 InnoDB:开始;日志序列号0 2650338426 100503 18:13:20 [注意]使用mysql-bin进行崩溃后恢复100503 18:13:20 [注意]开始崩溃恢复...

100503 18:13:20 [注意]崩溃恢复完成 .

这在opensolaris上SunOS 5.11 snv_111b i86pc i386 i86pc Mysql 5.1.30

这是my.cnf文件的一个片段:


key_buffer = 1500M max_allowed_packet = 1M thread_stack = 256K thread_cache_size = 8 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M table_cache = 512 tmp_table_size = 400M max_heap_table_size = 64M

query_cache_limit = 20M query_cache_size = 200M


这是错误还是配置问题?

测试数据:

我在两个几乎完全安装的mysql上遇到了同样的问题 . opensolaris服务器上基本上有两个区域,一个是从另一个区域克隆的 . 我不知道这是否算作另一台机器 . 在填充测试数据之后,最后的查询确实会使mysql服务器崩溃,但在填充数据之前不会 .

创建数据库 test DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;使用 test ;

CREATE TABLE IF NOT NOT EXISTS table1a bigint(20)NOT NULL, b bigint(20)NOT NULL,PRIMARY KEY( ab ))ENGINE = MyISAM DEFAULT CHARSET = latin1;

CREATE TABLE IF NOT NOT EXISTS table2a bigint(20)NOT NULL, b bigint(20)NOT NULL, c bigint(20)NOT NULL,PRIMARY KEY( ab ),KEY cc ))ENGINE = MyISAM DEFAULT CHARSET = LATIN1;

CREATE TABLE IF NOT NOT EXISTS table3a bigint(20)NOT NULL, c bigint(20)NOT NULL, d bigint(20)NOT NULL,PRIMARY KEY( ac ),KEY dd ))ENGINE = MyISAM DEFAULT CHARSET = LATIN1;

CREATE TABLE IF NOT NOT EXISTS table4a bigint(20)NOT NULL, d bigint(20)NOT NULL,PRIMARY KEY( ad ))ENGINE = MyISAM DEFAULT CHARSET = latin1;

INSERT INTO table1ab )VALUES(10001,20001),(10002,20002); INSERT INTO table2abc )VALUES(10001,20001,30001),(10002,20002,30002); INSERT INTO table3acd )VALUES(10001,30001,40001),(10002,30002,40002); INSERT INTO table4ad )VALUES(10001,40001),(10002,40002);

select * from table1 inner join table2 on table1.a = table2.a and table1.b = table2.b inner join table3 on table2.a = table3.a and table2.c = table3.c inner join table4 on table3.a = table4.a和table3.d = table4.d

1 回答

  • 0

    测试数据也适用于我,杀死了mysql . 可悲的是,从石器时代到现实世界的“时间助理6.2”使用了3个连接并且爆炸了 . 完全按照描述的方式 .

    找到一些提示:http://bugs.opensolaris.org/view_bug.do?bug_id=6892501

    说其开放的solaris具体,只需要一年时间来解决? (它不会让我添加第二个链接!)

    在上面的底部,它指向mysql bug 49091 .

    没有我看到的解决方案 - .-

相关问题