Mã nguồn mở · Backup & restore cho MySQL và MariaDB

Backup không khóa database. Khôi phục đến đúng giây bạn cần.

DumpCat là một file chạy duy nhất kèm giao diện web. Nó lên lịch backup, nén và mã hóa, đẩy bản sao lên S3, Google Drive, OneDrive hay SFTP, tự kiểm tra toàn vẹn và đưa dữ liệu về khi bạn cần. Chạy trên Linux lẫn Windows, không cần internet.

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

Khôi phục theo thời điểm

Mô phỏng

Ai đó lỡ tay xóa bảng orders lúc 14:37:12. Kéo mốc thời gian để chọn điểm khôi phục: DumpCat tự lấy bản backup gốc gần nhất và các file binlog cần phát lại.

full · 02:00
DROP TABLE orders · 14:37:12
bây giờ
  • Full backup (mysqldump)
  • Binlog đã lưu, mỗi file tối đa 15 phút
  • Đoạn cần phát lại
  • Sự cố
Khôi phục đến
18/10/2026 14:37:11
Bản backup gốc
20261018-020000-fullmysqldump · nhất quán lúc 02:00:03
Phát lại binlog
mysql-bin.000123 → mysql-bin.00017351 file, kiểm tra từng file trước khi đụng vào dữ liệu
Trước sự cố: bảng orders còn nguyên

Cài đặt

Chạy được sau một phút

Một lệnh trên Linux, tải về và bấm đúp trên Windows. Bộ cài tạo service tự chạy cùng máy và cài luôn công cụ backup khớp với version database; giao diện web có sẵn trong một file duy nhất.

Trên server Linux, dán lệnh này rồi bấm Enter:

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

Lệnh tải bản mới nhất, kiểm tra checksum rồi cài vào /opt/dumpcat thành service systemd, kèm rclone, MySQL/MariaDB client, mariabackup hoặc XtraBackup đúng version, và mydumper nếu repo có. Tùy chọn đặt sau sh -s --: --port 9090, --listen 127.0.0.1, --tls-auto.

Sau khi cài

  1. Mở http://<ip-server>:6369Tạo tài khoản admin bằng mã thiết lập dùng một lần mà bộ cài in ra (xem lại: dumpcat setup-token).
  2. Thêm database serverTest connection để xem quyền còn thiếu và phương thức dùng được.
  3. Thêm nơi lưu trữNút Test thử ghi, đọc và xóa.
  4. Tạo backup jobChọn lịch, mã hóa, nơi lưu, retention rồi bấm Save & run now.

Cổng 6369 đọc là MEOW

Bấm 6-3-6-9 trên bàn phím điện thoại sẽ ra chữ MEOW. Đó là cổng mặc định của giao diện web.

Phương thức backup

Ba công cụ, chọn theo cỡ database

DumpCat điều khiển mysqldump, mydumper và XtraBackup / MariaBackup. Khi thêm server, nút Test connection cho biết version, datadir, dung lượng từng database và phương thức nào dùng được trên máy đó.

mysqldumplogicalmydumperlogical, song songXtraBackup / MariaBackupvật lý, nóng
Khóa database?Không với InnoDB, nhờ --single-transactionKhóa toàn cục vài mili giây để đồng bộ luồng, sau đó không khóaKhông khóa InnoDB; bước cuối giữ backup lock rất ngắn
Tốc độ backup1 luồng mỗi database, nhiều database chạy song songĐa luồng, chia bảng theo số dòngNhanh nhất: copy file đa luồng
Tốc độ restoreChậm nhấtNhanh: song song, tạo index sau khi nạpRất nhanh: copy file + prepare
IncrementalKhôngKhôngCó
Restore 1 database, đổi tênCóCóKhông, cả instance
Hợp vớiDatabase dưới 20–50 GBDatabase lớn cần restore từng DB100 GB đến vài TB, cần RTO thấp

Nơi lưu trữ

Một job, bản sao nằm ở nhiều nơi

