Cài đặt CentOS mới.
Tôi đang chạy một DB lớn (tệp 2 GB) và gặp sự cố. Máy khách SSH dường như mất kết nối và quá trình nhập dường như bị đóng băng. Tôi đã sử dụng một cửa sổ khác để đăng nhập vào mysql và quá trình nhập dường như đã chết, bị kẹt trên một bảng hàng 3M cụ thể.
Vì vậy, tôi đã cố gắng
DROP DATABASE huge_db;
15-20 phút sau, không có gì. Trong một cửa sổ khác, tôi đã làm:
/etc/init.d/mysqld restart
Cửa sổ DROP DB bị rối: SERVER SHUTDOWN. Sau đó, tôi thực sự khởi động lại máy chủ vật lý.
Đăng nhập lại vào mysql, kiểm tra và db vẫn ở đó, chạy
DROP DATABASE huge_db;
một lần nữa và một lần nữa tôi đã đợi khoảng 5 phút.
Một lần nữa, đó là cài đặt mới. Đây huge_db
là db duy nhất (trừ dbs hệ thống). Tôi thề rằng tôi đã bỏ db lớn như vậy trước đây và nhanh chóng, nhưng có lẽ tôi đã sai.
Tôi đã bỏ thành công cơ sở dữ liệu. Phải mất khoảng 30 phút. Cũng lưu ý rằng tôi nghĩ rằng tôi đã nhầm khi tôi nghĩ rằng việc nhập mysqldump đã chết. Kết nối đầu cuối bị mất, nhưng tôi nghĩ rằng quá trình vẫn đang chạy. Tôi rất có thể đã giết bảng giữa nhập (bảng hàng 3M) và có thể là 3/4 chặng đường qua toàn bộ db. Thật sai lầm khi "top" cho thấy mysql chỉ sử dụng 3% bộ nhớ, khi có vẻ như nó nên được sử dụng nhiều hơn.
Mất DB cuối cùng mất 30 phút, vì vậy, một lần nữa, tôi có thể không phải khởi động lại máy chủ và có thể chỉ cần đợi DROP kết thúc, nhưng tôi không biết mysql sẽ phản ứng thế nào khi nhận được truy vấn DROP cho cùng một db mà nó đang nhập thông qua mysqldump.
Tuy nhiên, câu hỏi vẫn còn đó, tại sao phải mất 30 phút + để DROP cơ sở dữ liệu 2GB khi tất cả những gì cần làm là xóa tất cả các tệp db và xóa tất cả các tham chiếu đến DB khỏi information_schema? Vấn đề lớn là gì?
DROP DATABASE
lệnh, máy chủ sẽ không tiến hành cho đến khi tất cả các kết nối đã bị đóng.