gpt4 book ai didi

mysqldump:写入时出现 errno 32: 'all of a sudden' 仍有足够的空间...Drupal 6 安装

转载 作者:IT老高 更新时间:2023-10-29 00:20:43 29 4
gpt4 key购买 nike

在开发服务器上,我尝试运行我使用了将近一年的相同脚本,最后得到:mysqldump: Got errno 32 on write

上周,IT 系统管理员刚刚将虚拟服务器恢复到备份前几天,一切正常。

Drupal 安装很好,实时服务器也很好(开发服务器的副本)...我们在同一个机器上大约有 30 个虚拟服务器,IT 系统管理员分配了很多资源。

这是我在开发中使用 df -h 得到的结果:

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
xxxx@dev1:~$

以及在命令行中运行我的脚本后的基本输出:

ERROR 1005 (HY000) at line 5416: Can't create table 'content_type_ses_job_postings' (errno: 28) mysqldump: Got errno 32 on write ERROR 2003 (HY000): Can't connect to MySQL server on '198.xx.xx.xx' (111) LDAP server IP updated.

请注意,我得到最后一个 ERROR 2003 关于未连接到 MySQL 服务器的信息,即使一切正常,所以虽然这不应该发生,但我认为这更多的是用户问题,因为数据库备份,保存,然后导入到 'holding' 数据库,然后我在更新内容时切换到它,所以也许这就是问题,但这从来都不是一个特定的问题。

如果error 32与空间有关,空间问题可能出在哪里?如果它与权限有关,权限问题会出现在哪个文件夹上?但是,我不知道如何或什么可以动态更改任何地方的权限...我之前说过,我已经运行这些脚本大约 8 个月没有问题?

开发服务器的基础知识

  • MySQL 5.5.24
  • Ubuntu0.12.04.1
  • PHP 5.3

最佳答案

看起来很奇怪

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

由于 mysqldump 总是在随机的地方中断,它与空间有关,并且没有磁盘满的情况,我会怀疑更深层次的问题:MySQL 数据包。什么是 MySQL 数据包?

根据page 99 of the Book

BookImage

这里是第 1-3 段解释它:

MySQL network communication code was written under the assumption that queries are always reasonably short, and therefore can be sent to and processed by the server in one chunk, which is called a packet in MySQL terminology. The server allocates the memory for a temporary buffer to store the packet, and it requests enough to fit it entirely. This architecture requires a precaution to avoid having the server run out of memory---a cap on the size of the packet, which this option accomplishes.

The code of interest in relation to this option is found in sql/net_serv.cc. Take a look at my_net_read(), then follow the call to my_real_read() and pay particular attention to net_realloc().

This variable also limits the length of a result of many string functons. See sql/field.cc and sql/intem_strfunc.cc for details.

鉴于此解释,批量插入将相当快地加载/卸载 MySQL 数据包。当 max_allowed_pa​​cket 对于给定的数据负载来说太小时尤其如此。

我之前写过这个:MySQL server has gone away obstructing import of large dumps

尝试提高 max_allowed_packet for the mysqldump1G如下:

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

并尝试 mysqldump。

如果不这样做,那么这样做:

将此添加到 my.cnf

[mysqld]
max_allowed_packet = 1G

然后,以 root@localhost 身份登录 MySQL 并运行它

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

并尝试 mysqldump。

试试看!!!

关于mysqldump:写入时出现 errno 32: 'all of a sudden' 仍有足够的空间...Drupal 6 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533323/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com