Tôi có MySQL (5.5) trong thiết lập master-Slave và tạo một máy chủ nô lệ khác.
Tôi đã dừng nô lệ ban đầu, đổ dữ liệu, sao chép và nhập lại và nó hoạt động tốt. Tôi đã lưu ý vị trí master_log của nô lệ gốc và sử dụng các lệnh này để đặt nó trên nô lệ mới
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Khi tôi bắt đầu nô lệ mới, tôi đã nhận được
Last_IO_Error: Gặp lỗi nghiêm trọng 1236 từ chủ khi đọc dữ liệu từ nhật ký nhị phân: 'mục nhập sự kiện log vượt quá max_allowed_packet; Tăng max_allowed_packet trên master '
Tuy nhiên, khi tôi bắt đầu nô lệ ban đầu, nó đã bắt kịp tốt, và bây giờ đã đồng bộ.
Vì vậy, các câu hỏi:
giá trị hiện tại là 16 triệu, làm thế nào để tôi biết làm thế nào lớn? (Tôi muốn tránh dùng thử và lỗi với một máy chủ sản xuất).
Tại sao tôi cần tăng giá trị trên bản gốc khi nô lệ gốc đã xử lý tốt, vấn đề có thể thực sự xảy ra với nô lệ mới không?
cập nhật
Tôi đã tăng max_allowed_packet lên 1073741824 khi Rolando đề xuất về chủ, nô lệ cũ và nô lệ mới, và khởi động lại chúng ( SET GLOBAL max_allowed_packet = 1073741824;
vì một số lý do dường như không mất)
bây giờ lỗi IO cuối cùng giống như trước đây, nhưng bây giờ tôi thấy
Last_Query_Error: Lỗi đọc nhật ký chuyển tiếp: Không thể phân tích mục sự kiện nhật ký chuyển tiếp. Những lý do có thể là: nhật ký nhị phân của chủ bị hỏng (bạn có thể kiểm tra điều này bằng cách chạy 'mysqlbinlog' trên nhật ký nhị phân), nhật ký chuyển tiếp của nô lệ bị hỏng (bạn có thể kiểm tra điều này bằng cách chạy 'mysqlbinlog' trên nhật ký chuyển tiếp), a sự cố mạng hoặc lỗi trong mã MySQL của chủ hoặc nô lệ. Nếu bạn muốn kiểm tra nhật ký nhị phân của chủ hoặc nhật ký chuyển tiếp của nô lệ, bạn sẽ có thể biết tên của họ bằng cách phát hành 'SHOW SLAVE STATUS' trên nô lệ này.
Nếu tôi thực hiện một mysqlbinlog trên tệp của chủ, nó sẽ cuộn qua các lệnh khá vui vẻ từ lâu - tệp là 722M - nếu tôi làm điều đó cho nhật ký chuyển tiếp nô lệ tôi sẽ nhận được
LRI: Lỗi trong Log_event :: read_log_event (): 'Kiểm tra trạng thái không thành công', data_len: 38916267, event_type: 69
LRI: Không thể đọc mục nhập ở offset 253: Lỗi ở định dạng nhật ký hoặc lỗi đọc.
Tôi đã kiểm tra các biến và các thay đổi hoạt động tuy nhiên
mysql hiển thị các biến THÍCH '% max_allowed_packet%';
trên nô lệ mới hiển thị max_allowed_packet
VÀ slave_max_allowed_packet
ở đâu như trên chủ nó chỉ cómax_allowed_packet
Vì vậy, tôi đã kiểm tra phiên bản trên bản gốc:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
và trên nô lệ mới
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Có phải 2 phiên bản này quá xa nhau?