Object Storage를 활용하여 DB 백업 데이터 저장소 만들기

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
9 min readMay 13, 2019

네이버 클라우드 플랫폼 Object Storage는 어떤 상품인가요?

Ncloud에서 2018년 봄에 출시한 Object Storage.
기존 File Storage가 있지만 File Storage도 Object Storage이고 새로이 출시된 Object Storage도 Object Storage입니다.

그런데 기존 File Storage와 이번 Object Storage 모두 Object Storage이지만 많은 차이점이 존재합니다. File Storage 상품은 네이버의 OwFS를 기반으로 하고 있고, (이 OwFS는 네이버 서비스의 많은 데이터 저장을 담당하고 있죠.) 이 때문에 OwFS API, CLI를 이용하게 됩니다. 반면 Object Storage 상품은 AWS S3와 호환 가능한 Object Storage 상품으로 AWS S3 API와 CLI를 이용할 수 있다는 것이 많은 장점 중 하나입니다.

오늘은 Object Storage를 백업 스토리지로 활용해 보겠습니다.
그런데 왜 굳이 로컬 스토리지나 NAS가 아닌 오브젝트 스토리지에 백업 데이터를 저장해야 할까요?

1. 로컬 스토리지나 NAS의 경우 용량 관리를 해주어야 합니다. 즉, 백업 데이터가 많아져 스토리지 용량이 고갈되지 않도록 관리를 해주어야 하죠. 만약 스토리지가 Full차게 되면 백업이 불가능해져서 소중한 데이터를 복구할 수 없게 될 수도 있습니다. 오브젝트 스토리지는 용량을 미리 할당하는 방식이 아니기 때문에 백업 데이터가 늘어나도 용량 관리에 대한 부담이 없습니다.

2. 로컬 스토리지나 NAS는 오브젝트 스토리지에 비해 저렴합니다.

3. 오브젝트 스토리지는 웹으로 접근이 가능하기 때문에 백업 데이터를
외부에서 다운로드
받아서 활용하기가 수월합니다.

이러한 다양한 장점이 있기 때문에 오브젝트 스토리지를 백업 스토리지로 활용하게 되는데요. 오늘은 리눅스 기반의 MySQL을 운영할 때, 데이터를 백업하고 백업한 데이터를 오브젝트 스토리지에 자동으로 저장하는 방법을 단계별로 소개해 드리려고 합니다.

Object Storage를 이용한 백업 저장소는 어떻게 구성하나요?

(1) 서버 설정

백업 스토리지를 활용하기 위해서는 먼저 백업할 서버가 있어야겠죠. Ncloud에서 리눅스 서버를 만들고 여기에 MySQL도 설치하여 DB서버로 구성합니다. MySQL의 기본적인 설정 내용은 여기서 다룰 내용은 아니므로 패스하겠습니다. 전 귀찮아서 리눅스에 MySQL이 포함되어 있는 서버 이미지를 선택하였습니다.

대략 2~3분이 지나면 서버가 생성됩니다.
서버 생성이 완료되면 서버에 접속해서 MySQL 설정도 하고 데이터베이스도 만들고 데이터도 생성하고 이것 저것 DB 설정을 해야겠죠.

(2) 백업 스크립트 작성

서버 설정이 완료되었다면 이제 자동으로 DB를 백업하는 스크립트를 작성하고 Crontab에 등록하여 주기적으로 백업을 하도록 해보겠습니다.

가장 먼저 해야할 일은 백업 파일이 저장될 디렉토리를 생성합니다.

[root@master-data ~]# mkdir /backup

스크립트는 /bin/backup.sh 라는 실행파일로 만들겠습니다.

