오픈 소스 · MySQL, MariaDB, PostgreSQL을 위한 백업 및 복원

데이터베이스를 잠그지 않는 백업. 1초 단위까지 정확한 복구.

DumpCat은 웹 UI를 갖춘 단일 바이너리입니다. 백업을 예약하고, 압축하고 암호화해 S3, Google Drive, OneDrive, SFTP로 사본을 보내고, 검증까지 마친 뒤, 필요할 때 데이터를 되살려 줍니다. Linux와 Windows에서 완전히 오프라인으로 동작합니다.

MySQL 5.7 · 8.0 · 8.4  /  Percona Server  /  MariaDB 10.x · 11.x  /  PostgreSQL 10+

특정 시점 복구

시뮬레이션

누군가 14:37:12에 orders 테이블을 삭제했습니다. 마커를 끌어 복구 시점을 고르면, DumpCat이 가장 최근의 베이스 백업과 재생할 binlog 파일을 골라 줍니다. PostgreSQL도 아카이브된 WAL로 똑같이 동작합니다.

full · 02:00
DROP TABLE orders · 14:37:12
지금
  • 전체 백업 (mysqldump)
  • 아카이브된 binlog, 파일당 최대 15분
  • 복원 시 재생
  • 사고
복구할 시각
18/10/2026 14:37:11
베이스 백업
20261018-020000-fullmysqldump · 일관성 기준 시각 02:00:03
binlog 재생
mysql-bin.000123 → mysql-bin.000173파일 51개, 데이터를 건드리기 전에 모두 검사
사고 이전: orders 테이블 온전함

설치

1분 만에 실행

Linux에서는 명령어 한 줄, Windows에서는 다운로드 후 더블클릭이면 됩니다. 설치 프로그램이 부팅과 함께 시작되는 서비스와, 데이터베이스 버전에 맞는 백업 도구를 설치합니다. 웹 UI는 파일 하나에 내장되어 있습니다.

Linux 서버에서 이 명령어를 붙여 넣고 Enter 키를 누르세요:

bash
curl -fsSL https://dumpcat.cc/install.sh | sudo sh

최신 릴리스를 내려받아 체크섬을 확인한 뒤, /opt/dumpcat에 systemd 서비스로 설치합니다. rclone, MySQL/MariaDB 클라이언트, 버전에 맞는 mariabackup 또는 XtraBackup, 그리고 저장소에 있으면 mydumper도 함께 설치합니다. --postgres 16을 붙이면 PostgreSQL 16 클라이언트 도구가 추가됩니다. 옵션은 sh -s -- 뒤에 붙입니다: --port 9090, --listen 127.0.0.1, --tls-auto.

설치 후

  1. http://<server-ip>:6369 열기설치 프로그램이 출력한 일회용 설정 토큰으로 관리자 계정을 만듭니다(다시 보려면: dumpcat setup-token).
  2. 데이터베이스 서버 추가Test connection이 누락된 권한과 사용할 수 있는 방식을 알려 줍니다.
  3. 스토리지 추가Test를 누르면 파일을 쓰고, 읽고, 삭제해 봅니다.
  4. 백업 작업 만들기일정, 암호화, 스토리지, 보존 정책을 고른 뒤 Save & run now를 누릅니다.

포트 6369는 곧 MEOW

전화 키패드의 영문자로 6-3-6-9를 누르면 고양이 울음소리 MEOW(야옹)가 됩니다. 웹 UI의 기본 포트입니다.

백업 방식

데이터베이스와 규모에 꼭 맞는 도구

MySQL과 MariaDB에서는 DumpCat이 mysqldump, mydumper, XtraBackup / MariaBackup을 구동합니다. 서버를 추가할 때 Test connection을 누르면 버전, datadir, 데이터베이스별 크기, 그리고 그 서버에서 쓸 수 있는 방식이 표시됩니다.

mysqldump논리mydumper논리, 병렬XtraBackup / MariaBackup물리, 핫 백업
데이터베이스를 잠그나요?--single-transaction 덕분에 InnoDB는 잠그지 않음스레드 동기화를 위해 몇 밀리초 동안 전역 잠금, 이후에는 없음InnoDB 잠금 없음, 마지막에 아주 짧은 백업 잠금
백업 속도데이터베이스당 스레드 1개, 여러 데이터베이스를 병렬로멀티스레드, 테이블을 행 단위로 분할가장 빠름: 멀티스레드 파일 복사
복원 속도가장 느림빠름: 병렬, 적재 후 인덱스 생성매우 빠름: 파일 복사 + prepare
증분 백업미지원미지원지원
데이터베이스 하나만 복원, 이름 변경가능가능불가, 인스턴스 전체만
적합한 용도20–50 GB 미만의 데이터베이스하나씩 복원하는 대용량 데이터베이스100 GB에서 수 TB까지, 짧은 RTO

