Gần đây tôi đã đảm nhận vị trí quản trị viên hệ thống quản lý một nhóm gồm 20 (hoặc hơn) máy chủ. Một điều tôi chưa từng xử lý trước đây (ngoài tình huống thử nghiệm), là giới thiệu một nô lệ mới cho trang trại nhân rộng MySQL.
Về cơ bản, bản sao được thiết lập như vậy:
MS -> SL1 -> SL2 (backup)
| SL3 (reporting)
SB2 SL4 (loadbalanced web slave)
SL5 (loadbalanced web slave)
SL6 (loadbalanced web slave)
SL7 (loadbalanced web slave)
Nhưng về cơ bản, nó là một Master với hai nô lệ đọc, (một hoàn toàn để sao lưu), một cho nô lệ đọc chính (chủ trong chờ đợi, nếu bạn muốn), với 6 nô lệ phía sau, được sử dụng để sao lưu bổ sung, đọc 4 trang web cân bằng tải nô lệ và một máy chủ được sử dụng để báo cáo.
Tôi đã đọc nhiều trên mạng và cho rằng việc thêm một nô lệ mới vào môi trường (từ SL1), sẽ là:
- Đăng nhập vào SL2:
STOP SLAVE;
FLUSH TABLES WITH READ LOCK;
- (sao chép thư mục mysql sang máy chủ mới)
- sau khi hoàn thành,
UNLOCK TABLES;
và sau đóSTART SLAVE;
(tất cả đều ổn cho đến thời điểm này, SL2 trở lại trực tuyến và bắt kịp) - đảm bảo cấu trúc db là chính xác trên máy chủ mới và các điểm master.info ở đúng nơi (chỉ chính xác vào SL1)
- Khởi động MySQL trên máy chủ mới, kiểm tra xem Slave SQL và I / O đang chạy (vâng, điều này tốt)
Tuy nhiên, sau một khoảng thời gian, tôi nhận được lỗi chèn khóa trùng lặp từ nhật ký nhị phân:
110122 17:01:25 [ERROR] Slave SQL: Error 'Duplicate entry '2011-01-22 17:00:01' for key 'PRIMARY'' on query. Default database: 'thelm_soft'. Query: 'INSERT INTO thm_member_views ( member_view_ts, logged_in_members, non_members ) VALUES ( now(), '27037', '132834' )', Error_code: 1062
110122 17:01:25 [Warning] Slave: Duplicate entry '2011-01-22 17:00:01' for key 'PRIMARY' Error_code: 1062
Đây có phải là một vấn đề với thực tế bây giờ () đang nằm trong một truy vấn, điều thông thường nói với tôi sẽ gây ra vấn đề nếu các phần chèn trên bảng đó đủ thường xuyên ??!?! Hoặc tôi đã có quá trình sao chép sai, tức là bắt đầu từ một vị trí đăng nhập không chính xác?