#!/bin/bash
DATE=`date +”%Y%m%d”`
#DATE 변수에 날짜를 집어넣고
rm -rf /backup/*
# 기존에 /backup 디렉토리에 있는 파일들은 용량 확보를 위해 과감히 삭제
/usr/bin/mysqldump -u root ncloud > /backup/db_bakup_${DATE}.sql
#mysqldump 명령어를 이용해 /backup 디렉토리에 db_backup_날짜.sql 형태로 파일 생성

좀 더 복잡하게 파일이 있으면 이름을 바꿔서 만들고 백업이 잘 되었는지도 확인하고 해야 하는데 우선은 간단하게 기능에 충실한 스크립트를 만들어 보았습니다.
그리고 당연한 얘기지만 반드시 DB에 패스워드도 지정하여야 하고 User도 생성하고 ACL도 설정해야합니다. 위의 예제는 어디까지나 예제여서 보안 설정이 안되어 있는 상태라는것을 잊지 말아야 합니다.

그리고 다음 명령어로 실행가능하도록 퍼미션을 허용합니다.

[root@master-data ~]# chmod 755 /bin/backup.sh

마지막으로 crontab 에 스크립트를 가장 한가한 시간인 매일 새벽 6시에 동작하도록 등록합니다.

[root@master-data ~]# crontab –e

아래 내용을 추가하면 매일 새벽 6시에 /bin/backup.sh 가 수행됩니다.

00 06 * * * /bin/backup.sh

(3) CLI 구성

이제 로컬 스토리지에 백업이 되도록 구성이 완료되었습니다. 이번에는 AWS CLI를 이용하여 오브젝트 스토리지에 저장하기 위한 CLI 구성 작업을 해보겠습니다.
Ncloud 오브젝트 스토리지 장점중 하나가 AWS S3와 호환이 된다는 것인데요. 때문에 AWS의 CLI나 다양한 3rd party를 그대로 가져다 사용할 수 있습니다.
그런데 백업스토리지로 활용하기 위해서는 API로 따로 프로그램을 만들기보다는 CLI 기반의 명령어로 처리하는게 보다 편리하기 때문에, CLI를 설치해 보겠습니다.

우선 다음과 같이 명령어를 실행합니다.

[root@master-data ~]# curl -O https://bootstrap.pypa.io/get-pip.py
[root@master-data ~]# python get-pip.py — user

그리고 명령어 PATH를 쉘 프로파일에 추가합니다. 대부분의 리눅스가 bash 쉘을 기본으로 사용하기 때문에 .bach_profile 을 편집합니다.

PATH=$PATH:$HOME/bin
=>
PATH=$PATH:$HOME/bin:~/.local/bin:

그리고 해당 프로필을 현재 세션에 로드합니다.

source ~/.bash_profile

그러면 CLI 설치는 완료가 되었습니다.

다음은 CLI 설정입니다.
CLI 설정을 하기 전에 Ncloud에서 다음을 확인하여야 합니다.
포털에서 마이페이지 > 계정관리 > 인증키 관리 항목에 들어가면 Access Key와 Secret Access Key가 있습니다. 혹시 해당 키가 없다면 [신규 API 인증키 생성]을 통해 Key를 만들어 줍니다.

이 두 개의 키가 있어야 CLI를 이용할 수 있죠.

리눅스에서 다음 명령어를 수행합니다.

이제 거의 모든 작업이 완료되었습니다.

(4) 오브젝트 스토리지 버킷 생성

실제로 백업 데이터를 저장할 버킷을 오브젝트 스토리지에 만들 차례입니다.
MC에서 Storage > Object Storage를 선택한 후 버킷 생성을 선택하여 버킷을 생성합니다.

버킷 이름은 dbbackup 이라고 하겠습니다.

해당 버킷에 잘 접속되는지 CLI를 통해 확인해 보겠습니다.
명령어는 AWS CLI 명령어 사용법을 이용하면 됩니다.

[root@master-data ~]# aws — endpoint-url=http://kr.objectstorage.ncloud.com s3 ls

명령어에서 중요한 것은 –endpoint-url 옵션으로 반드시 ncloud 오브젝트 스토리지로 지정이 되어야 하죠.

버킷 리스트가 잘 보이니 이제 버킷에 백업 데이터를 저장해야겠죠.
기존에 backup.sh 스크립트는 로컬에 백업파일을 저장하는 방식입니다. 이 내용을 오브젝트 스토리지로 전송하도록 수정합니다.
맨 마지막줄만 추가합니다.

#!/bin/bash
DATE=`date +”%Y%m%d”`

rm -rf /backup/*

/usr/bin/mysqldump -u root ncloud > /backup/db_bakup_${DATE}.sql

aws — endpoint-url=http://kr.objectstorage.ncloud.com s3 cp /backup/* s3://dbbackup/

모든 준비가 완료되었습니다. 이제 매일 새벽 6시가 되면 DB 백업을 로컬 디스크에 떨구고 해당 파일을 오브젝트 스토리지에 복사를 하게 되죠.
이렇게 말입니다.

네이버 클라우드 플랫폼 상품 및 서비스는 어떻게 사용할 수 있나요?

네이버 클라우드 플랫폼의 Storage 상품 및 서비스 플랫폼을 사용하기 위해서는 네이버 클라우드 플랫폼 포털 사이트 및 사용자 가이드를 참고하시면 쉽게 사용하실 수 있습니다.

- 네이버 클라우드 플랫폼 포털
: https://www.ncloud.com
- 네이버 클라우드 플랫폼 사용자 가이드
: https://guide.ncloud-docs.com/docs
- Object Storage 상품 가이드
: https://guide.ncloud-docs.com/docs/storage-storage-6-1

글을 마무리 하며…

네이버 클라우드 플랫폼의 Object Storage 상품 및 서비스를 활용하여 백업한 데이터베이스를 보관할 수 있는 저장소를 만들어보았습니다.

용량 걱정 없이 파일을 보관하고, 저장한 파일에 웹상에서 언제 어디서든 접근할 수 있다는 점이 Ncloud Object Storage의 가장 큰 매력이 아닐까 싶네요. Amazon S3의 저장소를 사용하시는 경우에도 코드 수정없이 사용이 가능하다 것도 또 하나의 특징이죠.

새로워진 Storage 상품을 통해 더 많은 사용자들이 편리하면서도 동시에 안전하게 대규모 데이터를 저장하고 자유롭게 활용할 수 있기를 기대합니다.

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.