PostgreSQL 10 이상: 데이터베이스별 pg_dump로 테이블을 병렬로 덤프하고 복원하며, 새 이름으로 또는 다른 서버에 복원할 수 있습니다. 클러스터 전체는 복제 연결을 통한 pg_basebackup으로 백업하고, 연속 WAL 아카이빙으로 특정 시각, 복원 지점(restore point), WAL 위치까지 복구합니다.

스토리지

작업 하나로 여러 곳에 사본을

로컬 디스크에 쓴 뒤 업로드하거나, 임시 디스크 없이 클라우드로 바로 스트리밍합니다. 스토리지마다 보관할 사본 수를 따로 정할 수 있습니다. 예를 들어 로컬에는 백업 3개, S3에는 30일 치를 둘 수 있습니다.

  • 로컬 / NFS가장 빠르게 복원, datadir와는 다른 디스크에 두세요
  • S3AWS, Cloudflare R2, MinIO, Wasabi, DigitalOcean
  • Google DriveOAuth 또는 서비스 계정
  • OneDriveSharePoint 포함
  • FTP / FTPS명시적 또는 암시적 TLS
  • SFTP비밀번호 또는 개인 키
  • WebDAVNextcloud 등
  • Backblaze B2Azure Blob, Dropbox도 지원
  • rclone70개 이상의 백엔드 추가 지원

표준 형식, 벤더 종속 없음

<storage>/
  shop-nightly/
    20261018-020000-full/
      manifest.json      # sha256, binlog, GTID
      shop.sql.zst.age
      crm.sql.zst.age
      _users.sql.zst.age # users & grants
    binlog/20261018/
      mysql-bin.000123.zst.age

DumpCat을 실행하던 머신을 잃었나요? 새로 설치하고 스토리지를 다시 추가한 뒤 Import backup catalog를 누르면 모든 백업이 다시 목록에 나타납니다. DumpCat 없이도 age, zstd와 mysql 또는 pg_restore로 복원할 수 있습니다.

연결

열린 포트가 없는 데이터베이스? 그래도 백업됩니다.

방화벽이나 NAT 때문에, 또는 데이터베이스가 127.0.0.1에서만 수신 대기해서 백업 서버가 데이터베이스에 직접 연결할 수 없다면, 반대로 데이터베이스 호스트가 DumpCat으로 연결하게 하세요. 방법은 두 가지이며, 어느 쪽도 데이터베이스 호스트에 포트를 열지 않습니다. 백업, 복원, 특정 시점 복구는 직접 연결할 때와 똑같이 동작합니다.

에이전트 HTTPS

DumpCat백업 서버백업 및 복원mysqldump · mydumper127.0.0.1:port에이전트 엔드포인트HTTPS · 웹 UI 포트HTTPS로 접속 가능데이터베이스 호스트인바운드 포트 없음MySQL / MariaDB그대로 · 127.0.0.1 전용127.0.0.1:3306dumpcat agent허용 목록 127.0.0.1:3306이 호스트는 포트를 열지 않음방화벽 / NAT← HTTPS · DB 호스트가 연결 시작3306 인바운드차단됨, 필요 없음DumpCat백업 서버백업 및 복원mysqldump · mydumper127.0.0.1:port에이전트 엔드포인트HTTPS · 웹 UI 포트HTTPS로 접속 가능방화벽 / NAT↑ HTTPSDB 호스트가 연결 시작3306 인바운드차단됨, 필요 없음데이터베이스 호스트인바운드 포트 없음dumpcat agent허용 목록 127.0.0.1:3306127.0.0.1:3306MySQL / MariaDB그대로 · 127.0.0.1 전용이 호스트는 포트를 열지 않음
데이터베이스 호스트가 터널을 엽니다DumpCat의 데이터베이스 트래픽은 이 터널 안으로 흐릅니다
데이터베이스 호스트에 필요한 것
DumpCat으로 나가는 HTTPS
데이터베이스
변경 없음, 127.0.0.1에서만 수신 대기해도 됨
설치
sudo ./install.sh --agent --server … --key …
적합한 경우
네트워크와 MySQL 설정을 건드리고 싶지 않을 때

