[sql] AutoMySQLBackup으로 MySQL 데이터베이스를 정기 백업하기

AutoMySQLBackup은 MySQL 전용의 백업 프로그램입니다. mysqldump의 백업 기능에 백업 파일들의 생애 주기를 관리하는 관리 기능을 포함하고 있습니다. AutoMySQLBackup은 mysqldump에 의존하는 bash 셸 스크립트입니다. mysql 및 mysqldump가 실행 가능해야 정상 동작합니다.

AutoMySQLBackup은 다음과 같은 기능들이 있습니다.

  • 일일, 주간, 월간과 같은 다양한 간격으로 백업을 생성할 수 있습니다.
  • 백업을 회전시켜 저장 공간을 절약할 수 있습니다.
  • 백업 파일을 외부 이메일 계정으로 전송할 수 있습니다.

루트 권한이 제공되지 않는 공유형 호스팅 환경에서는 사용할 수 없을 수도 있으므로 설치 가능한 환경인지 확인해야 합니다.

AutoMySQLBackup 다운로드 및 설치

패키지 매니저를 사용해 패키지를 AutoMySQLBackup 패키지를 설치합니다. 우분투를 기준으로 apt로 다음과 같이 설치할 수 있습니다.

sudo apt-get install automysqlbackup

패키지 다운로드와 다운로드가 완료되면 패키지를 설정하는 GUI 화면이 실행됩니다. AutoMySQLBackup의 기본 사용 환경 설정을 합니다.

메일 서버 구성 유형을 선택합니다. 설정은 나중에 변경할 수 있으므로 "설정 안함", 또는 "로컬 전용"을 선택합니다.

배포판이나 AutoMySQLBackup 버전에 따라 설치할 때 표시되는 한글 메시지가 약간씩 다를 수 있습

  • 설정 안함: 현재 구성을 변경하지 않고 유지합니다.
  • 인터넷 사이트: SMTP를 사용하여 직접 메일을 발송 및 수신합니다.
  • 스마트호스트가 있는 인터넷 사이트: SMTP를 사용하여 직접 메일을 수신하거나 fetchmail과 같은 유틸리티를 실행합니다. 나가는 메일은 스마트호스트를 사용해 발송됩니다.
  • 위성 시스템: 모든 메일은 '스마트호스트'로 불리는 다른 컴퓨터로 전송됩니다.
  • 로컬 전용: 로컬 사용자를 위한 메일만 전달됩니다. 네트워크는 없습니다.

우분투 패키지 매니저로 설치할 경우, 실행 스크립트는 /usr/sbin/automysqlbackup 디렉토리에 설치되며, 환경 설정 파일은 /etc/default/automysqlbackup 파일을 기본으로 사용합니다.

우분투(데비안) 버전 AutoMySQLBackup은 기본 설정으로 MySQL 로그인 정보를 /etc/mysql/debian.cnf 파일에서 읽습니다. debian.cnf 파일은 MySQL이 사용하는 시스템 관리용 계정의 접속 정보이기 때문에 임의로 수정하면 안되며, 루트 권한이 있는 계정만 읽고 쓸 수 있는 파일입니다.

일반 계정으로 debian.cnf 파일에 접근하면 퍼미션 에러가 발생하며, 다른 MySQL 환경 설정 파일에서 MySQL 계정 정보를 가져오려면 /etc/default/automysqlbackup 파일을 텍스트 편집기로 열어서 MySQL 계정 정보를 읽는 MySQL 환경 설정 파일을 변경해야 합니다.

AutoMySQLBackup 수동 설치 방법

패키지 매니저로 설치할 수 없는 환경일 때는 AutoMySQLBackup 스크립트를 수동으로 설치할 수 있습니다. 설치 방법은 다음과 같습니다.

  1. http://sourceforge.net/projects/automysqlbackup 페이지에서 "Download"를 클릭해 .tar.gz 파일을 다운로드합니다.
  2. .tar.gz 파일을 FTP 등을 이용해서 MySQL 서버 호스트로 업로드합니다.
  3. .tar.gz 파일을 업로드한 디렉토리로 이동 tar로 업로드한 .tar.gz 파일을 해제합니다.(2024년 1월 기준 v3.0_rc6 버전입니다.)
tar xvzf automysqlbackup-v3.0_rc6.tar.gz

MySQL 서버 호스트에서 wget 커맨드 사용이 가능하면 다음 명령어로 다운로드 및 업로그 과정을 줄일 수 있습니다. 별도의 폴더 생성이 되지 않으므로 미리 폴더를 만들어서 파일을 옮긴 후 압축을 푸는 것을 권장합니다.

wget -O automysqlbackup.tar.gz https://sourceforge.net/projects/automysqlbackup/files/latest/download

압축을 푼 AutoMySQLBackup의 구성 파일은 다음과 같습니다. automysqlbackup.conf는 환경 설정 파일입니다. 이 파일을 텍스트 편집기로 열어서 백업 파일이 생성되는 경로와 생애주기 설정을 하게 됩니다.

