top of page

마크베이스 백업을 아마존 S3에 저장하고, 간편하게 마운트로 데이터 접근 하기

최종 수정일: 5시간 전

배경


마크베이스의 고객들이 자주 물어보시는 질문이 있습니다.

그것은 마크베이스에서 백업했던 파일을 아마존의 S3에 저장해 놓았을 때 이 파일을 바로 볼 수 없냐? 는 것입니다.

ree

마크베이스의 백업과 마운트 기술을 미국 및 한국 특허로 등록이 되어 있는 마크베이스의 가장 독특하면서도, 탁월한 데이터 관리 기술 중 하나입니다. 그러나, 이 제품을 설계한 당시만 하더라도 백업 파일을 아마존과 같은 클라우드에 저장한다는 생각을 하지 못했었고, 실제로 S3와 같은 저렴한 곳에 저장을 한 경우에는 이 백업에 보존된 데이터를 다시 추출하기 위해서는 언제나 다운로드/복사 및 복원 과정을 거쳐야 했습니다.


그런 이유로 이 글은 2025년 클라우드가 보편화되고, 수 많은 백업 파일들이 저렴한 S3 계열의 저장소에 보관되는 환경에서 마크베이스의 마운트 기능을 사용할 수 있는지에 대한 검증이 되겠습니다.


혹시나 마크베이스의 혁신적인 백업과 마운트 기능에 대해 더 궁금하시면, 이 글을 참고하십시요.

검증 환경


실제 아마존 환경에서 테스트하기 위해서는 시간관 비용이 꽤 들어갑니다. 따라서, 로컬에서 S3 동일한 환경을 구축하여, 빠르고 간단하게 S3 기반의 마운트 동작을 검증해 보겠습니다.


운영 체제


운영체제는 가장 쉽게 접근하고, 테스트하기 편한 리눅스의 우분투 24.04를 기준으로 했습니다만, 이 조차도 윈도우 환경에서 WSL을 통해 검증했습니다. 이제 리눅스도 윈도우 환경에서 매우 쉽게 사용할 수 있는 시대가 되었네요.


S3 저장소

여러가지 오픈 소스가 있지만, 도커를 통해 가장 빨리 테스트해 볼 수 있는 MinIO를 선택했습니다.


MinIO는 아마존의 S3와 100% 호환되는 환경을 로컬에서 제공하기 때문에 동작이 아마존과 동일하다고 판단하였습니다.


S3를 위한 파일 시스템 - s3fs


리눅스에 설치된 마크베이스 데이터베이스 엔진이 클라우드 (혹은 로컬)에 있는 S3 파일의 조각들에 접근하기 위해서는 어떤 형태로든 파일 시스템 형태로 마운트가 되어 있어야 합니다.

실제로는 그 일들이 가상 공간에 있게 되겠지만, 이 구조는 마치 구글 드라이브의 일 시스템을 접근하는 것과 같이 거대한 S3의 특정 공간을 내 로컬 환경의 특정 디렉토리를 통한 접근 창을 만드는 것과 같습니다.

이러한 역할을 하는 패키지로서 s3fs 를 활용하도록 하겠습니다.


이제 모든 준비가 완료되었습니다.


MinIO 구동하기


Docker를 활용하여 아래와 같이 한줄로 누구나 쉽게 구동할 수 있습니다.

sudo docker run -d --name minio   -p 9000:9000 -p 9001:9001   -e "MINIO_ROOT_USER=admin"   -e "MINIO_ROOT_PASSWORD=password123"   quay.io/minio/minio server /data --console-address ":9001"

위 명령어를 통해 사용자 MinIO 콘솔: http://localhost:9001, Access Key = admin, Secret Key = password123가 구성됩니다. 아래와 같이 웹을 통해 로그인 및 시스템을 모니터링 할 수 있습니다.


ree

아직 데이터를 넣지 않았습니다만, 윗 그림의 우측 상단의 Upload 기능을 통해 마크베이스에서 백업된 폴더의 내용을 올릴 수 있습니다.


MinIO 클라이언트 다운로드 하기

MinIO의 S3의 저장소 생성을 위해 MinIO 클라이언트를 아래와 같이 다운로드 받아야 합니다.

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/mc3

이제 mc3를 통해 버킷을 관리할 수 있습니다. (mc3로 바꾼 이유는 mc가 midnight command와 이름이 중복되기 때문입니다)


테스트 버킷 생성

아래와 같이 마크베이스의 백업일이 올라갈 버킷을 간단하게 생성합니다.

