Hãy thử thêm tùy chọn --quick
vào lệnh mysqldump
của bạn; Nó hoạt động tốt hơn với các bảng lớn. Nó truyền các hàng từ kết quả đến đầu ra thay vì nhúng toàn bộ bảng, sau đó viết nó 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 tùy chọn --compress
vào 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 cho máy chủ MySQL của bạn. Lưu ý rằng bạn vẫn cần ống gzip
; Giao thức nén của MySQL không làm cho bãi rác ra khỏi mysqldump
được nén.
Cũng có thể máy chủ đang định thời gian kết nối với máy khách mysqldump
. Bạn có thể thử đặt lại thời gian chờ thời gian. 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à phát hành các truy vấn này, sau đó chạy công việc mysqldump
của bạn.
Chúng đặt thời gian chờ vào một ngày 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 ở rất xa máy của bạn [thông qua bộ định tuyến và tường lửa], điều gì đó có thể gây gián đoạn kết nối của ____ 5. Một số bộ định tuyến và tường lửa kém hơn có giới hạn thời gian trên các phiên NAT [Dịch địa chỉ mạng]. Họ được cho là giữ cho các phiên đó tồn tại trong khi chúng đang sử dụng, nhưng một số không. Hoặc có thể bạn đang đạt được giới hạn thời gian hoặc kích thước được cấu hình bởi công ty của bạn cho các kết nối bên ngoài.
Hãy thử đăng nhập vào một máy gần hơn với máy chủ 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 một cái gì đó như thế này [không 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 nó sẽ hoạt động.
Gần đây, một tập lệnh MySQLDump của MySQLDump bắt đầu không thành công trên máy chủ đèn của khách hàng với lỗi sau:mysqldump script recently started to fail on a customer's LAMP server with the following error:
MySQLDump: Lỗi 2013: Mất kết nối với máy chủ MySQL trong quá trình truy vấn khi bán bảng `wp_wfhoover` ở hàng: 458317mysqldump: Có lỗi: 2002:" Không thể kết nối với máy chủ MySQL cục bộ thông qua ổ cắm '/var/run/mysqld/mysqld.sock Không
mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [111]" when trying to connect
mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' [111]" when trying to connect
Giới hạn kích thước gói cho phép tối đa
Mặc dù "Mất kết nối với máy chủ MySQL" nghe giống như một vấn đề giao tiếp ở cấp độ mạng hoặc MySQL không có sẵn trong quá trình MySQLDump, nhưng rất có thể là vấn đề "kích thước gói". Một lỗi tốt hơn [và tự giải thích] thực sự sẽ là một thứ gì đó như "Got Too Lig Packet"."packet size" problem. A much better [and self-explaining] error would actually be something such as "got too big packet".
Để truy xuất dữ liệu lớn từ bảng, có thể cần phải điều chỉnh dữ liệu lớn, có thể cần phải điều chỉnh dữ liệu "MAX. Lệnh MySQLDUMP [Máy khách] đặt giá trị mặc định là 24 MB cho tham số--max-được cho phép. Đối với bảng này [wp_wfhoover], điều này là không đủ.. The mysqldump [client] command sets a default value of 24 MB for the --max-allowed-packet parameter. For this table [wp_wfHoover] this was not enough.
Lưu ý: Kiểm tra bài viết này để tìm ra kích thước dữ liệu của các bảng MariaDB / MySQL.
Sau khi nối thêm tham số gói--max-được cho phép có giá trị cao hơn cho lệnh mysqldump, tập lệnh sao lưu đã hoạt động trở lại, mà không ném bất kỳ lỗi nào:--max-allowed-packet parameter with a higher value to the mysqldump command, the backup script worked again, without throwing any errors:
root@db: ~# mysqldump-routines --Events--single-transaction --quick--max-cholowed-packet = 256m dbnamemysqldump --routines --events --single-transaction --quick --max-allowed-packet=256m DBNAME
Các lý do tiềm năng khác gây ra "lỗi 2013" có thể là các vấn đề liên quan đến thời gian chờ. Xem bài viết này để biết thêm gợi ý.
Mysql thực sự là "đã biến mất"
Lỗi trên cũng có thể hiển thị, nếu trong quá trình MySQLDump, máy chủ cơ sở dữ liệu thực sự đã biến mất. Kiểm tra nhật ký lỗi MySQL của bạn [thường là in /var/log/mysql/error.log] và nhật ký hệ thống, bao gồm DMESG. Khi bạn thấy các sự kiện có "OOM", hệ thống của bạn đã hết bộ nhớ:
root@db: ~# dmesg [...] [THU ngày 27 tháng 1 ] Quá trình bị giết 12509 [MySQLD] Total-VM: 5527388kb, Anon-RSS: 2048568kb, File-RSS: 0kb, Shmem-rss: 0kb [Thu 27 23:02:33 2022] Bây giờ anon-rss: 0kb, file-rss: 0kb, shmem-rss: 0kb [Thứ sáu ngày 28 tháng 1 0, oom_score_adj = 0dmesg
[...]
[Thu Jan 27 23:02:33 2022] Memory cgroup out of memory: Kill process 12509 [mysqld] score 279 or sacrifice child
[Thu Jan 27 23:02:33 2022] Killed process 12509 [mysqld] total-vm:5527388kB, anon-rss:2048568kB, file-rss:0kB, shmem-rss:0kB
[Thu Jan 27 23:02:33 2022] oom_reaper: reaped process 12509 [mysqld], now anon-rss:0kB, file-rss:0kB,
shmem-rss:0kB
[Fri Jan 28 00:04:38 2022] mysqld invoked oom-killer: gfp_mask=0x6200ca[GFP_HIGHUSER_MOVABLE], nodemask=[null], order=0, oom_score_adj=0
Thêm một bình luận
Hiển thị biểu mẫu để lại nhận xét
Nhận xét [mới nhất đầu tiên]
Chưa có nhận xét nào.