mariadb_start_error

mariadb start error

kolla-ansible을 통한 오픈스택 배포 이후 시스템 전체 재기동 등을 수행했을경우 mariadb 컨테이너가 정상적으로 올라오지 않는 경우가 있다.

2021-09-07 19:20:10 0 [ERROR] WSREP: failed to open gcomm backend connection: 110: failed to reach primary view: 110 (Connection timed out)
         at gcomm/src/pc.cpp:connect():160
2021-09-07 19:20:10 0 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():209: Failed to open backend connection: -110 (Connection timed out)
2021-09-07 19:20:10 0 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1475: Failed to open channel 'openstack' at 'gcomm://10.0.0.21:4567,10.0.0.22:4567,10.0.0.23:4567': -110 (Connection timed out)
2021-09-07 19:20:10 0 [ERROR] WSREP: gcs connect failed: Connection timed out
2021-09-07 19:20:10 0 [ERROR] WSREP: wsrep::connect(gcomm://10.0.0.21:4567,10.0.0.22:4567,10.0.0.23:4567) failed: 7
2021-09-07 19:20:10 0 [ERROR] Aborting

controller/var/log/kolla/mariadb/mariadb.log 내용에 위와같은 메세지가 출력된다.

이것은 mariadb gallera cluster가 정상적으로 종료되지 않고 기동되는경우 발생하는 오류 메세지이다. 관련 키워드는 wsrep-new-cluster 로 검색해도 알수가 있다.

kolla-ansible로 배포한 오픈스택 플랫폼에서는 아래 방법으로 복구가 가능하다.

  • 먼저 모든 컨트롤러 노드에서 mariadb 컨테이너를 종료한다.
$ docker stop mariadb
  • 이후 kolla-ansible 스크립트를 사용하여 gallera cluster를 복구한다.
$ kolla-ansible -i inventory/<clustername> mariadb_recovery

위 내용을 스크립트로 작성해두었다.

#!/bin/bash

##############
# recovery 시작하기 전에 control1~3 에서 mariadb container를 종료하여야 한다.
# docker stop mariadb

echo "#################################################################################"
echo "###### Mariadb Recovery 전에 controller에서 mariadb container를 종료하십시오."
echo "###### mariadb container MUST STOP on all contoller node before run this script."
echo "command: docker stop mariadb"
echo ""
echo "진행하시겠습니까?"
echo "Do you wish to run MariaDB Recovery?"

select yn in "Yes" "No"; do
    case $yn in
        Yes )
	cd ~;
	echo 'stop control1 mariadb container...';
	ansible -m shell -a 'docker stop mariadb' -i multinode control;
	if [ $? -eq 0 ]; then
		echo "mariadb stop successfully"
		kolla-ansible -i multinode mariadb_recovery;
	else
		echo "mariadb stop failed"
	fi
	break;;

        No ) exit;;
	* ) exit;;
    esac
done

최악의 경우 이 방법으로도 복구가 되지 않는다면 아래 참조링크의 내용으로 복구하면 된다.

로그인하면 댓글을 남길 수 있습니다.
  • mariadb_start_error.txt
  • 마지막으로 수정됨: 2023/03/21 02:04
  • 저자 koov