InnoDB provides MySQL with a transaction-safe (ACID compliant) storage engine that has commit, rollback, \ and crash recovery capabilities. However, it cannot do so if the underlying operating system or hardware \ does not work as advertised. Many operating systems or disk subsystems may delay or reorder write operations \ to improve performance. On some operating systems, the very system call that should wait until all unwritten \ data for a file has been flushed - fsync() - might actually return before the data has been flushed to stable \ storage. Because of this, an operating system crash or a power outage may destroy recently committed data, or \ in the worst case, even corrupt the database because of write operations having been reordered. If data integrity \ is important to you, you should perform some "pull-the-plug" tests before using anything in production. \ On Mac OS X 10.3 and up, InnoDB uses a special fcntl() file flush method. Under Linux, it is advisable to \ disable the write-back cache.[http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html]
In ubuntu server, it is ON by default
hdparm -W0 /dev/hda1
Beware that some drives or disk controllers may be unable to disable the write-back cache.
These changes will NOT be saved on reboot. You must edit /etc/hdparm.conf. Also If you have a raid, hdparm works on the actual drives (/dev/sda1) not the raid drives (/dev/md0)...
So to disable write-cache for my raid5 on boot, just add this to the end of /etc/hdparm.conf
/etc/hdparm.conf
#mReschke for mysql optimization, see mreschke topic#108 /dev/sda3 { write_cache = off } /dev/sdb3 { write_cache = off } /dev/sdc3 { write_cache = off }
The mysql log files in /var/log/mysql can sometimes grow out of control. You can manage them with \ your /etc/mysql/my.cnf
expire_logs_days = x max_bindlog_size = xxM