Мой Webmin выдал сообщение об ошибке, в котором говорилось, что диск заполнен. После расследования я обнаружил, что 3 файла внутри /var/lib/mysql
стали слишком большими:
- mysql.ibd (8.8G)
- отменить_001 (8.4G)
- undo_003 (2.5G)
Я погуглил, чтобы проверить, можно ли удалить эти файлы, но предложение было против mysql.ibd, а четкой информации об undo_001 и undo_002 не было.
Как безопасно удалить файлы и какой из них восстановить на сервере? На данный момент свободно 0 байт, и я ничего не могу сделать на сервере.
Другой вопрос — как не допустить, чтобы эти файлы стали слишком большими.
решение1
Как безопасно удалить файлы и какой из них восстановить на сервере? На данный момент свободно 0 байт, и я ничего не могу сделать на сервере.
Не напрямую. Вам нужно будет удалить таблицы из mysql, чтобы освободить место. Помните, что это работает только для innodb, если вы установили innodb_file_per_table
В противном случае вам нужно будет удалить таблицы, создать дамп всей вашей базы данных и перезагрузить ее (и да... это требует места). В противном случае файл базы данных не сожмется.
Более простой путь — удалить другие файлы в вашей системе.
Относительно файла 2 UNDO:
Команды для удаления табличного пространства UNDO:
ALTER UNDO TABLESPACE tablespace_name SET INACTIVE;
DROP UNDO TABLESPACE tablespace_name;
И вы делаете это из командной строки MySQL. Вы потеряете возможность отката.
Пожалуйста, не размещайте базу данных mysql в той же системе, что и корневая система. Используйте раздел или другой диск. Если вы используете только один диск, то обычно его размещают /var/
на собственном разделе. Это предотвратит заполнение корня.
Чтобы освободить место, также посмотрите на /var/log/
Все, что имеет .gz
в конце, можно удалить. То же самое касается файлов, заканчивающихся на цифру *[0-9]
. Это все резервные копии файлов журналов, и иногда они тоже становятся большими.
Это автоматически удалит журналы отмены:
SET GLOBAL innodb_undo_log_truncate=ON;