programing

MariaDB Galera Cluster 노드가 디스크에 많이 액세스하여 성능이 크게 저하됨

telecom 2023. 6. 29. 19:48
반응형

MariaDB Galera Cluster 노드가 디스크에 많이 액세스하여 성능이 크게 저하됨

3개 노드의 mariadb galera 클러스터와 3개의 Ubuntu 20 VM이 서로 다른 물리적 서버에서 실행되고 있으며, 한 노드는 쿼리의 절반 정도만 처리할 수 있지만 CPU 로드는 다른 두 노드의 3배 이상입니다.세 노드는 유사한 하드웨어에서 실행되고 구성이 동일하며(mariadb 구성과 모든 서버 변수 확인) VM 매개 변수가 동일합니다.많은 검색 끝에 문제를 성능이 저하된 노드에서만 발생하는 디스크 액세스로 좁혔습니다.다른 노드에서는 이러한 노드를 볼 수 없습니다.iotop을 사용하면 다음이 표시됩니다.

편집: 성능이 저하된 노드에서 실행 중인 긴 쿼리를 확인했습니다.그러나 다른 두 노드에서는 동일한 쿼리가 매우 빠릅니다.어떻게 그것이 가능한가요?쿼리 캐시가 완전히 비활성화되었습니다.

enter image description here

issue

어떻게 하면 이것을 더 좁힐 수 있을까요?무엇이 문제가 될 수 있습니까?

제가 문제를 해결할 수 있었던 의견 덕분에, 모두에게 매우 감사드립니다.

  1. 느린 쿼리 로그를 활성화하는 것으로 시작하여 성능이 저하된 노드에서 하나의 느린 쿼리를 발견했습니다.다른 노드에서도 동일한 쿼리가 정상적으로 작동했습니다.
  2. 분석 및 EXPLAY를 사용하여 서로 다른 노드에서 이 쿼리를 분석한 결과, 성능이 저하된 노드에서는 인덱스가 사용되지 않아 디스크에서 파일 정렬이 발생했습니다(IO 스레드의 원인).
  3. 또한 2단계에서 성능 저하 노드가 특정 테이블의 클러스터에 있는 다른 노드와 동일한 양의 행을 가지고 있지 않다는 것을 알게 되었습니다. 이는 상당히 이상한 발견이었습니다.
  4. 이 문제를 조사한 결과 개발 환경에서 데이터베이스를 내보내는 동안 매개 변수가 누락되어 문제가 발생한 것으로 나타났습니다.
  5. phpmyadmin을 통해 dev.env.에서 데이터베이스를 내보내고 클러스터로 가져오려면 "존재하지 않는 경우" 옵션을 선택해야 합니다.이 옵션을 선택하지 않으면 사용자가 모르게 가져오기가 손상됩니다(무음).
  6. 새 데이터베이스를 다시 가져와서 이제 모든 것이 정상적으로 작동합니다.

언급URL : https://stackoverflow.com/questions/70178193/mariadb-galera-cluster-node-accesses-disk-a-lot-which-leads-to-a-massively-degra

반응형