2012-06-01 29 views
13

Tôi có một bản sao nhân rộng (master) của Mysql với các bảng MyISAM. Tất cả các cập nhật được thực hiện trên tổng thể và các lựa chọn được thực hiện trên master hoặc slaves.mysql - làm ổ khóa truyền trên sao chép?

Dường như chúng tôi có thể cần phải khóa thủ công một vài bảng khi chúng tôi thực hiện các cập nhật nhất định. Trong khi khóa ghi này nằm trên các bảng, không có lựa chọn nào có thể xảy ra trên bảng đã khóa. Nhưng còn về nô lệ thì sao? Khóa có lan truyền không?

Giả sử tôi có table_A và table_B. Tôi bắt đầu một khóa trên table_A và table_B trên master và bắt đầu thực hiện cập nhật. Tại thời điểm này không có kết nối khác có thể đọc table_A và table_B ra khỏi tổng thể? Nhưng nếu vào lúc này một kết nối khác cố đọc các bảng của một nô lệ, họ có thể làm như vậy không?

+1

Xin chào Adam, bạn có tìm thấy câu trả lời cho điều này không? – davide

+2

Đây là một đối số để chuyển sang InnoDB - để tránh các khóa bảng. –

Trả lời

2

Mọi thứ mà bản sao MySQL có thể được tìm thấy trong nhật ký nhị phân.

Bạn có thể chạy lệnh sau để xem chi tiết.

show global variables like 'log_bin%'; 

log_bin_basename sẽ cho bạn biết đường dẫn đến nhật ký nhị phân của bạn bằng tên tệp cơ sở.

và chạy

show binary logs 

để tìm các tập tin nhị phân hiện đang có mặt trên máy chủ của bạn.

Bạn có thể kiểm tra các lệnh thực tế được ghi vào tệp bằng cách sử dụng lệnh mysqlbinlog cùng với tên tệp hoặc bằng cách chạy show binlog events ... từ MySQL CLI.

Ngoài ra, hãy kiểm tra xem bạn đang sử dụng binlog_format nào.

Về cơ bản - khóa của bảng không được truyền trực tiếp tới nô lệ, nhưng vào thời điểm đó, whey sẽ thực hiện cập nhật đã thực hiện, chúng sẽ thực hiện khóa của bảng đã cập nhật nếu cần.

0

Theo như tôi biết ghi khóa không lan truyền vào binlog, Bạn có thể xác minh bằng cách thực hiện kiểm tra nhanh và xem binlog. Nếu bạn muốn tránh các vấn đề trên master và vì lý do nào đó không thể di trú đến InnoDB xem xét việc tích hợp một cái gì đó như GET_LOCK() vào ứng dụng của bạn thay vì hoàn toàn khóa một bảng. MyISAM là khá iffy khi nói đến đồng thời.

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