-rw-------  1 apost apost  9221 11월 25  2011 CHANGELOG
-rw-------  1 apost apost 18091  8월 29  2011 LICENSE
-rw-------  1 apost apost  7016 11월 19  2011 README
-rwx------  1 apost apost 89097 12월  4  2011 automysqlbackup*
-rw-------  1 apost apost 11858 11월 21  2011 automysqlbackup.conf
-rwx------  1 apost apost 21028 12월  4  2011 install.sh*


4. 다음 명령을 실행해 AutoMySQLBackup를 설치합니다.

./install.sh

  1. "Select the global configuration directory" 프롬프트에서 환경 설정 파일(automysqlbackup.conf)이 저장될 경로를 입력합니다. automysqlbackup.conf 파일을 복사할 경로를 지정하는 것입니다. 잘 모르면 기본 값(/etc/automysqlbackup)을 그대로 사용합니다.
  2. "Select directory for the executable" 프롬프트에서 프로그램 파일이 복사될 경로를 입력합니다. automysqlbackup 실행 스크립트를 복사할 위치를 지정합니다. 마찬가지로 잘 모르면 기본 값(/usr/local/bin)을 그대로 사용합니다.
    /usr/local/bin 경로는 path 환경에 기본 등록되는 경로이므로 어디서나 automysqlbackup 을 실행할 수 있습니다.

패키지 매니저로 설치하는 것과 수동 설치는 실행 스크립트와 환경 설정 파일의 경로와 이름이 다르므로 구분해서 사용해야 합니다.

AutoMySQLBackup 설정

AutoMySQLBackup를 다운로드하고 설치한 후에는 자체 환경에 맞게 설정할 수 있습니다. 이를 위해 다음 단계를 따르세요.

  1. 텍스트 편집기로 /etc/default/automysqlbackup(또는 automysqlbackup.conf)파일을 엽니다.
  2. 기본 백업 설정을 구성하려면 환경 설정 파일에서 다음 행들의 앞부분"#" 기호를 제거한 다음 값을 다음처럼 변경합니다.
CONFIG_mysql_dump_username='username'
CONFIG_mysql_dump_password='password'
CONFIG_backup_dir='/home/username/mysqlbackups'

MySQL 사용자 이름과 비밀번호를 정확하게 입력해야 합니다. 그리고 백업에 사용하는 디렉토리를 미리 생성해야 합니다. AutoMySQLBackup은 백업 디렉토리를 자동으로 생성하지 않습니다.

  1. 특정 데이터베이스를 백업하려면 환경 설정 파일에서 다음 행의 앞 부분 "#"을 삭제하고 백업하려는 데이터베이스 이름을 공백으로 구분해서 괄호 안에 나열하면 됩니다.
CONFIG_db_names=()

기본적으로 AutoMySQLBackup는 모든 MySQL 데이터베이스를 백업합니다. 특정 데이터베이스를 백업하려면 이 설정을 변경해야 합니다.

예를 들어 특정 데이터베이스만 백업하려면 다음과 같이 작성합니다.

CONFIG_db_names=('dbname1' 'dbname2')

  1. 다른 백업 간격에 대한 로테이션 설정을 지정하려면 환경 설정 파일에서 다음 행들 앞의 시작 부분의 "#"을 삭제한 다음 원하는 로테이션 설정으로 값을 변경하면 됩니다.
CONFIG_rotation_daily=7
CONFIG_rotation_weekly=42
CONFIG_rotation_monthly=36

설정한 옵션 값은 백업 보존 기간을 나타내며 다음과 같은 의미입니다.

  • CONFIG_rotation_daily=7: 일별 백업을 7일 동안 보존합니다. 7일이 경과한 일별 백업 파일은 자동으로 삭제됩니다.
  • CONFIG_rotation_weekly=42: 주간 백업을 42주 동안 보존합니다. 42주 이전 주간 백업 파일은 자동으로 삭제됩니다.
  • CONFIG_rotation_monthly=36: 월간 백업을 36개월까지 보존합니다. 36개월 이전의 월간 백업 파일은 자동으로 삭제됩니다.

  1. 백업 파일을 이메일 계정으로 전송하려면 환경 설정 파일에서 다음 행들을 찾아서 다음처럼 설정하면 됩니다. "emailaddr@mydomain.com"은 실제로 사용하는 이메일 주소로 바꿔야 합니다.
CONFIG_mailcontent='files'
CONFIG_mail_use_uuencoded_attachments='yes'
CONFIG_mail_address='emailaddr@mydomain.com'

백업 파일을 이메일로 발송하는 것은 권장하지 않습니다. DB 백업 파일 크기가 아주 작을 때는 문제가 되지 않지만, DB 백업 파일이 커지면 메일 전송 과정에 부하가 생기고, 수신하는 쪽의 메일 서버도 첨부파일 수신으로 인해 부하가 걸리게 됩니다.

  1. 변경 내용을 저장합니다.

백업 실행

AutoMySQLBackup를 환경에 맞게 구성한 후에는 "automysqlbackup" 스크립트를 실행해 백업을 실행하면 됩니다.