mc3 alias set local http://127.0.0.1:9000 admin password123
mc3 mb local/mybucket

이제 mybucket 이라는 테스트용 버킷이 아래와 같이 생성되었습니다.

ree


백업 데이터 올리기


이제 마크베이스에서 백업된 폴더를 위의 Upload 버튼을 통해 올리도록 합니다.

이 글에서는 sjkim 이라는 이름으로 백업된 데이터를 아래와 같이 S3 저장소로 올렸습니다.

ree

s3fs 설치하기

s3fs는 아래와 같이 우분투에서 설치 가능합니다.

sudo apt update
sudo apt install s3fs

s3fs 인증 사전 작업

s3fs에서 실제 S3 서버에 접속하기 위해서는 앞에서 정의했던 아이디/패스워드를 담고 있는 일을 미리 생성합니다.

방법은 아래와 같습니다.

echo "admin:password123" > ~/.passwd-s3fs
chmod 600 ~/.passwd-s3fs

s3fs를 통해 리눅스 로컬 화일 시스템으로 마운트

자! 이제 모든 준비 과정을 마쳤습니다.

이제 sjkim 버킷을 리눅스 로컬 화일 시스템에서 접근 가능하도록 s3fs를 통해 구동해 봅시다.

명령어는 아래와 같이 수행하면 됩니다.

마운트될 디렉토리는 /home/sjkim2/work/s3 입니다.

sjkim2@PC:~/work$ s3fs mybucket ./s3    -o passwd_file=~/.passwd-s3fs   -o url=http://127.0.0.1:9000   -o use_path_request_style   -o dbglevel=info -f -o curldbg
2025-11-19T06:10:59.323Z [INF] s3fs version 1.93(unknown) : s3fs -o passwd_file=/home/sjkim2/.passwd-s3fs -o url=http://127.0.0.1:9000 -o use_path_request_style -o dbglevel=info -f -o curldbg mybucket ./s3
2025-11-19T06:10:59.323Z [CRT] s3fs_logger.cpp:LowSetLogLevel(239): change debug level from [CRT] to [INF]
....
2025-11-19T06:13:30.283Z [INF]       curl.cpp:RequestPerform(2520): HTTP response code 200
2025-11-19T06:13:30.283Z [INF] threadpoolman.cpp:StopThreads(195): Any threads are running now, then nothing to do.
2025-11-19T06:13:30.283Z [INF]       threadpoolman.cpp:Worker(76): Start worker thread in ThreadPoolMan.

위와 같이 메시지가 나오면 성공적으로 S3가 마운트된 것입니다. 그럼 디렉토리를 한번 볼까요?

sjkim2@PC:~$ cd work/
sjkim2@PC:~/work$ ls -al s3
합계 4
drwx------  1 sjkim2 sjkim2    0  1월  1  1970 .
drwxrwxr-x 11 sjkim2 sjkim2 4096 11월 19 14:10 ..
drwxr-x---  1 sjkim2 sjkim2    0  1월  1  1970 sjkim
sjkim2@CEO-PC:~/work$ ls -al s3/sjkim
합계 24464
drwxr-x--- 1 sjkim2 sjkim2        0  1월  1  1970 .
drwx------ 1 sjkim2 sjkim2        0  1월  1  1970 ..
drwxr-x--- 1 sjkim2 sjkim2        0  1월  1  1970 TAG_TABLESPACE
-rw-r----- 1 sjkim2 sjkim2     1148 11월 19 14:54 backup.dat
-rw-r----- 1 sjkim2 sjkim2     6073 11월 19 14:54 backup.trc
drwxr-x--- 1 sjkim2 sjkim2        0  1월  1  1970 
Machbase_backup_19700101090000_20251113184807_130
-rw-r----- 1 sjkim2 sjkim2   159744 11월 19 14:54 meta.dbs-0
-rw-r----- 1 sjkim2 sjkim2   155648 11월 19 14:54 meta.dbs-1
-rw-r----- 1 sjkim2 sjkim2     8192 11월 19 14:54 meta.dbs-2
-rw-r----- 1 sjkim2 sjkim2 24707072 11월 19 14:54 meta.dbs-3
-rw-r----- 1 sjkim2 sjkim2        0 11월 19 14:54 meta.dbs-4
-rw-r----- 1 sjkim2 sjkim2    12288 11월 19 14:54 meta.dbs-5

S3에 업로드 했던 모든 일이 보이네요.


마크베이스에서 마운트 해 보기

