[python] 웹 서버에 데이터베이스 백업 기능 추가하기

이번 포스팅에서는 Python을 사용하여 웹 서버에 데이터베이스 백업 기능을 추가하는 방법을 알아보겠습니다.

1. 필요한 패키지 설치하기

먼저, 필요한 패키지를 설치해야합니다. pip를 사용하여 flaskpymysql 패키지를 설치합니다.

pip install flask pymysql

2. 데이터베이스 연결 설정하기

웹 서버에서 데이터베이스에 접속하기 위해, pymysql을 사용하여 데이터베이스 연결을 설정해야합니다.

import pymysql

# 데이터베이스 연결 설정
connection = pymysql.connect(
    host='localhost',
    user='username',
    password='password',
    db='database_name',
    charset='utf8mb4'
)

위 코드에서 host는 데이터베이스 서버의 호스트 이름이며, userpassword는 데이터베이스에 접속하기 위한 사용자 정보입니다. db는 연결할 데이터베이스 이름을 지정합니다.

3. 백업 기능 구현하기

백업 기능을 구현하기 위해, 데이터베이스의 전체 내용을 백업 파일로 저장하는 함수를 작성합니다.

import datetime

def backup_database():
    # 현재 날짜와 시간을 포맷팅하여 백업 파일 이름 생성
    now = datetime.datetime.now()
    backup_filename = f"backup_{now.strftime('%Y%m%d_%H%M%S')}.sql"
    
    # 백업 파일 생성
    with open(backup_filename, 'w') as f:
        with connection.cursor() as cursor:
            # 데이터베이스 전체 내용을 백업 파일에 저장
            cursor.execute('SELECT * FROM table_name')
            for row in cursor.fetchall():
                f.write(','.join(map(str, row)) + '\n')

    print(f"Database backup created: {backup_filename}")

위 코드에서 table_name은 백업할 데이터베이스 테이블의 이름으로 변경해주어야 합니다.

4. 웹 서버에서 백업 기능 호출하기

백업 기능을 특정 URL을 호출하면 실행되도록 웹 서버에 연결하여 추가합니다.

from flask import Flask

app = Flask(__name__)

@app.route('/backup')
def backup():
    backup_database()
    return "Database backup created"

if __name__ == '__main__':
    app.run()

위 코드에서 /backup 경로에 접속하면 backup_database 함수가 호출되어 데이터베이스 백업이 생성됩니다.

5. 테스트하기

웹 서버를 실행한 뒤 웹 브라우저에서 http://localhost:5000/backup 경로에 접속하면 데이터베이스 백업이 생성됩니다. 백업 파일은 해당 프로젝트 폴더에 저장됩니다.

결론

Python을 사용하여 웹 서버에 데이터베이스 백업 기능을 추가하는 방법을 알아보았습니다. 이 방법을 활용하여 웹 애플리케이션에서 데이터베이스의 백업을 자동으로 생성할 수 있습니다.

참고 자료