2008-12-10 31 views
6

Trong MySQL, bằng cách sử dụng sao chép dựa trên nhân rộng tôi giả định rằng mỗi câu lệnh SQL được thực hiện trên slave chính xác giống như trên master. Tuy nhiên, khi tôi chạy tuyên bố:'LOAD DATA INFILE' hoạt động như thế nào trong bản sao dựa trên câu lệnh?

LOAD DATA INFILE 'filename' INTO SomeTable; 

Tôi không chắc liệu tệp có cần tồn tại trên trình đơn giống như trên bản gốc không. Ai đó có thể chỉ cho tôi tài liệu về tính năng này không?

Trả lời

5

Dường như tệp bạn tải với LOAD DATA INFILE trên máy chủ được tự động truyền qua nhật ký nhân bản từ bản gốc đến người phụ nữ. Các nô lệ tải các tập tin này khi nó được để LOAD DATA INFILE trong hàng đợi sao chép dựa trên tuyên bố.

Tôi suy luận này từ một vài báo cáo trong các tài liệu:

16,1: Backing Up Replication Slaves

Nếu máy chủ MySQL của bạn là một máy chủ sao chép nô lệ , sau đó bất kể sao lưu phương pháp bạn chọn, bạn cũng nên sao lưu các tệp master.info và relay-log.info khi bạn quay lại lên dữ liệu của nô lệ. Những tệp này là luôn cần thiết để tiếp tục sao chép sau khi bạn khôi phục dữ liệu của phụ nữ. Nếu nô lệ của bạn có thể sao chép lệnh LOAD DATA INFILE, bạn cần cũng sao lưu bất kỳ tệp SQL_LOAD- * nào có thể tồn tại trong thư mục được chỉ định theo tùy chọn --slave-load-tmpdir.

16.1.2.3: Replication Slave Options and Variables

Khi thread nô lệ SQL tái tạo một TẢI tuyên bố DATA INFILE, nó trích xuất các tập tin được nạp từ nhật ký tiếp sức vào các tập tin tạm thời, và sau đó tải chúng vào bảng. Nếu tệp được tải trên máy chủ là rất lớn, các tệp tạm thời trên slave cũng rất lớn. Do đó, có thể là nên sử dụng tùy chọn này để yêu cầu nô lệ đặt các tệp tạm thời trong thư mục nằm trong một số hệ thống tệp có nhiều không gian trống. Trong trường hợp đó là , nhật ký chuyển tiếp rất lớn như tốt, vì vậy bạn cũng có thể muốn sử dụng tùy chọn --tùy chọn --relay-log để đặt nhật ký chuyển tiếp trong hệ thống tệp đó.

Các vấn đề liên quan