linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: 2.6.0-test2-mm3 and mysql
@ 2003-08-03 16:59 Heikki Tuuri
  2003-08-03 23:57 ` Matt Mackall
  0 siblings, 1 reply; 26+ messages in thread
From: Heikki Tuuri @ 2003-08-03 16:59 UTC (permalink / raw)
  To: linux-kernel

Shane,

"
| tv01.program     | check | error    | got error: 5 when reading datafile
at record: 6696 |
"

InnoDB reported that same error 5 "EIO I/O error" in a call of fsync().
MyISAM never calls fsync(), but I guess these problems are related. Let us
hope Andrew's fix fixes this MyISAM problem, too.

Before your case I have not seen MyISAM report table corruption with error
5. A brief Googling only returns 4 reports of 'got error: 5'. Thus, it is
likely that the bug in this case is in the OS/drivers/hardware.

Regards,

Heikki

....................
List:     linux-kernel
Subject:  Re: 2.6.0-test2-mm3 and mysql
From:     Shane Shrybman <shrybman () sympatico ! ca>
Date:     2003-08-03 15:01:52
[Download message RAW]

On Sat, 2003-08-02 at 22:08, Andrew Morton wrote:
> Shane Shrybman <shrybman@sympatico.ca> wrote:
> >
> > The db corruption hit again on test2-mm2.
>
> How do you know it is "db corruption"?

I haven't been able to get an exact recipe for producing this but I have
posted a couple of the mysql corruption messages.

I still haven't been able to make it appear in 2.6.0-test1-mm1, but once
when I rebooted from -test1-mm1 to -test2-mm3 the tables had problems
immediately, when they came up clean in -test1-mm1 right before. When I
ran the mysql repair tables command it fixed them up and did not delete
any rows from the corrupted table, (or only very few). The repair
command usually deletes thousands of rows in order to repair the table.

http://zeke.yi.org/linux/mysql.tables.corrupt

I haven't found any info on this error message but maybe someone has
seen it before?

BTW: I am using myisam table type in mysql.

I will let you know if I find the exact way to reproduce this problem.

Regards,

Shane



^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: 2.6.0-test2-mm3 and mysql
@ 2003-08-28 17:59 Heikki Tuuri
  2003-08-28 19:01 ` Sergey S. Kostyliov
  0 siblings, 1 reply; 26+ messages in thread
From: Heikki Tuuri @ 2003-08-28 17:59 UTC (permalink / raw)
  To: linux-kernel

Sergey,

does it always crash when you start mysqld?

It is page number 0 in the InnoDB tablespace. That is, the header page of
the whole tablespace!

The checksums in the page are ok. That shows the page was not corrupted in
the Linux file system.

InnoDB is trying to do an index search, but that of course crashes, because
the header page is not any index page.

The reason for the crash is probably that a page number in a pointer record
in the father node of the B-tree has been reset to zero. The corruption has
happened in the mysqld process memory, not in the file system of Linux.
Otherwise, InnoDB would have complained about page checksum errors.

No one else has reported this error. I have now added a check to a future
version of InnoDB which will catch this particular error earlier and will
hex dump the father page.

By the way, I noticed that a website http://www.linuxtestproject.org has
made an extensive regression test suite for Linux. They have also
successfully run big MySQL and DB2 stress tests on their computers, on
2.5.xx kernels. If there is something wrong with 2.5.xx or 2.6.0, it
apparently does not concern all computers.

"
The Linux Test Project test suite, ltp-20030807, has been released. The
latest version of the testsuite contains 2000+ tests for the Linux OS.
"

The general picture about InnoDB corruption is that reports have almost
stopped after I advised people on the mailing list to upgrade to
Linux-2.4.20 kernels.

With apologies,

Heikki
Innobase Oy
http://www.innodb.com

"
030827 15:34:10  InnoDB: Page checksum 1165918361, prior-to-4.0.14-form
checksum 4088416325
InnoDB: stored checksum 1165918361, prior-to-4.0.14-form stored checksum
4088416325
InnoDB: Page lsn 0 4080819655, low 4 bytes of lsn at page end 4080819655
InnoDB: Page directory corruption: supremum not pointed to
030827 15:34:10  InnoDB: Page dump in ascii and hex (16384 bytes):
 len 16384; hex 457e8099000000000000000000000000000000
