Một nô lệ MySQL có thể làm chủ cùng một lúc không?


17

Tôi đang trong quá trình di chuyển 2 máy chủ DB (Master & Slave) sang hai Máy chủ DB mới (Master và Slave)

DB1 - Master (sản xuất)

DB2 - Slave (sản xuất)

DB3 - Chủ mới

DB4 - Nô lệ mới

Hiện tại tôi có bản sao được thiết lập là:

DB1 -> DB2
DB3 -> DB4

Để có được dữ liệu sản xuất được sao chép sang các máy chủ mới, tôi muốn lấy dữ liệu "xâu chuỗi" để nó trông như thế này:

DB1 -> DB2 -> DB3 -> DB4

Điều này có thể không? Khi tôi chạy show master status;trên DB2 (nô lệ sản xuất), sở hữu binlog dường như không bao giờ thay đổi:

+ ------------------ + ---------- + -------------- + ---- -------------- +
| Tập tin | Vị trí | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
| mysql-bin.000020 | 98 | | |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Tôi hơi bối rối về lý do tại sao vị trí binlog không thay đổi trên DB2, lý tưởng nhất là nó sẽ là chủ nhân của DB3.

Câu trả lời:


16

Các binlog trên DB2đã không cập nhật các bản cập nhật nô lệ. Để tạo chuỗi sao chép, người ta phải đặt log-slave-updatestrong my.conf.

http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_log-slave-updates


Nhưng sau đó bạn viết nhật ký hai lần, một lần trong nhật ký chuyển tiếp và một lần trong tệp binlog. Tại sao không sao chép từ nô lệ bằng cách sử dụng nhật ký chuyển tiếp?
hpaknia

9

Vâng, có thể :) Đây được gọi là bản sao "Master with Relay Slave" và có rất nhiều tài liệu về nó trên mạng.

Tôi khuyên bạn nên xem tài liệu chính thức ở đây .

Btw, cũng hãy xem những slide này . Họ có một số gợi ý về cấu trúc liên kết nhân rộng.

Hi vọng điêu nay co ich.


3

có - bạn có thể tạo các máy chủ mysql chuỗi daisy, thậm chí bạn có thể tạo một bản sao tròn với hai hoặc nhiều máy trong đó. chỉ cần nhớ kích hoạt binloging trên nô lệ cũng hoạt động như chủ.


1
Nhân rộng thông tư là vô cùng mong manh. Đó là khuyến cáo trong hầu hết các trường hợp.
Warner

@Warner - đây chỉ là ví dụ về thiết lập sao chép phức tạp hơn nữa.
pQd

Bạn bè không cho phép máy chủ mysql chuỗi daisy.
sjas

@sjas trừ khi họ có một lý do rất cụ thể để làm điều đó và hiểu hậu quả tiềm ẩn của việc phá vỡ chuỗi.
pQd

Xin lỗi, nhưng vẫn không có. Sự linh hoạt luôn ám ảnh bạn sau này.
sjas

0

Vâng, nó là có thể. Thực tế, bạn cần một ảnh chụp nhanh mới của DB2 để xây dựng DB3. Tại thời điểm đó, nếu bạn có một vị trí tốt, bạn có thể sử dụng hơn DB4 hoặc chụp một ảnh chụp nhanh khác về DB3.

Đừng quên thiết lập duy nhất server_idcho mỗi máy chủ.

MySQL hiệu suất cao là một cuốn sách tuyệt vời để tham khảo quản trị MySQL nâng cao hơn.


DB2 hiện chỉ là một nô lệ, nhưng vị trí binlog của nó không thay đổi ... Bạn có biết điều đó có bình thường không?
mmattax

Slave (DB2) được cập nhật với chủ, nhưng vị trí binlog không thay đổi, tôi nên kiểm tra cái gì?
mmattax

Có, tôi đã xác nhận rằng tôi có thể thay đổi dữ liệu trên DB1 và ​​nó được sao chép sang DB2, nhưng vị trí binlog của DB2 là như nhau.
mmattax

Tôi nghĩ DB @ không đăng nhập cập nhật nô lệ, do đó, tại sao vị trí không thay đổi: dev.mysql.com/doc/refman/5.1/en/ mẹo
mmattax

0

Tại sao không thêm DB3 làm nô lệ mới, sau đó quảng bá nó thành chủ khi bạn sẵn sàng thực hiện chuyển đổi? Điều này sẽ cung cấp cho bạn lợi ích gia tăng tạm thời khi có nhiều nô lệ và giảm hoặc loại bỏ thời gian chết của bạn.


đó chính xác là những gì tôi đang làm ...
mmattax
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.