source

MariaDB 10.2 Xtrabackup./usr//bin/wsrep_sst_xtrabackup-v2 WSREP_SST_OPT_PORT: 언바인드 변수

lovecheck 2022. 10. 29. 10:07
반응형

MariaDB 10.2 Xtrabackup./usr//bin/wsrep_sst_xtrabackup-v2 WSREP_SST_OPT_PORT: 언바인드 변수

방금 XtraBackup을 SST 방식으로 사용하여 MariaDB 10.2 마스터 클러스터로 작동해야 하는 Ubuntu 16.04 노드 세트를 설치했습니다.

첫 번째 노드는 galera_new_cluster 명령어로 정상적으로 기동하지만 다음 오류로 인해 두 번째 노드는 클러스터에 가입할 수 없습니다.

Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [Warning] WSREP: Gap in state sequence. Need state transfer.
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [Note] WSREP: Running: 'wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin' '
Nov 15 10:59:09 mariadb10 mysqld[15664]: /usr//bin/wsrep_sst_xtrabackup-v2: line 646: WSREP_SST_OPT_PORT: unbound variable
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin'
Nov 15 10:59:09 mariadb10 mysqld[15664]: #011Read: '(null)'
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259416360704 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '10.0.0.10' --datadir '/var/lib/mysql/'   --parent '15664' --binlog '/var/log/mysql/mariadb-bin' : 1 (Operation not permitted)
Nov 15 10:59:09 mariadb10 mysqld[15664]: 2017-11-15 10:59:09 140259808827136 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.

이 로깅의 주요 문제는 설정되지 않은 WSREP_SST_OPT_PORT입니다.

코드를 보다/usr/bin/wsrep_sst_xtrabackup-v2"그것"은/usr/bin/wsrep_sst_common두 가지 방법으로 변수를 설정할 수 있습니다.

  1. 사용방법--port명령줄 파라미터.
  2. 의 포트 사용--address명령줄 파라미터(ip: 포트)

이제 mariadb가 명령행 파라미터를 채우기 위해 사용하는 파라미터가 무엇인지 알게 되었기 때문에/usr/bin/wsrep_sst_xtrabackup-v2또, 어떻게 그것을 사용할 수 있도록 해야 할 수 없습니다.--port또는--address올바른 값을 입력합니다.

my.cnf에서 mariadb의 파라미터를 가지고 이미 플레이했지만 아무 결과도 없었습니다.제가 시도한 것은 다음과 같습니다.

  • 파라미터 추가wsrep_sst_opt_port=4444로.my.cnf파라미터가 지원되지 않기 때문에 에러가 발생하였습니다(단, Hey..).최선의 해결책은 단지 시도한 결과입니다.)
  • 의 주소에 포트 추가wsrep_cluster_adress이것은 받아들여졌지만 포트 번호가 의 일부가 되는 것은 아닙니다.--address파라미터를 지정합니다.
  • 의 주소에 포트 추가wsrep_node_address이것도 허용되었지만 포트 번호에 다시 삽입되지 않았습니다.--address파라미터를 지정합니다.

이 문제를 해결하려면/usr/bin/wsrep_sst_common그리고 다음 코드를 추가했습니다(댓글 뒤에 시작).

if [ -n "${WSREP_SST_OPT_ADDR_PORT:-}" ]; then
  if [ -n "${WSREP_SST_OPT_PORT:-}" ]; then
...
  else
    readonly WSREP_SST_OPT_PORT="$WSREP_SST_OPT_ADDR_PORT"
  fi
fi

# Start of the workaround
if [ -z "${WSREP_SST_OPT_PORT:-}" ]; then
  readonly WSREP_SST_OPT_PORT="4444"
fi
# End of the workaround

이것으로 적어도 기동하지 않는 클러스터는 해결되었지만, 이 회피책 없이 어떻게 동작할 수 있는지 알 수 있으면 좋겠습니다.

실제로 발생하는 동작은 MariaDB 10.2.10의 버그이며 MariaDB 팀은 가까운 장래에 발표될 가능성이 높은 수정을 생각해냈습니다.

다음은 MariaDB 버그트래커의 문제에 대한 링크입니다.

https://jira.mariadb.org/browse/MDEV-14256

언급URL : https://stackoverflow.com/questions/47305173/mariadb-10-2-xtrabackup-usr-bin-wsrep-sst-xtrabackup-v2-wsrep-sst-opt-port-u

반응형