Ghi ra ổ local rồi upload, hoặc stream thẳng lên cloud không cần ổ tạm. Mỗi nơi có thể giữ số bản khác nhau, ví dụ local giữ 3 bản còn S3 giữ 30 ngày.

  • Local / NFSRestore nhanh nhất, đặt khác ổ với datadir
  • S3AWS, Cloudflare R2, MinIO, Wasabi, DigitalOcean
  • Google DriveOAuth hoặc Service Account
  • OneDriveKể cả SharePoint
  • FTP / FTPSExplicit hoặc Implicit TLS
  • SFTPMật khẩu hoặc private key
  • WebDAVNextcloud và tương tự
  • Backblaze B2Cùng Azure Blob và Dropbox
  • rcloneHơn 70 backend còn lại

Định dạng chuẩn, không phụ thuộc DumpCat

<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

Mất máy chạy DumpCat? Cài bản mới, thêm lại nơi lưu, bấm Import backup catalog là thấy lại toàn bộ backup. Không có DumpCat vẫn restore được bằng age, zstd và mysql.

Kết nối

Database không mở port? Vẫn backup được

Khi server backup không kết nối thẳng được tới MySQL, vì firewall, NAT hay MySQL chỉ nghe trên 127.0.0.1, hãy để chính server database kết nối ra DumpCat. Có hai cách, cả hai đều không cần mở port nào trên server database. Backup, restore và khôi phục theo thời điểm chạy y như kết nối trực tiếp.

Agent HTTPS

DumpCatServer backupSao lưu & khôi phụcmysqldump · mydumper127.0.0.1:portCổng cho agentHTTPS · port webVào được qua HTTPSServer databaseKhông mở port vàoMySQL / MariaDBGiữ nguyên cấu hình127.0.0.1:3306dumpcat agentChỉ tới 127.0.0.1:3306Không mở gì trên máy nàyFirewall / NAT← HTTPS · do server database mở ra3306 chiều vàobị chặn, không cầnDumpCatServer backupSao lưu & khôi phụcmysqldump · mydumper127.0.0.1:portCổng cho agentHTTPS · port webVào được qua HTTPSFirewall / NAT↑ HTTPSdo server database mở ra3306 chiều vàobị chặn, không cầnServer databaseKhông mở port vàodumpcat agentChỉ tới 127.0.0.1:3306127.0.0.1:3306MySQL / MariaDBGiữ nguyên cấu hìnhKhông mở gì trên máy này
Server database mở tunnelDữ liệu của DumpCat đi ngược lại bên trong
Server database cần
Đi ra được DumpCat qua HTTPS
MySQL
Không đổi gì, kể cả khi chỉ nghe trên 127.0.0.1
Cài
sudo ./install.sh --agent --server … --key …
Hợp khi
Không muốn đụng tới mạng hay cấu hình MySQL

WireGuard tích hợp UDP · tắt mặc định

DumpCatServer backupSao lưu & khôi phụcmysqldump · mydumper127.0.0.1:portWireGuard tích hợp10.66.0.1 · UDP 51820Mở UDP 51820Server databaseKhông mở port vàoMySQL / MariaDBNghe trên 10.66.0.210.66.0.2:3306wg-quick@dumpcat10.66.0.2 · keepaliveKhông mở gì trên máy nàyFirewall / NAT← WireGuard UDP · server database mở ra3306 chiều vàobị chặn, không cầnDumpCatServer backupSao lưu & khôi phụcmysqldump · mydumper127.0.0.1:portWireGuard tích hợp10.66.0.1 · UDP 51820Mở UDP 51820Firewall / NAT↑ WireGuard UDPdo server database mở ra3306 chiều vàobị chặn, không cầnServer databaseKhông mở port vàowg-quick@dumpcat10.66.0.2 · keepalive10.66.0.2:3306MySQL / MariaDBNghe trên 10.66.0.2Không mở gì trên máy này
Server database mở tunnelDữ liệu của DumpCat đi ngược lại bên trong
Server database cần
WireGuard chuẩn, đi ra được DumpCat qua UDP 51820
MySQL
Nghe trên địa chỉ VPN, user cho phép từ 10.66.0.1
Cài
Bật trên trang WireGuard, chép dumpcat.conf, systemctl enable --now wg-quick@dumpcat
Hợp khi
Đội đã quen WireGuard, hoặc một gateway dẫn tới cả mạng database

