programing

MariaDB 복제가 오류 없이 중단됨

newsource 2022. 9. 26. 23:03

MariaDB 복제가 오류 없이 중단됨

mariadb-server 간에는 몇 가지 복제 연결이 있으며, 대부분은 마스터-슬레이브 연결(마스터 및 슬레이브 버전 동일)입니다.가끔, 하지만 정기적으로 연결이 끊기는 것 같습니다.그러나 오류는 없으며 IO 및 SQL 실행 스레드가 실행되고 있습니다.이 경우 슬레이브에서 누락된 값만 발견하면 슬레이브를 정지했다가 다시 시작합니다.이 후 Seconds_behind_master > 0 이 됩니다.변수 MASTER_HEARTBEAT_PERIOD에 대해 알게 되었습니다만, 디폴트치(30초)로 유효하게 되어 있어 동작하지 않는 것 같습니다.이 이상한 행동의 이유는 무엇일까요?우리가 뭘 할 수 있을까?

편집: 조사 결과(마스터와 슬레이브에 대한 일정 이벤트: 마스터는 테이블에 현재 타임스탬프를 기록하고 슬레이브에는 현재 타임스탬프의 차이를 저장합니다)가 몇 시간 후에 정기적으로 슬레이브에 대한 배설물이 있다는 것을 알게 되었습니다.슬레이브는 정확히 7200초(2시간) 후에 다시 시작됩니다.11시간 동안 두 번이나 일어났어요.뭐가 있을까요?

EDIT2: 추가 조사 결과, 이 현상은 마리아답에 의한 것이 아닌 것으로 나타났습니다.몇 가지 접속을 모니터(첫 번째 편집에서 설명)한 결과 특정 호스트(MS Hyper-V)의 VM에서 마스터를 사용하는 복제만 지연되고 절대 동기화가 지연된다는 것을 알게 되었습니다.지연의 원인(7200초까지 지연이 없어지는 경우)은 이 호스트에 있을 것입니다.그러나 이러한 VM의 인스턴스에도 마스터 마스터 리플리케이션이 몇 가지 있습니다만, 이 접속에서는 문제가 발생하지 않습니다.다른 호스트의 VM에서 슬레이브 VM으로 다른 리플리케이션 접속에 문제가 없습니다.이상하다.

EDIT3: DNS의 문제는 아닌 것 같습니다.며칠 전에 모든 마스터 주소를 ip로 전환하고 skip_no_resolve를 설정했습니다.하지만 아무것도 변하지 않았다.하루에 두 가지 주요 시간(약 05:58과 10:15)이 있습니다.흥미롭게도 첫 번째 시간(05:58)은 상대적으로 일정하지만 두 번째 시간(10:15)은 매일 약 30초(19.10.10.10.10.10에서 현재 10:19)로 진행됩니다.그리고 흥미로운 것은 27시부터 28시 10분까지 시간이 바뀌었습니다(여름에서 겨울로, +1h), 두 번째(10시 15분 이전)도 바뀌었습니다(28시 10분 이전은 11시 15분마다, 현재는 10시 15분마다 바뀌었습니다).처음 5시 58분은 변하지 않았어그리고 (오래 전에 했어야 했는데)2개의 엔트리가 있을 때마다 mysql 에러 로그에 기록됩니다.

2018-11-06 10:19:50 6172 [ERROR] Error reading packet from server: Lost connection to MySQL server during query (server_errno=2013)

2018-11-06 10:19:50 6172 [Note] Slave I/O thread: Failed reading log event, reconnecting to retry, log 'mysql-bin.002007' at position 113739713

뭐, 거의 같은 시간에, 하루에 2번(약 03:58과 08:15)의 레플리케이션이 에러 없이 정지합니다만, 매일 약 20~30초 후에, 2시간 후에 mariadb가 이것을 알게 되면, 이 2개의 메세지가 로그에 인쇄되어 슬레이브가 재접속됩니다.나는 속수무책이다.

이제 우리는 문제를 해결했다.버전 10.1에서 mariadb를 업데이트했습니다.X에서 10.3.7로 문제가 사라졌습니다.버전이 다른 mariadb 인스턴스가 몇 개 있는데, 이 문제는 버전 10.1.X에서만 발생했지만 모든 것은 아닙니다.그리고 저는 여전히 지연의 이유가 외부 마리아답에서 나왔다고 생각합니다. 그리고 우리는 여전히 그 이유가 무엇인지 전혀 모릅니다.하지만 이젠 우리 문제가 아니야업데이트로 해결되었습니다.

같은 문제가 있었어.추가:

   innodb_flush_log_at_trx_commit = 2

MySQL 8.0.13 설치 문제 해결.여기: https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit

https://dba.stackexchange.com/questions/232365/mysql-8-0-updates-are-sometimes-stalling/271061#271061도 참조해 주세요.

언급URL : https://stackoverflow.com/questions/52817358/mariadb-replication-hangs-without-any-error