00f33c5dc7000000000000f356ce970000000100000000000000
0000040f0000040240000000000000006c00000002000400000
1b60004000001de0000000400028000144e00040000009e0000
00360000000001160002800015de0000000000000b410000000
20000000200260002b5e500260000000200027d300026000119
3a0026000000000000000000014000207e00018000009e00000
003aaaaaaaaaaaaaaaa

...

000000000000000f3b04845f33c5dc7
"

From: Sergey S. Kostyliov (rathamahata@php4.ru)
Subject: Re: 2.6.0-test2-mm3 and mysql
View: Complete Thread (22 articles)
Original Format
Newsgroups: linux.kernel
Date: 2003-08-27 09:00:19 PST


On Monday 04 August 2003 04:05, Matt Mackall wrote:
> On Sun, Aug 03, 2003 at 10:58:17PM +0400, Sergey S. Kostyliov wrote:
> > Hello Andrew,
> >
> > On Sunday 03 August 2003 05:04, Andrew Morton wrote:
> > > Shane Shrybman <shrybman@sympatico.ca> wrote:
> > > > One last thing, I have started seeing mysql database corruption
> > > > recently. I am not sure it is a kernel problem. And I don't know the
> > > > exact steps to reproduce it, but I think I started seeing it with
> > > > -test2-mm2. I haven't ever seen db corruption in the 8-12 months I
> > > > have being playing with mysql/php.
> > >
> > > hm, that's a worry.  No additional info available?
> >
> > I also suffer from this problem (I'm speaking about heavy InnoDB
> > corruption here), but with vanilla 2.6.0-test2. I can't blame
> > MySQL/InnoDB because there are a lot of MySQL boxes around of me with
the
> > same (in fact the box wich failed is replication slave) or allmost the
> > same database setup. All other boxes (2.4 kernel) works fine up to now.
>
> All Linux kernels prior to 2.6.0-test2-mm3-1 would silently fail to
> complete fsync() and msync() operations if they encountered an I/O
> error, resulting in corruption. If a particular disk subsystem was
> producing these errors, the symptoms would likely be:
>
> - no error reported
> - no messages in logs
> - independent of kernel version, etc.
> - suddenly appear at some point in drive life
> - works flawlessly on other machines
>
> If you can reproduce this corruption, please try running against mm3-1
> and seeing if it reports problems (both to fsync and in logs).

I've just got another one InnoDB crash with 2.6.0-test4.
As in previous case there was no messages in kernel log.
You can find mysql error log here.
http://sysadminday.org.ru/linux-2.6.0-test4_InnoDB_crash

It's a development server, so this isn't a big problem.
I do understand that this can easily be a hardware problem,
but the kernel silence is really sad in such case.
Memory is fine (at least according to memtest 3.0).

Any hints will be appreciated.

-- 
                   Best regards,
                   Sergey S. Kostyliov <rathamahata@php4.ru>
                   Public PGP key: http://sysadminday.org.ru/rathamahata.asc



^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: 2.6.0-test2-mm3 and mysql
@ 2003-08-03 20:50 Heikki Tuuri
  0 siblings, 0 replies; 26+ messages in thread
From: Heikki Tuuri @ 2003-08-03 20:50 UTC (permalink / raw)
  To: linux-kernel

Sergey,

I looked at your .err file, and you have really got very bad corruption.

The first crash looks like there were index records in the insert buffer to
insert to a page, but the contents of that page were completely wiped to
zero.

After that crash, InnoDB fails to recover, because the log contains an index
record insertion to a page which is completely wiped to zero except for the
lsn field at the start and the end of the page.

Are you running the same workload on MySQL-4.0.14 on other computers?

What MySQL version did you run previously on this computer or did you create
the tablespace from scratch?

Did you upgrade MySQL before upgrading to Linux-2.6, or after that?