Đường kết nối do server database mở ra; dữ liệu đi hai chiều bên trong nó. Backup vật lý (XtraBackup / MariaBackup) chạy được qua agent khi agent bật --allow-physical; qua WireGuard thì vẫn cần cài DumpCat ngay trên server database.

Vận hành

Những việc bạn khỏi phải tự viết script

Tất cả có sẵn trong DumpCat và được bật, chỉnh ngay trên giao diện web.

Mã hóa trước khi upload
age (ChaCha20-Poly1305 + scrypt) chạy trên server của bạn, nhà cung cấp cloud không đọc được dữ liệu.
Kiểm tra toàn vẹn
SHA-256 cho từng file. Verify đọc lại, giải mã, giải nén và tìm dòng Dump completed.
Retention kiểu GFS
Giữ N bản, N ngày, bản cuối mỗi ngày, tuần, tháng. Chuỗi incremental chỉ bị xóa cùng bản full gốc.
Restore cẩn thận
Thử giải mã mọi file trước khi DROP database. Restore sang tên mới, hoặc sang server và phiên bản khác (MySQL 8 ↔ MariaDB).
Tài khoản và phân quyền
admin, operator, viewer. 2FA bằng TOTP, API token, nhật ký thao tác, khóa sau nhiều lần đăng nhập sai.
Thông báo
Email, Telegram, Slack, Discord và Webhook ký HMAC, khi lỗi hoặc khi thành công.
Database sau firewall
Agent trên server database tự kết nối ra DumpCat qua HTTPS, hoặc dùng WireGuard tích hợp. Không cần mở port nào tới database.
Tự cập nhật
dumpcat update kiểm tra SHA-256, backup cấu hình, chờ backup đang chạy xong và tự rollback nếu lỗi.

So sánh

DumpCat đặt cạnh các công cụ khác

Chọn một công cụ để xem song song từng tính năng. Thông tin về các sản phẩm khác đều có nguồn dẫn và ngày kiểm tra, trên trang so sánh đầy đủ.

DumpCatSQLBackupAndFTP
Mọi tính năng miễn phíCóKhông có gói trả phíMột phầnFree: 2 DB, tính năng cơ bản
Chạy trên server của bạnCóMột file chạyCóChỉ Windows
LinuxCóamd64, arm64Một phầnChỉ backup full từ xa
Backup vật lý nóngCóXtraBackup, MariaBackupKhôngKhông có backup vật lý
Khôi phục theo thời điểmCóTới từng giây hoặc GTIDMột phầnChưa có tài liệu khôi phục theo giờ
Mã hóaCóage, trước khi uploadGói trả phíBản Professional
Dữ liệu không qua hãngCóTừ server tới storageCó
Tự kiểm tra bản backupCóMỗi lần chạy, kèm diễn tậpMột phầnQua job khôi phục theo lịch

Mã nguồn mở

Miễn phí, mã nguồn mở, dữ liệu vẫn là của bạn

DumpCat phát hành theo giấy phép Apache-2.0. Không cần tài khoản, không license key, không có bản trả phí khóa bớt tính năng: mọi thứ trên trang này đều nằm trong bản bạn tải về.

Giấy phép Apache-2.0
Dùng cho cá nhân hay doanh nghiệp, sửa và phân phối lại đều được. Toàn văn giấy phép nằm trong LICENSE.
Không telemetry
DumpCat không gửi dữ liệu sử dụng đi đâu cả. Việc duy nhất nó tự gọi ra ngoài là mỗi ngày đọc latest.json một lần để báo bản mới, và bạn tắt được trong Settings.
Không qua máy chủ trung gian
Backup, mật khẩu database và khóa mã hóa chỉ đi từ server của bạn tới nơi lưu trữ do bạn chọn.
Bản phát hành có ký
Mỗi bản cập nhật được ký ed25519 và kiểm tra SHA-256 trước khi cài. Muốn tự build thì chỉ cần Go.

Build từ mã nguồn

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

Báo lỗi, gửi pull request hay dịch tài liệu đều được chào đón, xem CONTRIBUTING.md. Lỗi bảo mật xin báo riêng theo SECURITY.md.

Tải về

Bản phát hành mới nhất