2013-07-08 17 views
11

Trên máy chủ dev, tôi đã cố gắng chạy cùng một tập lệnh tôi đã sử dụng gần một năm và tại kết thúc có: mysqldump: Got errno 32 viếtmysqldump: Got errno 32 viết: 'tất cả đột ngột' nhiều phòng ... Drupal 6 cài đặt

Tuần trước, hệ thống CNTT chỉ khôi phục máy chủ ảo đến vài ngày trước khi sao lưu và tất cả hoạt động.

Cài đặt Drupal là tốt và máy chủ trực tiếp là tốt (bản sao của máy chủ dev) ... chúng tôi có khoảng 30 máy chủ ảo trên cùng một hộp và SysAdmin CNTT đã cấp phát khá nhiều tài nguyên.

Dưới đây là những gì tôi nhận được với df -h trên 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]:~$ 

và đầu ra cơ bản sau khi chạy kịch bản của tôi trong dòng lệnh:

ERROR 1005 (HY000) tại dòng 5416 : Không thể tạo bảng 'content_type_ses_job_postings' (errno: 28) mysqldump: Got errno 32 trên viết LRI 2003 (HY000): Không thể kết nối với máy chủ MySQL trên '198.xx.xx.xx' (111) Đã cập nhật IP máy chủ LDAP.

Lưu ý rằng tôi nhận được rằng cuối cùng ERROR 2003 về việc không kết nối với máy chủ MySQL ngay cả khi tất cả các công trình nên dù rằng không nên xảy ra, tôi nghĩ rằng đó là nhiều vấn đề người sử dụng như sao lưu cơ sở dữ liệu, tiết kiệm, và sau đó nhập vào db 'giữ' mà sau đó tôi chuyển sang khi cập nhật nội dung vì vậy có lẽ đó là một cái gì đó, nhưng nó không bao giờ là một vấn đề cụ thể.

Nếu error 32 có liên quan đến không gian, vấn đề về không gian có thể ở đâu? Nếu nó liên quan đến quyền, thư mục nào sẽ có vấn đề về quyền truy cập? Tuy nhiên, tôi không biết làm thế nào hoặc những gì có thể đã tự động thay đổi các điều khoản bất cứ nơi nào như ... Tôi đã nói trước đây, tôi đã chạy các kịch bản này trong khoảng 8 tháng mà không có vấn đề gì?

Các vấn đề cơ bản của máy chủ dev

  • MySQL 5.5.24
  • Ubuntu0.12.04.1
  • PHP 5,3
+0

Tập tin bạn đã tạo với mysqldump lớn đến mức nào, hoặc bạn đang định tuyến mysqldump ở đâu đó ??? – RolandoMySQLDBA

+0

Có phải 'content_type_ses_job_postings' lớn hơn bây giờ là 8 tháng trước không? – RolandoMySQLDBA

+0

Là 'content_type_ses_job_postings' một bảng MyISAM ??? – RolandoMySQLDBA

Trả lời

18

vẻ lạ

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

Kể từ khi mysqldump tiếp tục vi phạm ở những nơi ngẫu nhiên, đó là spa ce liên quan, và không có điều kiện đầy đủ đĩa, tôi sẽ nghi ngờ vấn đề ở một lớp sâu hơn: Gói MySQL. Gói MySQL là gì?

Theo page 99 of the Book

BookImage

đây là đoạn 1-3 giải thích nó:

mã truyền tin mạng MySQL là viết theo giả định rằng truy vấn luôn hợp lý ngắn, và do đó có thể được gửi đến và được xử lý bởi máy chủ trong một đoạn, được gọi là gói trong MySQL thuật ngữ. Máy chủ phân bổ bộ nhớ cho bộ đệm tạm thời để lưu trữ gói và yêu cầu đủ để khớp hoàn toàn với bộ nhớ. Kiến trúc này yêu cầu đề phòng để tránh việc máy chủ hết bộ nhớ --- nắp về kích thước của gói, tùy chọn này hoàn thành.

Mã quan tâm liên quan đến tùy chọn này được tìm thấy trong sql/net_serv.cc. Hãy nhìn vào my_net_read(), sau đó làm theo lời kêu gọi my_real_read() và trả ý đặc biệt đến net_realloc().

Biến này cũng giới hạn độ dài kết quả của nhiều chuỗi functon. Xem sql/field.ccsql/intem_strfunc.cc để biết chi tiết.

Với giải thích này, việc INSERT hàng loạt sẽ tải/dỡ gói MySQL một cách nhanh chóng. Điều này đặc biệt đúng khi max_allowed_packet quá nhỏ cho tải dữ liệu đã cho.

tôi đã viết về vấn đề này trước: MySQL server has gone away obstructing import of large dumps

Cố gắng nâng max_allowed_packet for the mysqldump để 1G như sau:

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

và thử mysqldump.

Nếu điều này không làm điều đó, sau đó làm điều này:

gia tăng này để my.cnf

[mysqld] 
max_allowed_packet = 1G 

Sau đó, đăng nhập vào MySQL như [email protected] và chạy này

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

và hãy thử mysqldump.

Hãy thử!

+0

Thông tin tuyệt vời! Cám ơn rất nhiều. Tôi đăng nhập vào cả dev/live vào mysql, được gọi là Status và cả hai cho thấy không có cơ sở dữ liệu sử dụng ??? Nhưng, sau khi làm điều đó, tôi làm mới trình duyệt của mình và mọi thứ trở lại bình thường. Tôi sẽ kiểm tra biến đó .. Tôi biết trong tệp php.ini tôi có: memory_limit: -1 post_max_size 500M upload_max_filesize 450M Vì vậy, bây giờ tôi sẽ kiểm tra biến mà bạn đã đề cập, cảm ơn một lần nữa! –