Linux 환경에서 QuestDB 서비스 자동 실행 및 systemd 등록 방법

Linux 운영체제에서 QuestDB를 서버 부팅 시 자동으로 실행되도록 설정하는 가장 효율적인 방법은 systemd 서비스로 등록하는 것입니다. systemd는 현대적인 Linux 배포판에서 표준으로 사용되는 서비스 관리 시스템으로, 프로세스 감시 및 자동 재시작 등의 기능을 제공합니다.

1. systemd 서비스 유닛 파일 생성

먼저 시스템 서비스 디렉토리에 QuestDB 실행 정보를 담은 설정 파일을 생성해야 합니다. /etc/systemd/system/ 경로에 questdb.service 파일을 생성합니다.

sudo nano /etc/systemd/system/questdb.service

파일 내부에 다음과 같은 구성을 작성합니다. 여기서 /usr/local/lib/questdb는 QuestDB가 설치된 실제 경로로 수정하여 사용하십시오.

[Unit]
Description=QuestDB Open Source Time-Series Database
After=network.target

[Service]
Type=simple
User=questdb-user
Group=questdb-group
WorkingDirectory=/usr/local/lib/questdb
ExecStart=/usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data -t questdb
ExecStop=/usr/local/lib/questdb/bin/questdb.sh stop -d /usr/local/lib/questdb/data -t questdb
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

2. 권한 설정 및 서비스 활성화

유닛 파일을 저장한 후, 시스템이 새로운 서비스 파일을 인식하도록 설정하고 부팅 시 실행되도록 등록합니다.

설정 파일 권한 부여:

sudo chmod 644 /etc/systemd/system/questdb.service

systemd 데몬 재로드:

sudo systemctl daemon-reload

서비스 활성화 및 시작:

# 부팅 시 자동 시작 등록
sudo systemctl enable questdb.service

# 서비스 즉시 시작
sudo systemctl start questdb.service

3. 서비스 상태 확인 및 로그 모니터링

QuestDB가 정상적으로 구동되고 있는지 다음 명령어로 확인할 수 있습니다.

sudo systemctl status questdb.service

만약 문제가 발생한다면 journalctl을 통해 상세 로그를 확인하여 원인을 분석할 수 있습니다.

sudo journalctl -u questdb.service -f

4. 기타 자동 실행 방법 (참고용)

systemd를 사용할 수 없는 환경이거나 다른 방식이 필요한 경우 다음의 대안을 사용할 수 있습니다.

Crontab의 @reboot 스케줄러

특정 사용자의 crontab에 등록하여 시스템 재부팅 시마다 실행하게 할 수 있습니다.

# crontab 편집기 실행
crontab -e

# 파일 하단에 추가
@reboot /usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data

/etc/rc.local 활용

시스템 초기화 스크립트 파일 끝에 실행 명령어를 추가합니다. (최신 배포판에서는 권장되지 않음)

# /etc/rc.local 파일 하단에 추가
/usr/local/lib/questdb/bin/questdb.sh start -d /usr/local/lib/questdb/data &

주의사항

  • 사용자 권한: 보안을 위해 User=root 대신 별도의 전용 사용자 계정을 생성하여 실행하는 것이 좋습니다.
  • 경로 확인: ExecStartWorkingDirectory에 지정된 경로가 실제 데이터 디렉토리와 일치하는지 반드시 확인하십시오.
  • 포트 충돌: 자동 실행 시 QuestDB가 사용하는 기본 포트(예: 9000, 8812)가 다른 서비스에 의해 점유되지 않았는지 확인이 필요합니다.

태그: linux questdb systemd timeseries-database database-administration

7월 19일 06:50에 게시됨