Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

nhận Mất kết nối với mysql khi sử dụng mysqldump ngay cả với tham số max_allowed_packet

Thử thêm --quick tùy chọn cho mysqldump của bạn yêu cầu; nó hoạt động tốt hơn với các bảng lớn. Nó truyền các hàng từ tập kết quả đến kết quả đầu ra chứ không phải chuyển toàn bộ bảng rồi viết ra.

 mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | \
 gzip  > dump_test.sql.gz

Bạn cũng có thể thử thêm --compress tùy chọn cho lệnh mysqldump của bạn. Điều đó làm cho nó sử dụng giao thức kết nối nén thân thiện với mạng hơn đến máy chủ MySQL của bạn. Lưu ý rằng bạn vẫn cần gzip đường ống; Giao thức nén của MySQL không gây ra kết xuất từ ​​mysqldump được nén.

Cũng có thể máy chủ đang hết thời gian kết nối với mysqldump khách hàng. Bạn có thể thử đặt lại khoảng thời gian chờ. Kết nối với máy chủ của bạn thông qua một số phương tiện khác và đưa ra các truy vấn này, sau đó chạy mysqldump của bạn công việc.

Những điều này đặt thời gian chờ thành một ngày theo lịch.

    SET GLOBAL wait_timeout=86400;
    SET GLOBAL interactive_timeout=86400;

Cuối cùng, nếu máy chủ của bạn ở xa máy của bạn (thông qua bộ định tuyến và tường lửa), điều gì đó có thể đang làm gián đoạn mysqldump kết nối của. Một số bộ định tuyến và tường lửa kém hơn có giới hạn thời gian cho các phiên NAT (dịch địa chỉ mạng). Họ phải giữ cho những phiên đó tồn tại trong khi chúng đang được sử dụng, nhưng một số thì không. Hoặc có thể bạn đang đạt đến giới hạn thời gian hoặc kích thước do công ty của bạn định cấu hình cho các kết nối bên ngoài.

Thử đăng nhập vào một máy gần máy chủ hơn và chạy mysqldump trên đó. Sau đó sử dụng một số phương tiện khác (sftp?) để sao chép tệp gz của bạn vào máy của riêng bạn.

Hoặc, bạn có thể phải phân đoạn kết xuất của tệp này. Bạn có thể làm điều gì đó như thế này (không được gỡ lỗi).

mysqldump  -uroot -h my.host -p'mypassword'  \ 
          db_name table_name --skip-create-options --skip-add-drop-table \
          --where="id>=0 AND id < 1000000" | \
          gzip....

Sau đó, lặp lại điều đó với những dòng này.

          --where="id>=1000000 AND id < 2000000" | \

          --where="id>=2000000 AND id < 3000000" | \
          ...

cho đến khi bạn nhận được tất cả các hàng. Đau ở cổ, nhưng sẽ có tác dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi Hibernate khi thực thi DDL qua Tuyên bố JDBC

  2. DATATYPE nào tốt hơn để sử dụng TEXT hoặc VARCHAR?

  3. Cái nào nhanh hơn - INSTR hay LIKE?

  4. Dấu thời gian MySQL chỉ khi tạo

  5. mysql kết hợp các khóa duy nhất