티스토리 뷰

기록남기기

mysql error : 1153 , 2020

양들의침묵1 2019. 6. 3. 17:39

OS : CentOS 6.10
Mysql :  5.1.73

Replication 으로 구성한 시스템의 Slave 서버에서 다음과 같은 에러가 발생하였다.

190602 17:31:39 [ERROR] Error reading packet from server: Got packet bigger than 'max_allowed_packet' bytes ( server_errno=2020)
190602 17:31:39 [ERROR] Log entry on master is longer than slave_max_allowed_packet (1073741824) on slave. If the entry is correct, restart the server with a higher value of slave_max_allowed_packet
190602 17:31:39 [ERROR] Slave I/O: Got a packet bigger than 'slave_max_allowed_packet' bytes, Error_code: 1153
190602 17:31:39 [Note] Slave I/O thread exiting, read up to log 'LOG.000014', position 84672470

MySQL Error Codes


1153 SQLSTATE: 08S01 (ER_NET_PACKET_TOO_LARGE) Got a packet bigger than 'max_allowed_packet' bytes
2020 (CR_NET_PACKET_TOO_LARGE) Got packet bigger than 'max_allowed_packet' bytes

Master 서버의  환경변수 확인
mysql> show variables like '%allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 4194304    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+

Slave 서버의  환경변수 확인
mysql> show variables like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 4194304    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.00 sec)

두개의 환경 변수가 동일한테 뭔가 이상한것 같다.
master , slave의  my.cnf 를 보니 'max_allowed_packet' 값을  이중으로 세팅한 것으로 확인되었다.

[mysqld]
max_allowed_packet=128M

#Replication
max_allowed_packet      = 4M

위와 같이 설정되어 있지만, DB 재시작 후 적용은 4M로 된것으로 확인 할수 있었다.
4M 항목을 주석처리하고 DB를 재시작 해보도록 할 예정이다.
이후 확인하는 작업이 필요할것 같다.

참고 ) https://dzone.com/articles/maxallowedpacket-and-binary

 

max_allowed_packet and Binary Log Corruption in MySQL - DZone Performance

[This article was written by Miguel Angel Nieto]The combination of max_allowed_packet variable and replication in MySQL is a common source of...

dzone.com

https://blackbull.tistory.com/12

 

[MySQL] 내부 변수 max_allowed_packet

우리의 친구 MySQL에는 내부적으로 런타임 때(즉, 프로그램이 시작될 때) 설정되는 내부 변수들을 가지고 있다. 이러한 내부 변수의 설정은, mysql 명령어를 이용하여 프로그램을 시작할 때, 직접 입력할 수도 있..

blackbull.tistory.com


추가)
위의 내용대로 진행 후 리플리케이션이 깨진 지 3일 만에 포지션을 맞추고 슬레이브를 재시작 했을때, 다음과 같이
에러가 발생하였다.

190605 10:43:26 [ERROR] Slave SQL: Could not execute Update_rows event on table DB.table; Can't find record in 'counterLogin', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's
 master log LOG.000018, end_log_pos 268933, Error_code: 1032
190605 10:43:26 [Warning] Slave: Can't find record in 'counterLogin' Error_code: 1032
190605 10:43:26 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'LOG.000018' position 268734

DB Engine Type 이 모두 Myisam 이어서 파일을 복사하고 동기화를 해도 에러가 발생하였다.
결국 해당 DB 를 dump 하여 저장하고, 해당 파일을 복원하는 작업을 진행하고 나서야 문제가 해결되었다.

'기록남기기' 카테고리의 다른 글

jetty 설치  (0) 2020.11.26
k8s  (0) 2020.02.18
tomcat session cluster with redis  (2) 2019.09.19
docker root 경로 변경  (0) 2019.05.21
mysql 컬럼 변경  (0) 2019.05.21