DB/MySQL

[MariaDB] Database를 백업하는 방법

채윤아빠 2021. 6. 27. 11:38
728x90
반응형

개요

데이터베이스를 이용하면, 주기적인 백업은 선택이 아닌 필수적인 일입니다.

MaraiDB에서 데이터베이스를 백업 받는 방법에 대하여 정리하여 둡니다.

기본적인 데이터베이스 백업

MaraiDB에서 데이터베이스를 백업을 위하여 "mysqldump" 명령을 이용합니다.

기본적으로 다음과 같이 필요한 데이터베이스에 대한 백업을 수행합니다.

$ mysqldump -u dbuser -h 127.0.0.1 -ppassword --port=3306 DATABASE | gzip > DATABASE-20210627_10.sql.gz

각 옵션들에 대한 설명은 다음과 같습니다.

  • -u : 데이터베이스 서버 로그인 계정명을 지정합니다. 위 예에서는 "dbuser" 계정으로 로그인합니다.
  • -h : 데이터베이스 서버의 호스트 주소 또는 IP를 지정합니다. 위 예에서는 "127.0.0.1"로 현재 서버를 백업합니다.
  • -p : 로그인 계정에 대한 비밀번호를 지정합니다. 위 예에서는 "dbuser" 계정에 대한 로그인 비밀번호는 "password" 입니다. 주의할 점은 비밀번호 "password"를 띄워서 입력하면 안됩니다. 그러면 "password" 자체가 데이터베이스 명으로 인식하게 됩니다. "-p" 옵션은 비밀번호를 별도로 입력받으라는 형식으로 처리되어, 비밀번호를 입력받는 프롬프트가 나타나게 됩니다.
  • --port : 데이터베이스 서버의 서비스 포트번호를 지정합니다. 위 예에서는 기본 포트인 3306으로 접속합니다.
  • DATABASE : 백업 받을 데이터베이스 이름을 지정합니다.
  • "|" : 백업 내용을 파이프 처리하여 이후 지정한 프로그램으로 전달합니다.
  • gzip : 파이프로 전달받은 데이터베이스 백업 내용을 지정된 파일로 압축합니다.
  • ">" : 출력 리다이렉션 입니다. 다음에 지정한 파일로 압축된 데이터베이스 내용을 저장합니다.

전체 데이터베이스 백업

위에서와 같이 특정 데이터베이스가 아닌 전체 데이터베이스를 백업받으려면 다음과 같이 백업을 수행합니다.

$ mysqldump -u dbuser -ppassword --port=3306 --all-databases | gzip > ALL_DATABASE-20210627_10.sql.gz
  • --all-databases : 데이터베이스 서버의 모든 데이터베이스를 백업받도록 합니다.

데이터베이스 압축

데이터베이스를 압축하는 방법은 아래와 같이 다양한 방법이 있습니다.

1: mysqldump -u dbUser -p DBName > OutputFile.sql
2: mysqldump -u dbUser -p DBName | gzip > OutputFile.sql.gz
3: mysqldump -u dbUser -p DBName | gzip -9 > OutputFile.sql.gz
4: mysqldump -u dbUser -p DBName | zip > OutputFile.sql.zip
5: mysqldump -u dbUser -p DBName | bzip2 > OutputFile.sql.bz2
  • -9 : 속도가 늦더라도 최고 압축률로 내용을 압축합니다.

위와 같은 5가지의 명령으로 압축한 결과의 속도를 비교해 보면, 압축을 하지 않은 1번이 가장 빠르지만, 그만큼 백업 파일의 용량이 클 수 밖에 없습니다.
5번 "bzip2"의 압축률이 가장 좋지만, 그만큼 속도가 느립니다.

 

일반적으로 "gzip"을 이용하는 2번 방법을 가장 많이 이용하게 됩니다.

참고자료