Ответ 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 книги
вот параграфы 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.
Дайте ему попробовать!!!