내장 WireGuard UDP · 기본값 꺼짐

DumpCat백업 서버백업 및 복원mysqldump · mydumper127.0.0.1:port내장 WireGuard10.66.0.1 · UDP 51820UDP 51820 열림데이터베이스 호스트인바운드 포트 없음MySQL / MariaDB10.66.0.2에서 수신 대기10.66.0.2:3306wg-quick@dumpcat10.66.0.2 · keepalive 25초이 호스트는 포트를 열지 않음방화벽 / NAT← WireGuard UDP · DB 호스트가 연결 시작3306 인바운드차단됨, 필요 없음DumpCat백업 서버백업 및 복원mysqldump · mydumper127.0.0.1:port내장 WireGuard10.66.0.1 · UDP 51820UDP 51820 열림방화벽 / NAT↑ WireGuard UDPDB 호스트가 연결 시작3306 인바운드차단됨, 필요 없음데이터베이스 호스트인바운드 포트 없음wg-quick@dumpcat10.66.0.2 · keepalive 25초10.66.0.2:3306MySQL / MariaDB10.66.0.2에서 수신 대기이 호스트는 포트를 열지 않음
데이터베이스 호스트가 터널을 엽니다DumpCat의 데이터베이스 트래픽은 이 터널 안으로 흐릅니다
데이터베이스 호스트에 필요한 것
표준 WireGuard, DumpCat으로 나가는 UDP 51820
데이터베이스
VPN 주소에서 수신 대기, DB 사용자는 10.66.0.1에서의 접속을 허용
설치
WireGuard 페이지에서 켜고, dumpcat.conf를 복사한 뒤 systemctl enable --now wg-quick@dumpcat
적합한 경우
이미 WireGuard를 쓰는 팀, 또는 데이터베이스 네트워크 전체로 가는 게이트웨이

연결은 데이터베이스 호스트가 열고, 데이터는 그 연결 안에서 양방향으로 흐릅니다. 물리 백업(XtraBackup / MariaBackup)은 --allow-physical로 시작한 에이전트를 통해 동작하며, WireGuard를 통할 때는 여전히 데이터베이스 호스트에 DumpCat을 설치해야 합니다.

운영

원래라면 직접 스크립트로 짜야 했을 것들

모두 DumpCat에 기본으로 들어 있고, 웹 UI에서 켜고 조정합니다.

업로드 전에 암호화
age(ChaCha20-Poly1305 + scrypt)가 사용자의 서버에서 실행되므로 클라우드 제공자는 데이터를 읽을 수 없습니다.
무결성 검사
모든 파일에 SHA-256. 검증(Verify)은 파일을 다시 읽어 복호화하고 압축을 푼 뒤 Dump completed 줄이 있는지 확인합니다.
GFS 보존 정책
백업 N개, N일, 그리고 일·주·월마다 마지막 백업 하나씩 보관합니다. 증분 체인은 해당 전체 백업과 함께만 삭제됩니다.
신중한 복원
데이터베이스를 DROP하기 전에 모든 파일을 시험 복호화합니다. 새 이름으로, 또는 다른 서버와 다른 버전으로 복원할 수 있습니다(MySQL 8 ↔ MariaDB, PostgreSQL 15 → 16).
계정과 역할
admin, operator, viewer. TOTP 2단계 인증, API 토큰, 감사 로그, 로그인이 반복해서 실패하면 계정 잠금.
알림
이메일, Telegram, Slack, Discord, HMAC 서명 웹훅으로 실패 시 또는 성공 시 알려 줍니다.
방화벽 뒤의 데이터베이스
데이터베이스 호스트의 에이전트가 HTTPS로 DumpCat에 연결하거나, 호스트가 내장 WireGuard에 참여합니다. 데이터베이스 쪽에 포트를 열 필요가 없습니다.
자체 업데이트
dumpcat update는 SHA-256을 확인하고, 설정을 백업하고, 실행 중인 백업이 끝나기를 기다렸다가, 실패하면 롤백합니다.

AI 친화적

AI 친화적: 백업 감시는 AI 어시스턴트에게 맡기세요

DumpCat에는 MCP 서버와 Markdown으로 작성된 API 레퍼런스가 들어 있습니다. Claude Code, Claude Desktop 등의 AI 에이전트가 API 토큰으로 연결해 어떤 백업이 실패했는지 묻고, 로그를 읽고, 원인을 설명할 수 있습니다. 전체 권한 토큰이 있으면 백업, 검증, 복원 훈련까지 실행할 수 있습니다.

