List:General Discussion« Previous MessageNext Message »
From:<sinisa Date:August 22 2000 11:52am
Subject:Re: mysqld getting killed during OPTIMIZE, causes corruption
View as plain text  
Bill Marrs writes:
 > >Description:
 >   While running OPTIMIZE TABLE, server process gets killed mysteriously,
 > this can sometimes cause database corruption.
 > 
 >   The mysqld error log has this in it:
 > ------------------
 > 000821 14:22:11  Aborted connection 600 to db: 'TZ' user: 'root' host: `localhost'
(Got an error writing communication packets)
 > 
 > Number of processes running now: 1
 > mysqld process hanging, pid 28604 - killed
 > 000821 14:24:43  mysqld restarted
 > /usr/local/libexec/mysqld: ready for connections  
 > ------------------
 > 
 >   My Perl script got this error back:
 > 
 > DBD::mysql::db do failed: Lost connection to MySQL server during query at
tz/daily_tz line 975.
 > 
 > ...then a number of these as it attempted to OPTIMIZE the tables after that:
 > 
 > DBD::mysql::db do failed: MySQL server has gone away at tz/daily_tz line 975.
 > Use of uninitialized value at tz/daily_tz line 976.
 > .
 > .
 > .
 > 
 > But, it did recover and eventually started working again, optimizing the
 > last few tables.  In this case there was no database corruption.  The
 > two previous times this happened, there was. 
 > 
 > I did do a "FLUSH TABLES" just before doing the OPTIMIZE TABLE;
 > 
 > The problem always occurs after it optimizes one table and before it
 > optomizes the next one.  The first table is:
 > 
 > CREATE TABLE AdLog (
 >   UID int(11) NOT NULL auto_increment,
 >   Ad int(11) DEFAULT '0' NOT NULL,
 >   User int(11) DEFAULT '0' NOT NULL,
 >   Created datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
 >   Type enum('impression','click-thru') DEFAULT 'impression' NOT NULL,
 >   Host varchar(255) DEFAULT '' NOT NULL,
 >   Mode int(11) DEFAULT '1' NOT NULL,
 >   PRIMARY KEY (UID),
 >   KEY Created (Created),
 >   KEY Type (Type)
 > )/*! type=MyISAM */;
 > 
 > The next table is:
 > 
 > CREATE TABLE Adverts (
 >   UID int(11) NOT NULL auto_increment,
 >   Banner varchar(255),
 >   Code text,
 >   Priority enum('high','default','below') DEFAULT 'high' NOT NULL,
 >   Info varchar(255),
 >   URL varchar(255),
 >   TotalImps int(11),
 >   TotalClicks int(11),
 >   ImpsSoFar int(11) DEFAULT '0' NOT NULL,
 >   ClicksSoFar int(11),
 >   Status enum('on','off') DEFAULT 'on' NOT NULL,
 >   StartDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
 >   EndDate datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
 >   Mode int(11) DEFAULT '1' NOT NULL,
 >   AltCode text,
 >   PRIMARY KEY (UID)
 > )/*! type=MyISAM */;
 > 
 > The AdLog table is always getting frequest DELAYED INSERTS done to it,
 > even while the OPTIMIZE TABLE is executing.
 > 
 > The Adverts table gets frequent UPDATES done to it.
 > 
 > The OPTIMIZE of the AdLog table took 25 seconds, it has 189,525 rows.
 > 
 > The OPTIMIZE of the Adverts failes (with the "Lost connection" error).
 > 
 > I have delayed-key-writes turned on for all tables.
 > 
 > This is how I run mysqld:
 > 
 > $bindir/safe_mysqld \
 >         --user=$mysql_daemon_user --datadir=$datadir 
 > 	--pid-file=$pid_file --log=$log_file  --log-slow-queries
 > 	--delay-key-write-for-all-tables --skip-networking & 
 > 
 > Let me know if there's something I can do to help track this down.  I
 > suspect this will keep happening most morning when the script runs, if I
 > let it.  The corruption seems to be fixable with myisamchk -r.  I
 > suspect it's just that the keys are messed up (the errors I saw seemed
 > to indicate that, but I'm not sure).
 > 
 > When I did get errors in the mysqld log file after the corruption
 > occurred, this is what they looked like:
 > 
 > 000821  7:18:16  read_next: Got error 134 when reading table Trades
 > 000821  7:18:16  read_next: Got error 134 when reading table Games
 > 
 > >How-To-Repeat:
 > 
 > 	It has now happened to me 3 times, but have not been able to
 > come up with a repeatable test case.  Several attempts and guess as to
 > what's causing it have not yielded any problems.  This happened Saturday
 > morning, then again Monday morning (today).  Then just now, monday
 > afternoon when I ran the script by had.
 > 
 > >Fix:
 > 	I don't need to run OPTIMIZE on my tables, it just seemed like a
 > good idea.
 > 
 > >Submitter-Id:	<submitter ID>
 > >Originator:	Bill Marrs
 > >Organization:  Game Trading Zone (http://gametz.com)
 >  
 > >MySQL support: licence (I think, though I'm not sure)
 > >Synopsis:	mysqld getting killed during OPTIMIZE, causes corruption
 > >Severity:	serious
 > >Priority:	medium
 > >Category:	mysql
 > >Class:		sw-bug
 > >Release:	mysql-3.23.22-beta (Source distribution)
 > >Server: /usr/local/bin/mysqladmin  Ver 8.8 Distrib 3.23.22-beta, for
pc-linux-gnu on i686
 > TCX Datakonsult AB, by Monty
 > 
 > Server version		3.23.22-beta-log
 > Protocol version	10
 > Connection		Localhost via UNIX socket
 > UNIX socket		/tmp/mysql.sock
 > Uptime:			3 min 41 sec
 > 
 > Threads: 19  Questions: 7903  Slow queries: 1  Opens: 91  Flush tables: 1  Open
tables: 49 Queries per second avg: 35.760
 > >Environment:
 > 	
 > System: Linux ugtz.com 2.2.16 #4 SMP Thu Jun 22 17:12:22 EDT 2000 i686 unknown
 > Architecture: i686
 > 
 > Some paths:  /usr/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
 > GCC: Reading specs from
/usr/local/pgcc/lib/gcc-lib/i686-pc-linux-gnu/pgcc-2.95.2/specs
 > gcc version pgcc-2.95.2 19991024 (release)
 > Compilation info: CC='gcc'  CFLAGS=''  CXX='c++'  CXXFLAGS=''  LDFLAGS=''
 > LIBC: 
 > lrwxrwxrwx    1 root     root           13 Sep 29  1999 /lib/libc.so.6 ->
libc-2.1.1.so
 > -rwxr-xr-x    1 root     root      4016683 Apr 16  1999 /lib/libc-2.1.1.so
 > -rw-r--r--    1 root     root     19533408 Apr 16  1999 /usr/lib/libc.a
 > -rw-r--r--    1 root     root          178 Apr 16  1999 /usr/lib/libc.so
 > Configure command: ./configure  --with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static --with-gnu-ld --with-extra-charsets=none
 > Perl: This is perl, version 5.005_03 built for i686-linux


Hi!

Can you try our binary version in order and check if a problem reccurs 
??

Do note that your glinc is not a stable one !!!!

Also please check that you do not have shutdown command in some script 
or cron job.

If you can make a repeatable test case where the above always happens, 
but with out binary distribution, please repost your mail with a name
of the file uploaded to our ftp://support.mysql.com/pub/mysql/secret
directory. 

Your uploaded file should contains dumps of all tables involved, your
scripts and exact procedure how to repeat the error.

Regards,

Sinisa

+----------------------------------------------------------------------+
|      ____  __     _____   _____  ___     ==  MySQL AB                |
|     /*/\*\/\*\   /*/ \*\ /*/ \*\ |*|     Sinisa Milivojevic          |
|    /*/ /*/ /*/   \*\_   |*|   |*||*|     mailto:sinisa@stripped     |
|   /*/ /*/ /*/\*\/*/  \*\|*|   |*||*|     Larnaka, Cyprus             |
|  /*/     /*/  /*/\*\_/*/ \*\_/*/ |*|____                             |
|  ^^^^^^^^^^^^/*/^^^^^^^^^^^\*\^^^^^^^^^^^                            |
|             /*/             \*\                Developers Team       |
+----------------------------------------------------------------------+
Thread
mysqld getting killed during OPTIMIZE, causes corruptionBill Marrs21 Aug
  • Re: mysqld getting killed during OPTIMIZE, causes corruptionBill Marrs21 Aug
    • DBI::DBD::mysql problems...Ranga21 Aug
  • Re: DBI::DBD::mysql problems...Jan Dvorak22 Aug
  • Re: mysqld getting killed during OPTIMIZE, causes corruptionsinisa22 Aug
    • Re: mysqld getting killed during OPTIMIZE, causes corruptionBill Marrs22 Aug
      • Re: mysqld getting killed during OPTIMIZE, causes corruptionsinisa22 Aug
        • Re: mysqld getting killed during OPTIMIZE, causes corruptionBill Marrs22 Aug