Mysqldump: Got errno 32 написали: "внезапно" много места по-прежнему... Установка Drupal 6

На dev-сервере я попытался запустить тот же script, который я использовал почти год, и в конце получил: mysqldump: Got errno 32 on write

На прошлой неделе ИТ-администратор просто восстановил виртуальный сервер за несколько дней до резервного копирования, и все это сработало.

Установка Drupal прекрасна, и живой сервер в порядке (дубликат dev-сервера)... у нас около 30 виртуальных серверов в одном окне, а ИТ-сервер SysAdmin выделил немало ресурсов.

Вот что я получаю с df -h на dev:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        18G  6.1G   12G  36% /
udev           1000M  4.0K 1000M   1% /dev
tmpfs           403M  228K  403M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1007M     0 1007M   0% /run/shm
/dev/sdb1       100G  8.1G   87G   9% /data
[email protected]:~$ 

и основной вывод после запуска моего script в командной строке:

ОШИБКА 1005 (HY000) в строке 5416: невозможно создать таблицу 'content_type_ses_job_postings' (errno: 28) mysqldump: Got errno 32 on написать ERROR 2003 (HY000): невозможно подключиться к серверу MySQL на '198.xx.xx.xx' (111) Обновлен IP-адрес сервера LDAP.

Обратите внимание, что я получил последнее ERROR 2003 о том, что не подключаюсь к серверу MySQL, даже если все работает, хотя этого не должно произойти, я думаю, что больше проблемы с пользователем как резервное копирование, сохранение, а затем импорт к "hold" db, который я затем переключаюсь на обновление контента, возможно, что-то, но это никогда не было проблемой.

Если error 32 связано с пространством, где может быть проблема пространства? Если это связано с разрешениями, в какой папке была бы проблема с разрешениями? Тем не менее, я не знаю, как или что могло бы динамически изменять разрешения в любом месте, как... Я уже говорил, я запускал эти скрипты около 8 месяцев без проблем?

Основы dev-сервера

  • MySQL 5.5.24
  • Ubuntu0.12.04.1
  • PHP 5.3

Ответ 1

Кажется странным

[[email protected]*****]# perror 28
OS error code  28:  No space left on device
[[email protected]*****]# perror 32
OS error code  32:  Broken pipe

Так как mysqldump продолжает разбиваться в произвольных местах, он связан с пространством и не имеет полного состояния диска, я бы заподозрил проблему на более глубоком уровне: пакет MySQL. Что такое пакет MySQL?

В соответствии с страница 99 книги

BookImage

вот параграфы 1-3, объясняющие это:

Код сетевой связи MySQL был написано в предположении, что запросы всегда достаточно короткие, и поэтому могут быть отправлены и обрабатывается сервером в одном куске, который называется пакетом в MySQL терминология. Сервер выделяет памяти для хранения временного буфера пакета, и он запрашивает достаточно подойдет полностью. Эта архитектура требует предосторожности, чтобы избежать на сервере заканчивается память --- колпачок на размер пакета, который этот вариант выполняет.

Код интереса по отношению к этот параметр находится в SQL/net_serv.cc. Взгляните на my_net_read(), затем следуйте по вызову my_real_read() и оплатите особое внимание net_realloc().

Эта переменная также ограничивает длину результата многих струнных функтонов. См. sql/field.cc и sql/intem_strfunc.cc.

Учитывая это объяснение, выполнение массовых INSERT будет загружать/выгружать пакет MySQL довольно быстро. Это особенно верно, когда max_allowed_packet слишком мал для заданной загрузки данных, поступающих на него.

Я писал об этом раньше: Сервер MySQL ушел, препятствуя импорту больших дампов

Попробуйте поднять max_allowed_packet для mysqldump до 1G следующим образом:

mysqldump --max-allowed-packet=1073741824 ...

и попробуйте mysqldump.

Если это не так, сделайте следующее:

Добавлено это в my.cnf

[mysqld]
max_allowed_packet = 1G

Затем войдите в MySQL как [email protected] и запустите этот

mysql> SET GLOBAL max_allowed_packet = 1024 * 1024 * 1024;

и попробуйте mysqldump.

Дайте ему попробовать!!!