Как почистить логи или найти самые большие файлы и уменьшить место? Также я не понимаю, почему 1,7 Тб даже не используется в этот критический момент.
Mysqld не запущен, так как занято 99%.
# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 19G 279M 99% /
/dev/root 20G 19G 279M 99% /
devtmpfs 32G 268K 32G 1% /dev
/dev/md3 1.8T 196M 1.7T 1% /home
tmpfs 32G 0 32G 0% /dev/shm
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named
/dev/root 20G 19G 279M 99% /var/named/chroot/var/named
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.conf
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.rfc1912.zones
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/rndc.key
/dev/root 20G 19G 279M 99% /var/named/chroot/usr/lib64/bind
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.iscdlv.key
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.root.key
решение1
Данные MySQL хранятся в /var/lib
. В . Больше нет места /var
. MySQL не запускается. На самом деле, все просто. Посмотрите /var/log
и очистите его. Я бы порекомендовал что-то вроде (удалить все gz
файлы в /var/log
):
$ find /var/log -iname "*.gz" -delete
Конечно, сначала вам, возможно, захочется проверить, что именно удаляется:
$ find /var/log -iname "*.gz"
1,7 ТБ отдано /home
. Однако /var
не /home
. Так /home
что не используется. Просто также.
Вы, очевидно, должны были разделить /var
на гораздо больший раздел, когда настраивали свою систему. Теперь, лучшее решение, которое я могу найти, это переместить MySQL datadir на больший раздел ( /home
):
$ mv /var/lib/mysql /home
$ ln -s /home/mysql /var/lib/mysql
Если вы не хотите использовать ссылку, вам следует перенастроить MySQL для использования нового datadir, хранящегося в /home
. Отредактируйте /etc/mysql/my.cnf
и измените это:
datadir = /var/lib/mysql
к этому:
datadir = /home/mysql
Теперь, когда у MySQL есть свободное место, он должен запуститься без проблем. Вам действительно следует пересмотреть схему разделов, если вы размещаете такую важную базу данных.
Вы также можете изучить содержимое ваших журналов, поскольку приложения не должны писать в них так много, если все идет хорошо. Что-то может где-то работать некорректно.
решение2
Это полезная команда для поиска самых больших файлов:
du -ak /var | sort -nr | less
Использование:
du -ak
суммирует использование диска всеми ( -a
) файлами в /var
разделе и выводит размер в килобайтах ( -k
).
sort -nr
Объединяет список файлов и сортирует их в обратном ( -r
) числовом ( -n
) порядке.
less
Вывод будет разбит на страницы, так что вы сможете увидеть самых крупных нарушителей вверху и перемещаться вперед и назад по списку.
решение3
Я хотел бы отметить, что это также может быть проблема с бинарными журналами mysql, а не с самими файлами базы данных. Бинарные журналы по умолчанию размещаются в каталоге /var/log/mysql во многих случаях и, как правило, занимают в несколько раз больше места на диске, чем файлы базы данных. Это связано с тем, что бинарные журналы хранят все запросы на изменение данных SQL (UPDATE, INSERT и т. д.) для отслеживания изменений данных базы данных. Бинарные журналы не следует удалять напрямую командой shell rm, достаточно команды mysql на работающем движке базы данных. Для этого сервер mysql должен быть запущен. Я думаю, что перемещение каталога /var/lib/mysql в раздел /home должно освободить достаточно места на разделе /, чтобы сервер mysql смог запуститься. Таким образом, процедура должна быть следующей:
- Переместите данные MySQL в раздел /home, как описано @John WH Smith.
- Измените переменную datadir, как описано @John WH Smith, и запустите сервер MySQL.
- Подключитесь к серверу MySQL как пользователь root с помощью PMA, MySQL или другого клиента.
- Очистите двоичные журналы с помощью команд RESET MASTER или PURGE BINARY LOGS TO (подробности см. в документации по mysql).
- Остановите сервер mysql. Отредактируйте файл конфигурации mysql. Запомните значение переменной 'log_bin'. Она содержит путь и имя двоичных файлов журнала.
- Переместите все файлы binlog, включая индекс binlog, в каталог /home/mysql/.
- Измените значение переменной «log_bin» на «log_bin = /home/mysql/mysql-bin.log», а затем запустите базу данных mysql.