Vì vậy, tôi có một máy chủ db thử nghiệm được thiết lập trên luồng sao chép. Với cái tên, một sự tối ưu hóa đã xuất hiện nhanh chóng lấp đầy không gian trên datadir nô lệ. Mysql đàng hoàng chờ đợi thêm không gian.
Datadir này là một hệ thống tệp CHỈ được sử dụng làm datadir của mysql nên không có gì khác để giải phóng.
Tôi đã có một bảng thử nghiệm innodb 4 gig không phải là một phần của luồng sao chép vì vậy tôi nghĩ rằng tôi sẽ thử một cái gì đó để xem nó có hoạt động không, và là một môi trường thử nghiệm tôi không quá lo lắng nếu mọi thứ trở nên tồi tệ.
Đây là các bước tôi đã thực hiện
- Rửa bàn tôi chuẩn bị di chuyển
- Đặt một khóa đọc trên nó (mặc dù không có gì được viết cho nó và nó không nằm trong luồng sao chép)
- Sao chép .frm và .ibd qua hệ thống tập tin với một số phòng dự phòng
- Mở khóa bàn
- Rút ngắn bảng đó - điều này giải phóng đủ không gian để tối ưu hóa hoàn thành có bản sao bắt đầu lặp lại.
- Dừng slave / shutdown mysql
- Sao chép tệp ra khỏi tmp trở lại thư mục dữ liệu
- Khởi động lại mysql
Không có gì hiển thị trong nhật ký .err, mọi thứ có vẻ tốt. Tôi kết nối và sử dụng mydb; và thấy cái bàn tôi đang rối tung trong những cái bàn trưng bày. Nhưng, nếu tôi cố gắng
select * from testtable limit 10;
Tôi nhận được lỗi
ERROR 1146 (42S02): Table 'mydb.testtable' doesn't exist
Từ những gì tôi có thể nói cho đến nay tôi có thể đọc từ tất cả các bảng khác tốt và sao chép bắt đầu sao lưu bất kỳ khiếu nại nào.
Có bất cứ điều gì tôi có thể làm để phục hồi từ thời điểm này? Tôi có thể xây dựng lại từ đầu nếu cần nhưng tò mò người khác nghĩ gì về liên doanh này nói chung. Có bất cứ điều gì về chuỗi các bước tôi đã thực hiện sẽ có kết quả hoàn hảo hơn không?
Điều gì sẽ xảy ra nếu đây không phải là máy chủ thử nghiệm mà tôi không thể 'thực hiện trực tiếp' và xem điều gì sẽ xảy ra? Điều gì sẽ có cách tốt nhất để giải phóng không gian tạm thời trên một nô lệ sản xuất nếu tôi phải như vậy?
Table 'X' doesn't exist in engine
. Tôi có phải thực hiện phương pháp trên cho mỗi bảng không hoặc có cách nào tốt hơn để khắc phục điều đó không?