내가 백업했던 내용이 클라우드의 S3 디렉토리에 압축된 상태로 저장되어 있는 상태를 내가 마운트해서 데이터를 볼 수 있을까요? 아래와 같이 명령을 수행해서 살펴봅시다.

MOUNT DATABASE '/home/sjkim2/work/s3/sjkim' to s3_backup;

디렉토리 /home/sjkim2/work/s3/sjkim 에 있는 백업일을 아래와 같이 마운트하고, 어떤 테이블이 있는지 확인해 보았습니다.

약 5초 후에 마운트가 완료되었고, DB_NAME에 S3_BACKUP 이라고 되어 있는 수십여 개의 다양한 테이블이 있는 것을 알 수 있습니다.

ree

여기에서 tag 테이블에 대해서 정보를 확인해 볼까요?

ree

1천만건의 레코드가 마운트된 데이터베이스의 tag 테이블에 있고, 10개의 태그가 각각 백만개의 데이터를 가지고 있는 것을 알 수 있습니다.


이제, 마지막으로 시간 범위에 대해 실제 질의를 실행해 보겠습니다. 위의 전체 1천만건의 데이터에서 특정 시간 범위의 데이터를 10초간 추출하는 질의를 수행해 보았습니다.

ree

잘 되네요!! 감동아닌가요?

즉, 클라우드의 S3에 저장된 마크베이스의 압축된 백업 파일을 그냥 마운트만 하면, 내부 정보를 직접 추출할 수 있는 길이 열렸습니다!


대략 1초 정도의 시간이 걸리는데 이는 해당 데이터가 포함된 실제 DB의 백업 일 청크를 로딩하는 시간이라고 보입니다. (일반 일 시스템에서는 0.1초 이하의 성능으로 실행됩니다)


실제 s3fs의 로그는 아래와 같습니다.

ree

위의 붉은 박스로 표시된 실제 로딩크기를 보면 약 39메가바이트의 데이터베이스 청크 일을 로딩하는 것을 볼 수 있습니다.

S3의 한계로 인해 로딩되는 일의 크기가 크기에 아래와 같이 향후 비용과 성능을 개선시킬 수 있는 몇가지 팁 제공하고자 합니다.


성능 개선 및 비용 줄이는 팁


S3의 일을 기본적으로 HTTP 프로토콜을 통해 화일 단위의 접근을 하게 되어, 과도한 접근은 오히려 비용 상승 및 성능을 저하시킵니다.

그러나, 백업 일은 아래와 같은 특성을 가집니다.

  • 파일 단위 조각으로 구성

  • 압축된 형태로 저장

  • 읽기 전용 속성

다시 말해 위의 특성을 이용하기 위해서는 s3fs에서 큰 메모리를 통해 캐싱을 할 수 있다면, 그야말로 한번만 로딩할 경우 비용을 크게 줄일 수 있을 것입니다. 왜냐하면, 이 일은 읽기 전용 속성을 가지기 때문에 내용이 변하지 않기 때문입니다. chatgpt의 도움을 받아 아래와 같이 다양한 옵션으로 필요한 일을 한번만 로딩하고, 재사용할 수 있을 것 입니다.

캐싱 종류

기본값

설명

파일 내용 캐시 (--enable_noobj_cache)

❌ 비활성

파일이 존재하지 않는 경우 캐시

디렉토리 캐시 (--stat_cache_*)

small

stat 캐시

메타데이터 캐시 (--enable_content_md5)

성능 영향

메모리 캐시 (-o use_cache)

file-level local cache

위의 기본값을 활성으로 바꾸어 비용 절감과 성능 개선을 기대할 수 있을 것 같습니다.


마치면서

처음에는 S3에 저장된 백업 데이터를 실제로 라이브로 마운트하여 활용할 수 있으리라고는 상상하지 못했습니다. 하지만 다양한 시도와 방법을 통해, S3와 같이 경제적인 스토리지에 저장된 마크베이스 백업 파일을 별도의 변경이나 복사 없이 직접 마운트하고, 내부 데이터에 SQL로 접근할 수 있음을 확인할 수 있었습니다.


이 글이 마크베이스 데이터베이스의 관리, 백업, 그리고 데이터 재활용에 대해 고민하시는 분들께 실질적인 도움이 되었기를 바랍니다.


추가적인 질문이나 개선 사항이 있으시다면 언제든지 공식 지원 이메일(support@machbase.com)로 문의해 주시기 바랍니다.


감사합니다.


 
 
call
english
bottom of page