master-slave 설정에 MySQL (5.5)이 있고 다른 슬레이브 서버를 만들었습니다.
원래 슬레이브를 중지하고 데이터를 덤프하고 복사하여 다시 가져 와서 제대로 작동했습니다. 원래 슬레이브의 master_log pos를 기록하고이 명령을 사용하여 새 슬레이브에 설정했습니다.
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;
새로운 노예를 시작했을 때
Last_IO_Error : 이진 로그에서 데이터를 읽을 때 마스터에서 치명적인 오류 1236이 발생했습니다. '로그 이벤트 항목이 max_allowed_packet을 초과했습니다. 마스터에서 max_allowed_packet 증가
그러나 원래 슬레이브를 시작했을 때 잘 잡히고 동기화되었습니다.
따라서 질문 :
현재 가치는 16M입니다. 얼마나 큰지 어떻게 알 수 있습니까? (생산 서버의 시행 착오를 피하는 것이 좋습니다).
원래 슬레이브가 제대로 처리되면 마스터에서 값을 늘려야하는 이유는 무엇입니까? 새 슬레이브에 문제가있을 수 있습니까?
최신 정보
Rolando가 마스터, 이전 슬레이브 및 새 슬레이브에서 제안한대로 max_allowed_packet을 1073741824로 늘렸다가 다시 시작했습니다 ( SET GLOBAL max_allowed_packet = 1073741824;
어떤 이유로는 걸리지 않는 것 같습니다).
이제 마지막 IO 오류는 이전과 동일하지만 이제는
Last_SQL_Error : 릴레이 로그 읽기 실패 : 릴레이 로그 이벤트 항목을 구문 분석 할 수 없습니다. 가능한 원인은 다음과 같습니다. 마스터의 이진 로그가 손상되었습니다 (이진 로그에서 'mysqlbinlog'를 실행하여이를 확인할 수 있음), 슬레이브의 릴레이 로그가 손상되었습니다 (중계 로그에서 'mysqlbinlog'를 실행하여이를 확인할 수 있음), a 네트워크 문제 또는 마스터 또는 슬레이브 MySQL 코드의 버그. 마스터의 이진 로그 또는 슬레이브의 릴레이 로그를 확인하려면이 슬레이브에서 'SHOW SLAVE STATUS'를 발행하여 해당 이름을 알 수 있습니다.
마스터 파일에서 mysqlbinlog를 수행하면 오랫동안 행복하게 명령을 사용하여 과거로 스크롤합니다. 파일은 722M입니다-슬레이브 릴레이 로그에 대해 수행하면
오류 : Log_event :: read_log_event () 오류 : 'Sanity check failed', data_len : 38916267, event_type : 69
오류 : 오프셋 253에서 항목을 읽을 수 없습니다 : 로그 형식 오류 또는 읽기 오류.
변수를 확인했지만 변경 사항이 작동했습니다.
mysql> 변수 표시 LIKE '% max_allowed_packet %';
새로운 노예에서 max_allowed_packet
그리고 slave_max_allowed_packet
마스터 와 마찬가지로 그것이 가지고있는 곳을 보여주었습니다.max_allowed_packet
그래서 마스터에서 버전을 확인했습니다.
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 |
+-------------------------+--------------------------------------+
그리고 새로운 노예에
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 |
+-------------------------+--------------------------------------+
이 두 버전이 너무 멀리 떨어져 있습니까?