Before blaming Linux-2.6 we should know the same load runs ok on
MySQL-4.0.14 on some Linux-2.4 box.

Regards,

Heikki

........................
List:     linux-kernel
Subject:  Re: 2.6.0-test2-mm3 and mysql
From:     "Sergey S. Kostyliov" <rathamahata () php4 ! ru>
Date:     2003-08-03 18:58:17
[Download message RAW]

Hello Andrew,

On Sunday 03 August 2003 05:04, Andrew Morton wrote:
> Shane Shrybman <shrybman@sympatico.ca> wrote:

<cut>

>
> > One last thing, I have started seeing mysql database corruption
> > recently. I am not sure it is a kernel problem. And I don't know the
> > exact steps to reproduce it, but I think I started seeing it with
> > -test2-mm2. I haven't ever seen db corruption in the 8-12 months I have
> > being playing with mysql/php.
>
> hm, that's a worry.  No additional info available?
>

I also suffer from this problem (I'm speaking about heavy InnoDB corruption
here), but with vanilla 2.6.0-test2. I can't blame MySQL/InnoDB because
there are a lot of MySQL boxes around of me with the same (in fact the box
wich failed is replication slave) or allmost the same database setup.
All other boxes (2.4 kernel) works fine up to now.

Sorry but I can't provide additional info. There was no messages in kernel
log.
All I have is mysql error logs. But I'm afraid they are not very helpfull
for kernel developers.
http://sysadminday.org.ru/linux-2.6.0-test2_InnoDB_crash

System is x86 UP PIII 500, 1Gb RAM with software RAID1 over two scsi disks.



-- 
                   Best regards,
                   Sergey S. Kostyliov <rathamahata@php4.ru>
                   Public PGP key: http://sysadminday.org.ru/rathamahata.asc



^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: 2.6.0-test2-mm3 and mysql
@ 2003-08-03  9:10 Heikki Tuuri
  2003-08-03  9:27 ` Andrew Morton
  2003-08-03 16:55 ` Matt Mackall
  0 siblings, 2 replies; 26+ messages in thread
From: Heikki Tuuri @ 2003-08-03  9:10 UTC (permalink / raw)
  To: linux-kernel

Andrew,

I do not know about the specific corruption Shane is talking about, but I
could summarize what we have found out in the past 2 years. I have written
the InnoDB backend to MySQL, and have been hunting Linux corruption bugs for
2 years now.

- Corruption seems to happen on Red Hat kernels 2.4.18 under heavy file i/o
load on some computers.

- A user ran a very simple stress test of type SELECT 'abbaguu' with many
clients. On a 2-way Dell server he was able to get mysqld to crash
predictably in < 24 hours. Sometimes he also got corruption. But another,
cheaper computer worked ok. Both were running a Red Hat kernel 2.4.18. When
the user upgraded to a 'stock' kernel 2.4.20, the crashes and corruption
disappeared.

- Our 4-way Xeon SuSE-2.4.18 computer never corrupts databases, though I run
very heavy stress tests on it.

- Kernels 2.4.20 seem to be more reliable than 2.4.18. I have only one
corruption case from such a kernel.

- We know with certainty that corruption is sometimes caused by
OS/drivers/hardware and not by mysqld, because in some cases rebooting the
computer has magically fixed the corruption. Looks like Linux had corrupted
its own file cache, but the data on disk was ok. I reported this on the
Linux kernel mailing list 2 years ago, but got no definite feedback.

- In some cases InnoDB reports checksum errors in pages. In those cases it
is also very probable that the corruption was caused by OS/drivers/hardware,
and not by mysqld.

- I have not noticed any clear connection between corruption reports and the
used file system.

- I have personally tested on 4 Linux computers. On an old 2.2 kernel
computer I was able to get read errors in 30 seconds. The three 2.4 kernel
computers have worked ok.

My hypothesis is that there are bugs in drivers of Linux. That would explain
why some computers work ok. Or there are Linux kernel bugs which only
manifest on certain hardware under certain file i/o workload.

What to do? People who write drivers should run heavy, multithreaded file
i/o tests on their computer using some SQL database which calls fsync(). For
example, run the Perl '/sql-bench/innotest's all concurrently on MySQL. If
the problems are in drivers, that could help.

