mysqld больше не запускается из-за заполнения диска

mysqld больше не запускается из-за заполнения диска

Как почистить логи или найти самые большие файлы и уменьшить место? Также я не понимаю, почему 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 смог запуститься. Таким образом, процедура должна быть следующей:

  1. Переместите данные MySQL в раздел /home, как описано @John WH Smith.
  2. Измените переменную datadir, как описано @John WH Smith, и запустите сервер MySQL.
  3. Подключитесь к серверу MySQL как пользователь root с помощью PMA, MySQL или другого клиента.
  4. Очистите двоичные журналы с помощью команд RESET MASTER или PURGE BINARY LOGS TO (подробности см. в документации по mysql).
  5. Остановите сервер mysql. Отредактируйте файл конфигурации mysql. Запомните значение переменной 'log_bin'. Она содержит путь и имя двоичных файлов журнала.
  6. Переместите все файлы binlog, включая индекс binlog, в каталог /home/mysql/.
  7. Измените значение переменной «log_bin» на «log_bin = /home/mysql/mysql-bin.log», а затем запустите базу данных mysql.

Связанный контент