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
두 가지 방법으로 변수를 설정할 수 있습니다.
- 사용방법
--port
명령줄 파라미터. - 의 포트 사용
--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
'source' 카테고리의 다른 글
SQL - 업데이트가 있는 경우 그렇지 않은 경우 삽입 (0) | 2022.10.29 |
---|---|
Google Map API v3 - 경계 및 중심 설정 (0) | 2022.10.29 |
MySQL "Group By" 및 "Order By" (0) | 2022.10.29 |
원칙 2:참조 표에 추가 열을 사용하여 다대다를 처리하는 가장 좋은 방법 (0) | 2022.10.29 |
Visual Studio Code 내에서 Python 코드를 실행하는 방법 (0) | 2022.10.29 |