[python] FastAPI에서 데이터베이스 백업 및 복구 구현하기

데이터베이스는 애플리케이션에서 중요한 역할을 수행하기 때문에, 데이터의 안전한 보관과 복구는 매우 중요합니다. 이번 글에서는 FastAPI 프레임워크를 사용하여 데이터베이스 백업과 복구를 구현하는 방법에 대해 알아보겠습니다.

환경설정

먼저, FastAPI를 설치하고 새로운 프로젝트를 생성합니다. 또한 데이터베이스 연결을 위해 SQLAlchemy를 설치해야 합니다. 본 글에서는 SQLite 데이터베이스를 사용할 예정이므로, 해당 드라이버도 설치해야 합니다.

$ pip install fastapi
$ pip install sqlalchemy
$ pip install sqlite3

백업 구현하기

데이터베이스 백업은 현재 데이터베이스의 상태를 다른 위치에 저장하는 것을 의미합니다. 백업은 잠재적인 데이터 손실에 대비하여 중요합니다.

먼저, backup.py라는 새로운 파일을 생성하고 다음과 같이 코드를 작성합니다:

from fastapi import FastAPI
from fastapi.responses import JSONResponse
import shutil

app = FastAPI()

@app.get("/backup")
def backup_database():
    try:
        shutil.copyfile('database.db', 'backup_database.db')
        return JSONResponse(content={"message": "Database backup completed successfully"})
    except Exception as e:
        return JSONResponse(content={"message": str(e)})

위의 코드는 /backup 경로로 GET 요청이 들어오면 database.db 파일을 backup_database.db로 복사하는 간단한 엔드포인트를 생성합니다.

복구 구현하기

데이터베이스 복구는 백업된 데이터를 원래 데이터베이스로 복원하는 과정을 의미합니다.

restore.py라는 새로운 파일을 생성하고 다음과 같이 코드를 작성합니다:

from fastapi import FastAPI
from fastapi.responses import JSONResponse
import shutil

app = FastAPI()

@app.get("/restore")
def restore_database():
    try:
        shutil.copyfile('backup_database.db', 'database.db')
        return JSONResponse(content={"message": "Database restore completed successfully"})
    except Exception as e:
        return JSONResponse(content={"message": str(e)})

위의 코드는 /restore 경로로 GET 요청이 들어오면 backup_database.db 파일을 database.db로 복사하는 엔드포인트를 생성합니다.

테스트하기

FastAPI를 실행하고 http://localhost:8000/backup에 접속하여 데이터베이스를 백업하고, http://localhost:8000/restore에 접속하여 데이터베이스를 복구해보세요.

결론

FastAPI와 SQLAlchemy를 사용하여 데이터베이스 백업과 복구를 구현하는 방법을 살펴보았습니다. 데이터베이스의 안전한 보관과 복구는 애플리케이션의 안정성과 신뢰성에 중요한 역할을 수행하므로, 주기적인 백업과 복구 과정은 필수적입니다.

참고자료