Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день! Проблема в следующем:
На сервере (fedora) стоит MySQL. Одна из ее баз очень сильно разрослась и было принято решение почистить ее. Перед очищением базы места оставалось 9%.
А после запуска очистки с помощью команды DELETE FROM 'бла-бла';
процесс после минут 20 был прерван ошибкой: ERROR 1114 (HY000): The table 'бла-бла' is full
После чего место на диске стало занято на 100%.
Я так понимаю, что ошибка и возникла из-за того, что место закончилось.
Но почему это произошло не смог понять... ведь место должно было освободиться.
Подскажите пожалуйста с чем это может быть связано?
Неактивен
Скорее всего, таблица была InnoDB, и хранилище начало создавать копии
страниц для того, чтобы иметь возможность откатить транзакцию, если Вы
это укажете вдальнейшем.
Неактивен
Не смог найти эти копии... Не подскажите, где их искать, для удаления? И как отключить их создание при дальнешей очистке?
Неактивен
Они внутри одного и того же файла, Вы не сможете их «найти». Можете
Если разросся файл ibdata1, то его уменьшить уже не удастся. Если включен
innodb_file_per_table, то может помочь ALTER TABLE tablename ENGINE=InnoDB,
который пересоздаст файлики с таблицами (но на время создания нужно
место на диске, куда будет пересоздана таблица.
Если есть место в другом разделе, можете:
1. Остановить MySQL.
2. Перенести какой-то из больших файлов в другой раздел.
3. Поставить символическую ссылку на старое место файла.
4. Запустить MySQL и почистить.
Вдальнейшем просто не старайтесь удалить половину таблицы одной
транзакцией. Вполне нормально будет тысяча подходов по тысяче строк
в разных транзакциях.
Неактивен