Одной из частых причин повреждения таблиц mysql, является несоответствие свободного места в каталоге временных файлов mysql размеру таблицы.
Для избежания подобных проблем можно просто увеличить размер раздела /tmp на сервере. Но на много проще выделить для mysql отдельный каталог в разделе, где ему точно хватит свободного места.
Ниже представлен небольшой скрипт, который заменяет путь для каталога временных файлов на /home/mysql_tmp в конфигурационном файле /etc/my.cnf:
#!/bin/bash sed -i '/tmpdir/d' /etc/my.cnf sed -i '/\[mysqld\]/a tmpdir=\/home\/mysql_tmp' /etc/my.cnf mkdir /home/mysql_tmp chmod 1777 /home/mysql_tmp chown mysql.mysql /home/mysql_tmp service mysql restart
Раздел /home выбран сознательно, так как его размер будет достаточным для нужд mysql на большинстве серверов.
Проверим, как это работает, в результате должно получиться что-то вроде этого:
[root@nixc-tips.ru] # mysqladmin var|grep tmpdir | slave_load_tmpdir | /home/mysql_tmp | tmpdir | /home/mysql_tmp