Một nô lệ sao chép MySQL có nên được đặt thành chỉ đọc không?


22

Tôi đã có bản sao chạy trên Percona Server 5.5 bằng cách làm theo hướng dẫn này và tự hỏi liệu tôi có nên thêm read-only=1vào nô lệ của my.cnfmình để làm cho nó chỉ đọc không?

Hướng dẫn thiết lập sao chép cho bảng mysql để người dùng được sao chép nhưng tôi chủ yếu sử dụng nô lệ để lấy mysqldumps, trong trường hợp khẩn cấp cấu hình lại thành chủ, vì vậy tôi không tin rằng chúng tôi cần (hoặc nên có) viết nó liên tục?


+1 cho lời nhắc thường bị bỏ qua để làm cho nô lệ chỉ đọc.
RolandoMySQLDBA

Câu trả lời:


31

Khi một Slave chỉ đọc , nó không được bảo vệ 100% khỏi thế giới.

Theo Tài liệu MySQL trên read-only

Biến này được tắt theo mặc định. Khi được bật, máy chủ không cho phép cập nhật ngoại trừ từ người dùng có đặc quyền SUPER hoặc (trên máy chủ nô lệ) khỏi các cập nhật được thực hiện bởi các luồng nô lệ. Trong các thiết lập sao chép, có thể hữu ích khi bật read_only trên các máy chủ nô lệ để đảm bảo rằng nô lệ chỉ chấp nhận cập nhật từ máy chủ chính chứ không phải từ máy khách.

Do đó, bất cứ ai có đặc quyền SUPER đều có thể đọc và viết theo ý muốn cho một Slave như vậy ...

Đảm bảo tất cả người dùng không có đặc quyền không có Đặc quyền SIÊU.

Nếu bạn muốn thu hồi tất cả các đặc quyền SUPER trong một lần bắn, vui lòng chạy nó trên Master và Slave:

UPDATE mysql.user SET super_priv='N' WHERE user<>'root';
FLUSH PRIVILEGES;

Với tham chiếu đến Slave, điều này sẽ bảo lưu đặc quyền SUPER chỉ rootvà ngăn chặn những người không có đặc quyền thực hiện việc viết mà họ sẽ bị hạn chế.

CẬP NHẬT 2015-08-28 17:39 EDT

Tôi mới biết rằng MySQL 5.7 sẽ giới thiệu super_read_only .

Điều này sẽ ngăn người dùng SUPER trong các bài hát của họ vì 5.7 Docs nói

Nếu biến hệ thống read_only được bật, máy chủ chỉ cho phép cập nhật máy khách từ những người dùng có đặc quyền SUPER. Nếu biến hệ thống super_read_only cũng được bật, máy chủ sẽ cấm cập nhật máy khách ngay cả từ những người dùng có SUPER. Xem mô tả về biến hệ thống read_only để biết mô tả về chế độ chỉ đọc và thông tin về cách tương tác read_only và super_read_only.

Các thay đổi đối với super_read_only trên máy chủ chính không được sao chép sang máy chủ nô lệ. Giá trị có thể được đặt trên máy chủ nô lệ độc lập với cài đặt trên bản gốc.

super_read_only đã được thêm vào MySQL 5.7.8.


1
Vì vậy, cách tốt nhất là làm cho nô lệ chỉ đọc?
xref

6
Vâng, đó là cách tốt nhất để làm như vậy
RolandoMySQLDBA

1
Làm cách nào tôi có thể sử dụng cơ sở dữ liệu báo cáo về nô lệ với dữ liệu được tổng hợp từ cơ sở dữ liệu hoạt động với tùy chọn chỉ đọc?
Geany

3

Một nô lệ sao chép MySQL có nên được đặt thành chỉ đọc không?

Có, bạn nên chạy các máy chủ nô lệ với các chế độ R / O khả dụng. Người dùng đặc quyền trước đây có thể sửa đổi dù sao dữ liệu của nô lệ như vậy nhưng sau đó họ cũng có "núm" hạn chế R / O của họ.

Tại sao nó quan trọng - thà thất bại với việc viết hơn là hối tiếc với việc viết không đúng có thể khiến nô lệ không thể sử dụng một cách hiệu quả do dữ liệu đơn giản bị vấy bẩn hoặc những thứ như xung đột khóa sẽ phá vỡ sự sao chép (không còn nô lệ thực tế nữa).

Ngoài ra còn có phần mềm được sử dụng để phân chia / phân phối tải có thể xem xét trạng thái R / O của các máy chủ trong nhóm mà chúng đã định cấu hình để định tuyến yêu cầu chính xác giữa các máy chủ đó.

Đây là sự an toàn. Sử dụng nó.


1

Vấn đề ở đây, bao gồm MySQL 8.0, là MySQL không buộc bạn phải thiết lập read_only = ONkhi bạn thực thi start slavelệnh. Tại sao có vấn đề? Bởi vì hầu hết tất cả các DBA của MySQL đều sử dụng nô lệ của họ trên RO, để ngăn ngừa tham nhũng dữ liệu và luôn tồn tại một dba đã vô tình chạy sai một SQL sửa đổi dữ liệu trên một nô lệ hoặc một ứng dụng sẽ không thay đổi conf của anh ta. Nếu tôi muốn viết trên nô lệ, bởi vì nó có một số lược đồ và tôi cần viết trên lược đồ này, vì vậy read_onlylệnh phải thông minh hơn, và chúng ta hãy làm một read_only for schema. Điều đó có thể rất hữu ích trên các máy chủ đa chủ và nô lệ làm a Replicate_Ignore_DB. Vì vậy, bây giờ, bạn phải thực hiện điều khiển bằng tay và rất cẩn thận.

Thưởng thức.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.