Best regards,

Heikki Tuuri
Innobase Oy

.................

List:     linux-kernel
Subject:  Re: 2.6.0-test2-mm3 and mysql
From:     Andrew Morton <akpm () osdl ! org>
Date:     2003-08-03 2:08:59
[Download message RAW]

Shane Shrybman <shrybman@sympatico.ca> wrote:
>
> The db corruption hit again on test2-mm2.

How do you know it is "db corruption"?

>
>  I am still backing out the 64 bit devt bit

why?



^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: 2.6.0-test2-mm3 and mysql
@ 2003-08-03  0:38 Shane Shrybman
  2003-08-03  1:04 ` Andrew Morton
  0 siblings, 1 reply; 26+ messages in thread
From: Shane Shrybman @ 2003-08-03  0:38 UTC (permalink / raw)
  To: linux-kernel

Hi,

mysql doesn't start on this kernel. This is a x86, preempt, ext2/3, UP
system. I get this in the mysql error log,

030802 20:01:17  mysqld started
030802 20:01:18  InnoDB: Error: the OS said file flush did not succeed
030802 20:01:18  InnoDB: Operating system error number 5 in a file
operation.
InnoDB: See http://www.innodb.com/ibman.html for installation help.
InnoDB: Look from section 13.2 at http://www.innodb.com/ibman.html
InnoDB: what the error number means or use the perror program of MySQL.
InnoDB: Cannot continue operation.
030802 20:01:18  mysqld ended

I also did an strace of mysql trying to start and when I tried to copy
the strace file to root's home I got some sort of IO error. I don't
remember the error exactly but I decided to run at that point and
rebooted. The file did seem to copy ok according to diff.

http://zeke.yi.org/linux/2.6.0-test2-mm3.strace.mysql
http://zeke.yi.org/linux/2.6.0-test2-mm3-config

BTW, CONFIG_DEBUG_INFO=y seems to make this kernel huge. I couldn't even
install the sucker because I didn't have enough space for the modules.
35 MB wasn't enough.

One last thing, I have started seeing mysql database corruption
recently. I am not sure it is a kernel problem. And I don't know the
exact steps to reproduce it, but I think I started seeing it with
-test2-mm2. I haven't ever seen db corruption in the 8-12 months I have
being playing with mysql/php.

None of these problems is critical for me (and they could be pilot
error) but I thought I should point them out.

Regards,

Shane


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2003-08-28 19:27 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-08-03 16:59 2.6.0-test2-mm3 and mysql Heikki Tuuri
2003-08-03 23:57 ` Matt Mackall
  -- strict thread matches above, loose matches on Subject: below --
2003-08-28 17:59 Heikki Tuuri
2003-08-28 19:01 ` Sergey S. Kostyliov
2003-08-28 19:10   ` Heikki Tuuri
2003-08-28 19:27     ` Sergey S. Kostyliov
2003-08-03 20:50 Heikki Tuuri
2003-08-03  9:10 Heikki Tuuri
2003-08-03  9:27 ` Andrew Morton
2003-08-03 10:43   ` Heikki Tuuri
2003-08-04 12:24     ` Denis Vlasenko
2003-08-04 18:29       ` Heikki Tuuri
2003-08-03 16:55 ` Matt Mackall
2003-08-03 17:11   ` Heikki Tuuri
2003-08-03 23:54     ` Matt Mackall
2003-08-03  0:38 Shane Shrybman
2003-08-03  1:04 ` Andrew Morton
2003-08-03  1:52   ` Con Kolivas
2003-08-03  1:59     ` Andrew Morton
2003-08-03  1:58   ` Shane Shrybman
2003-08-03  2:08     ` Andrew Morton
2003-08-03 15:01       ` Shane Shrybman
2003-08-03 19:25         ` Andrew Morton
2003-08-03 18:58   ` Sergey S. Kostyliov
2003-08-04  0:05     ` Matt Mackall
2003-08-27 15:52       ` Sergey S. Kostyliov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).