[파이썬] ORM을 사용한 데이터베이스 백업과 복원

데이터베이스는 매우 중요한 엔터프라이즈 자원으로, 장애가 발생했을 때 데이터의 손실을 최소화하기 위해서는 정기적인 백업복원 기능이 필요합니다. 이러한 기능을 구현하기 위해 ORM(Object-Relational Mapping)을 활용할 수 있습니다. 이번 포스트에서는 Python에서 주로 사용되는 ORM 라이브러리인 SQLAlchemy을 활용하여 데이터베이스 백업과 복원 기능을 구현하는 방법에 대해 알아보겠습니다.

데이터베이스 백업

데이터베이스 백업은 현재 상태의 데이터를 안전한 장소에 저장하는 과정입니다. SQLAlchemy를 사용하여 데이터베이스의 테이블과 데이터를 백업하는 예제 코드는 다음과 같습니다.

import os
from datetime import datetime
from sqlalchemy import create_engine, MetaData

# 백업할 데이터베이스 연결 정보
DB_URL = "postgresql://username:password@localhost:5432/db_name"

# 백업 파일 경로
BACKUP_DIR = "/path/to/backup/directory"

# SQLAlchemy 엔진 생성
engine = create_engine(DB_URL)

# 백업 파일 이름 생성
backup_file = os.path.join(BACKUP_DIR, f"backup_{datetime.now().strftime('%Y%m%d%H%M%S')}.sql")

# 데이터베이스 백업 수행
with open(backup_file, 'w') as f:
    # 데이터베이스 메타데이터 생성
    metadata = MetaData(bind=engine)
    metadata.reflect()

    # 테이블 생성 및 데이터 쓰기
    for table in reversed(metadata.sorted_tables):
        f.write(f"CREATE TABLE {table} AS SELECT * FROM {table};\n")

print(f"데이터베이스가 백업되었습니다: {backup_file}")

위 코드에서는 DB_URL 변수에 백업 대상 데이터베이스의 연결 정보를 입력하고, BACKUP_DIR 변수에 백업 파일이 저장될 디렉토리 경로를 설정합니다. create_engine 함수를 사용하여 SQLAlchemy 엔진을 생성하고, `MetaD