[MySQL] Galera 클러스터 이름 길이 초과로 인한 클러스터 조인 오류
[MySQL] Galera 클러스터 이름 길이 초과로 인한 클러스터 조인 오류
l Version : MySQL Percona Cluster, Galera Cluster
MySQL Percona 클러스터를 구성하고, Primary 서비스를 정상적으로 구동한 후 Secondary 서버를 클러스터에 조인하려고 할 때 아래와 같은 오류와 함께 클러스터 조인에 실패하였다. Secondary의 경우 서비스가 시작될 때 my.cnf에 정의되어 있는 정보에 따라 클러스터 조인을 자동으로 시도하고 클러스터 조인에 실패할 경우 MySQL이 정상적으로 실행되지 않는다.
2023-12-06T10:02:52.460279Z 0 [ERROR] [MY-000000] [Galera] failed to open gcomm backend connection: 110: failed to reach primary view (pc.wait_prim_timeout): 110 (Connection timed out) at /mnt/jenkins/workspace/pxc80-autobuild-RELEASE/test/percona-xtradb-cluster-8.0.34-26/percona-xtradb-cluster-galera/gcomm/src/pc.cpp:connect():176 2023-12-06T10:02:52.460299Z 0 [ERROR] [MY-000000] [Galera] /mnt/jenkins/workspace/pxc80-autobuild-RELEASE/test/percona-xtradb-cluster-8.0.34-26/percona-xtradb-cluster-galera/gcs/src/gcs_core.cpp:gcs_core_open():219: Failed to open backend connection: -110 (Connection timed out) 2023-12-06T10:02:53.460513Z 0 [Note] [MY-000000] [Galera] gcomm: terminating thread 2023-12-06T10:02:53.460616Z 0 [Note] [MY-000000] [Galera] gcomm: joining thread 2023-12-06T10:02:53.460932Z 0 [ERROR] [MY-000000] [Galera] /mnt/jenkins/workspace/pxc80-autobuild-RELEASE/test/percona-xtradb-cluster-8.0.34-26/percona-xtradb-cluster-galera/gcs/src/gcs.cpp:gcs_open():1876: Failed to open channel 'XXXXXXXXXX-XXX-XX-XXXX-XXXXXXX-XXX' at 'gcomm://192.168.0.1,192.168.0.2': -110 (Connection timed out) 2023-12-06T10:02:53.460972Z 0 [ERROR] [MY-000000] [Galera] gcs connect failed: Connection timed out 2023-12-06T10:02:53.460988Z 0 [ERROR] [MY-000000] [WSREP] Provider/Node (gcomm://192.168.0.1,192.168.0.2) failed to establish connection with cluster (reason: 7) 2023-12-06T10:02:53.461001Z 0 [ERROR] [MY-010119] [Server] Aborting 2023-12-06T10:02:53.461456Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.34-26.1) Percona XtraDB Cluster (GPL), Release rel26, Revision 0988772, WSREP version 26.1.4.3. 2023-12-06T10:02:53.464279Z 0 [ERROR] [MY-010065] [Server] Failed to shutdown components infrastructure. |
문제의 원인을 조사해보니, 클러스터 이름 길이 초과로 인해서, 클러스터 조인시 발생하는 오류였다. 해당 오류 사례가 이슈로 제기된 깃헙을 확인할 수 있었고 오래된 이슈였는데 아직 픽스 되지는 않은것 같다. (버그가 아니기에 픽스할 이유는 없을듯 하기도 하다.) 클러스터의 이름을 32자 이내로 설정해야 한다고 한다.
l https://github.com/bloomberg/chef-bcpc/issues/649
클러스터의 이름을 32자 이내로 수정하고 실행한 결과 정상적으로 클러스터에 조인하는 것을 확인할 수 있었다. 여기에서 한가지 의심(?)스러운 것은, Primary 노드를 시작할 때에는 클러스터 이름의 길이가 32자가 초과해도 문제없이 실행된다는 점이다. 만약에 처음 Primary 세팅 때부터 해당 문제로 서비스가 정상적으로 실행되지 않았으면 빠르게 알 수 있었을 텐데, Primary는 전혀 영향이 없고, Secondary 노드부터 조인을 시도할 때 문제가 된다.
개인적으로는 Primary 시작부터 클러스터 이름 길이에 대한 유효성 검사를 하는 부분을 추가하여 PR을 하고 싶지만, MySQL 및 Galera Cluster에 대한 전체 소스를 파악하지 못한 상태에서 섣불리 수정할 수 없기에 우선은 마음에만 담아 두기로 했다.
[참고자료]
l https://github.com/bloomberg/chef-bcpc/issues/649
2023-12-08 / Sungwook Kang / http://sungwookkang.com
MySQL, Percona, Galera Cluster, 퍼코나, 갈레라 클러스터, 클러스터 이름 길이 초과, wsrep_cluster_name