Posts

[증인노드] 스냅샷으로 복원할 때 주의해야 될점.

avatar of @wonsama
25
@wonsama
·
0 views
·
2 min read

개요 - error opening database 해결하기

[그림] steemd 기동시 error opening database 오류 출력된 경우

올바르게 스냅샷을 통한 복원을 했다고 생각 했는데, 위 이미지와 같이 error opening database 라는 문구가 출력되는 경우에는 대응방법을 소개하고자 합니다.

문제점

결론부터 이야기를 해보면 blockchain 정합성이 올바르게 처리되지 않아서 그런 것임.

스냅샷을 찍을때 node 를 stop 한 상태에서 찍는 것이 매우 중요합니다. 그런데 그렇게 했음에도 불구하고 위와 같은 오류 메시지가 출력되는 경우가 있는데 그런 경우에는 기존 스냅샷을 지우지 말고 다시 한번 이어서 스냅샷을 찍어 복원하는 것을 추천 드립니다.

일단 스냅샷을 찍고 첨부터 다시 만드는 경우 gcp 의 경우 대략적으로 5분 안팍이 걸립니다. 하지만 이어서 다시 스냅샷을 찍는 경우에는 대략 1분 내외로 스냅샷이 완료 되기 때문에 비용 및 시간을 많이 절감할 수 있습니다.

해결

[그림] 정상적으로 steemd 가 잘 기동된 case 의 로그

위에 말한 것처럼 스냅샷을 다시 찍음 됩니다. 될 때까지 .. (보통 1-2회 정도 시도 해보면 그 전에 되는 것 같습니다. )

기타 ( 도커 이미지 접속하기 )

그닥 뭐 쓸 일은 없는데 그래도 뭔가를 확인하고자 하시는 분들은 아래와 같은 방법으로 도커 이미지에 터미널로 접속하여 해당 이미지의 볼륨 연결 상태 및 관련 파일 정보를 확인하는 것 또한 가능 합니다.

실제 빌드된 바이너리 이미지가 기존 구동중인 이미지와 비교 가능한 상황이라면 해쉬값이나 파일 용량등으로 올바르게 비교 할 수도 있겠죠 ... 뭐 이것도 그닥 쓸일은 없겠지만 ;

[컨테이너 실행]

기본적으로 공유메모리, data 폴더를 내부 도커 이미지에 볼륨 마운트(-v 옵션)를 수행합니다. 그리고 bash 쉘만 수행한 형태로 도커 이미지를 실행 시켜 놓습니다.

docker run -v /dev/shm:/shm -v /home/wonsama/steem-docker/data:/steem -d --name test -t wonsama/steem:0.22.8888 /bin/bash

[컨테이너 프로세스 확인]

컨테이너 이미지를 57f625c2f627 로 가정 ...

docker ps

[컨테이너 프로세스에 터미널에 커맨드 실행을 통해 접속] docker exec -it 57f625c2f627 /bin/bash

[해당 실행중인 컨테이너 종료] docker stop 57f625c2f627

[모든 컨테이너 정보 확인, 정지된 것 포함] docker ps -all

[컨테이너 삭제하기, 실행중인것은 stop 이후 rm 가능] docker rm 57f625c2f627

맺음말

개인적으로 GCP 에서 스팀데몬(steemd) 스냅샷으로 구동 시 이슈사항 해결 방법을 기록하고자 남긴 글 입니다. 행복한 하루 되세요 ~