2017-01-17 4 views
0

개인 서버에서 훌륭하게 작동하는 Drone.io 0.5 서버가 있습니다.서버를 재부팅 한 후 Drone.io 구성 중 일부가 손실되었습니다.

그러나 재부팅 후 Drone이 실행되는 물리적 서버, 구성, 빌드 및 비밀이 손실되었습니다. 정확히 말하자면 정보의 일부가 손실되었습니다. 종료로 인해 Drone 서버가 종료되고 2 일 전의 상태 만 디스크에 저장되는 것처럼 보입니다. 어쨌든 남아있는 구성이 손상된 것처럼 보였으므로 다시 모든 것을 다시 구성해야했습니다 (리포지토리, 비밀 등)

디스크에서 데이터를 더 자주 플러시 할 수있는 방법이 있습니까? 예기치 않은 재부팅이 걱정되어 다시 동일한 문제가 발생합니다.

편집 : 테스트를 거쳤으며 $ docker-compose stop은 서버를 중지하고 모든 데이터를 저장하기에 충분합니다. 나는 아직도 서버 충돌의 경우 어떻게해야할지 걱정하고있다.

+0

당신이 그것을가 손상 생각하는 이유 ... 당신은 설명 할 수있다 "는 손상 남아 구성처럼 보였다"? 데이터 손실과 데이터 손상이 반드시 동일한 것은 아니며이 질문은 모두 –

+0

입니다. 직접 설명해 드리겠습니다. 서버를 재부팅 한 후 Drone을 다시 시작했습니다. UI에 액세스 할 때 repos가 발견되었지만 각 파이프 라인을 다시 시작하려고했지만 작동하지 않았습니다. 더 이상 정보가 없으면 죄송합니다. 나는 스크린 샷을 찍지 않았다. 방금 sqllite 데이터베이스를 삭제하고 다시 시작했습니다. –

+0

이것은 데이터가 손상되지 않았 음을 알려줍니다. 손상된 데이터베이스 파일이 열리지 않습니다. Drone을 다시 시작했을 때 파일이 손상되어 열 수 없으면 Drone은 오류와 함께 종료되어 시작하지 않았을 것입니다. –

답변

1

Drone은 모든 데이터를 데이터베이스에 유지합니다. 기본 구성을 사용하는 경우 이것은 sqlite 데이터베이스입니다. 설명서에는 데이터베이스가 작성된 경로의 호스트 시스템에 볼륨을 마운트하여 데이터베이스가 호스트 시스템에 기록되고 컨테이너가 삭제 될 때 파기되지 않도록하는 것이 좋습니다.

Drone은 sqlite 데이터베이스를 유지하기 위해 호스트 시스템에 볼륨을 마운트합니다. 대체 데이터베이스 엔진을 사용할 때는 필요하지 않습니다.

services: 
    drone-server: 
    image: drone/drone:0.5 
    ports: 
     - 80:8000 
    volumes: 
     - ./drone:/var/lib/drone/ 
    restart: always 

드론이 더 자주 디스크에 데이터를 플러시 할 수있는 방법이 있습니까? 예기치 않은 재부팅이 걱정되어 다시 동일한 문제가 발생합니다.

SQLite는 메모리에 데이터를 저장하지 않습니다. 데이터베이스 트랜잭션이 완료되면 레코드가 디스크에 기록됩니다. 이것은 ACID 호환 데이터베이스에서 필요합니다. 당신이 당신의 SQLite 데이터베이스 파일이 손상되었다고 생각되면 남아 구성이

손상 것처럼

어쨌든, 그것은 다음과 같은 몇 가지 독서 권장, 보았다. 이것은 드물지만 가능한 일입니다. 이러한 이유로 정규 데이터베이스 백업이 항상 권장됩니다.

+0

사실, "./drone:/var/lib/drone"볼륨을 사용하고 있습니다. UI는 이틀 전부터 상태를 표시하기 때문에 "플러시"문제라고 생각했지만 예, 당신이하는 말을 이해합니다. 데이터베이스가 손상되었습니다. SQLite 데이터베이스 백업에 대한 조언을 따를 것입니다. 당신의 도움을 주셔서 감사합니다! –