내장 MCP 서버
엔드포인트 /api/mcp는 DumpCat의 일부라 따로 설치할 것이 없습니다. 개요, 경고, 작업, 백업, 로그, 복원, 복원 훈련, 특정 시점 복구 미리 보기를 위한 도구를 제공합니다. stdio로 로컬 서버를 실행하는 클라이언트는 dumpcat mcp를 사용합니다.
기본값은 안전하게
새 토큰은 조회만 할 수 있습니다. 복원, 삭제, 자격 증명, 설정은 절대 MCP를 거치지 않으며, 응답에서는 비밀번호, 키, 토큰이 빠집니다. 어시스턴트가 시작한 작업은 모두 감사 로그에 기록됩니다.
Markdown으로 된 API 레퍼런스
/api/docs.md는 서버가 직접 작성합니다. 인증, 규칙, curl 예제, 그리고 모든 라우트와 각각에 필요한 역할 및 토큰이 담겨 있습니다. AI 채팅에 붙여 넣거나, 에이전트가 읽고 REST API를 호출하게 하세요.
1분이면 설정 완료
DumpCat의 API & MCP 페이지에서 토큰을 만들고, Claude Code 명령어와 Claude Desktop 및 기타 클라이언트용 설정을 받은 뒤, Test 버튼으로 연결을 확인할 수 있습니다.

Claude Code 연결하기

bash
claude mcp add --transport http dumpcat \
  https://backup.example.com/api/mcp \
  --header "Authorization: Bearer mv_…"

그다음 평소 말투로 물어보세요: “어젯밤 실패한 백업은 무엇이고, 왜 실패했나요?”, “shop-nightly에 24시간 이내의 백업이 있나요?”, “orders 테이블을 어제 14:37로 복구할 수 있나요?”

비교

다른 도구와 나란히 놓고 본 DumpCat

도구를 선택하면 모든 기능을 나란히 비교해 볼 수 있습니다. 다른 제품에 대한 내용은 전체 비교 페이지에 출처와 날짜를 밝혀 두었습니다.

DumpCatSQLBackupAndFTP
Every feature freeYesNo paid tierPartlyFree: 2 DBs, basic features
Runs on your own serversYesOne binaryYesWindows only
LinuxYesamd64, arm64PartlyRemote full backups only
Hot physical backupsYesXtraBackup, MariaBackupNoNo physical backups
Point-in-time recoveryYesTo the second or a GTIDPartlyChosen-time restore undocumented
EncryptionYesage, before uploadPaid planProfessional edition
Data skips the vendorYesServer to your storageYes
Automatic backup checkYesEvery run, plus drillsPartlyVia scheduled restore jobs

오픈 소스

무료 오픈 소스, 데이터는 오롯이 당신의 것

DumpCat은 Apache-2.0 라이선스로 배포됩니다. 계정도, 라이선스 키도, 기능을 묶어 둔 유료 에디션도 없습니다. 이 페이지에 나온 모든 기능이 내려받는 빌드에 들어 있습니다.

Apache-2.0 라이선스
집에서든 회사에서든 사용하고, 수정하고, 재배포할 수 있습니다. 전문은 LICENSE에 있습니다.
텔레메트리 없음
DumpCat은 사용 데이터를 어디에도 보내지 않습니다. 스스로 하는 유일한 호출은 새 버전을 알리기 위해 하루 한 번 latest.json을 읽는 것이며, 설정(Settings)에서 끌 수 있습니다.
중개자 없음
백업, 데이터베이스 비밀번호, 암호화 키는 사용자의 서버에서 사용자가 고른 스토리지로만 이동합니다.
서명된 릴리스
모든 업데이트는 ed25519로 서명되며, 설치 전에 SHA-256으로 검증됩니다. 직접 빌드하려면 Go만 있으면 됩니다.

소스에서 빌드하기

bash
git clone https://github.com/theweakestharrison/DumpCat.git
cd DumpCat
go build -o dumpcat ./cmd/dumpcat

버그 리포트, 풀 리퀘스트, 번역 모두 환영합니다. CONTRIBUTING.md를 참고하세요. 보안 문제는 SECURITY.md에 안내된 대로 비공개로 제보해 주세요.

다운로드

최신 릴리스