Lý Thành
09/28/2026, 3:25 AMRocky
09/28/2026, 3:25 AMLý Thành
09/28/2026, 3:26 AMLý Thành
09/28/2026, 3:26 AMRocky
09/28/2026, 3:26 AMsql
CREATE REPOSITORY `test_repo`
WITH BROKER "broker_name" -- or directly using S3/HDFS properties
PROPERTIES (
"path" = "<s3://my-bucket/sr_backups>",
"region" = "us-east-1"
);
Backup Data
You can back up a whole database, specific tables, or partitions:
sql
-- Back up an entire database (v3.4+)
BACKUP DATABASE my_db SNAPSHOT my_snapshot TO test_repo;
-- Back up specific tables
BACKUP DATABASE my_db SNAPSHOT table_snapshot TO test_repo
ON (TABLE table1, TABLE table2);
Note: Shared-data (cloud-native) clusters do not support these SQL-based `BACKUP`/`RESTORE` commands.
Restore Data
To restore, you must specify the snapshot name and the timestamp (found via SHOW BACKUP in the source cluster):
sql
RESTORE SNAPSHOT my_snapshot
FROM test_repo
ON (TABLE table1)
PROPERTIES ("backup_timestamp" = "2023-10-01-10-00-00");
──────────
2. Backing Up and Restoring FE Metadata
FE metadata contains the cluster’s "brain" (schema definitions, user permissions, etc.).
Metadata Backup
1. Automatic: The FE leader automatically creates an "image" file of the metadata every 50,000 journal entries (by default) and distributes it to follower nodes.
2. Manual: You can force a new image file creation using:
sql
ALTER SYSTEM CREATE IMAGE;
3. Physical Backup: Periodically back up the entire meta directory (configured via meta_dir in fe.conf) from your FE nodes to a secure off-site location.
Metadata Restore (Recovery)
If the cluster is lost and you need to restore from a physical meta directory backup:
1. Copy the backed-up meta directory to the new FE node.
2. In the fe.conf, add: bdbje_reset_election_group = true.
3. Start the FE. It will start as a standalone Leader.
4. Once started, remove the bdbje_reset_election_group property from fe.conf and restart the FE to return to normal operation.
5. Re-add other FE and BE nodes to the "new" cluster using ALTER SYSTEM ADD.
Summary of Differences
Feature | Data Backup (BACKUP cmd) | Metadata Backup (meta dir)
Contents | Table data, partitions, UDFs | Schema, Users, Load jobs, Cluster state
Storage | Remote (S3/HDFS) | Local disk (then manually moved)
Granularity | Table/DB level | Full cluster level
Use Case | Data migration/Accidental deletion | Disaster recovery/Complete cluster failure
References
• administration/Meta_recovery.mdLý Thành
09/28/2026, 3:31 AMLý Thành
09/28/2026, 3:31 AMRocky
09/28/2026, 3:31 AMBACKUP/RESTORE)
Việc chuyển đổi rất đơn giản:
1. Dựng hệ thống lưu trữ mới (ví dụ: SeaweedFS).
2. Tạo một Repository mới trong StarRocks trỏ về địa chỉ mới:
sql
CREATE REPOSITORY `new_repo`
WITH BROKER "broker_name"
PROPERTIES (
"endpoint" = "<http://địa-chỉ-mới:9000|http://xn--a-ch-mi-f7a0959dpa7p:9000>",
"region" = "us-east-1",
"access_key" = "xxx",
"secret_key" = "xxx"
);
3. Thực hiện BACKUP mới vào repo này. Dữ liệu cũ trên MinIO bạn có thể dùng công cụ rclone để copy sang hệ thống mới nếu cần giữ lại các bản snapshot cũ.
Trường hợp bạn dùng Shared-data (Kiến trúc Cloud-native)
Nếu bạn đang chạy StarRocks theo mô hình shared-data và lưu toàn bộ dữ liệu chính trên MinIO:
1. Việc thay đổi endpoint lưu trữ chính yêu cầu cấu hình lại cluster.
2. Cách an toàn nhất là sử dụng lệnh BACKUP toàn bộ database sang một storage mới (ví dụ S3 hoặc SeaweedFS), sau đó dựng một cluster StarRocks mới trỏ vào storage đó và RESTORE lại.
3. Khuyến nghị hành động
* Không cần hoảng loạn: Bản MinIO hiện tại bạn đang dùng vẫn sẽ chạy bình thường, nó không tự dừng lại. Bạn có thời gian để lên kế hoạch chuyển đổi.
* Ưu tiên Bảo mật: Vì không còn bản vá (CVE fix), bạn nên cô lập cụm MinIO cũ khỏi internet và chỉ cho phép StarRocks truy cập nội bộ.
* Thử nghiệm SeaweedFS: Đây hiện là ứng cử viên sáng giá nhất để thay thế MinIO trong cộng đồng Big Data vì tính đơn giản và hiệu năng vượt trội.
Nếu bạn cần hướng dẫn chi tiết về cách cấu hình StarRocks với một storage cụ thể (như SeaweedFS), hãy cho mình biết nhé!Lý Thành
09/28/2026, 3:49 AMRocky
09/28/2026, 3:49 AMLý Thành
09/28/2026, 6:50 AMRocky
09/28/2026, 6:50 AMLIST (liệt kê file). Điều này làm chậm đáng kể các truy vấn của StarRocks.
* Tốc độ đọc: StarRocks và các engine như Spark/Presto đọc dữ liệu hiệu quả nhất khi có thể thực hiện đọc tuần tự (sequential read) trên các khối dữ liệu lớn.
* Ngưỡng tối thiểu: Tránh để file nhỏ hơn 8MB nếu có thể.
2. Đối với SeaweedFS (Distributed File System)
SeaweedFS được thiết kế với kiến trúc "Haystack" (giống Facebook), gộp nhiều file nhỏ vào một file "Volume" lớn (thường là 30GB) trên đĩa cứng.
* Kích thước tối ưu: 100MB đến 1GB.
* Tại sao:
* Khả năng chịu đựng file nhỏ: Khác với MinIO, SeaweedFS xử lý file cực nhỏ (vài KB) rất tốt mà không làm nghẽn metadata.
* Cơ chế Chunking: SeaweedFS tự động chia nhỏ các file lớn thành các "chunks" (mặc định khoảng 4MB-8MB). Do đó, bạn không cần quá lo lắng về việc file quá lớn, nhưng để StarRocks xử lý song song tốt nhất, file nên nằm trong khoảng vài trăm MB.
* Điểm mạnh: Bạn có thể lưu các file nhỏ (như logs hoặc các segment nhỏ của StarRocks) mà không sợ làm sập hệ thống lưu trữ.
──────────
3. Áp dụng cụ thể trong StarRocks
Khi bạn cấu hình StarRocks để ghi dữ liệu ra (Export, Backup, hoặc dùng Cloud-native Shared-data), hãy chú ý các thông số sau để đạt được kích thước file mong muốn:
1. Dùng Backup/Restore: StarRocks sẽ tự động tính toán kích thước snapshot, nhưng bạn nên đảm bảo các bảng của mình đã được Compaction tốt trước khi backup để tránh tạo ra quá nhiều file segment nhỏ.
2. Dùng Data Cache (cho Shared-data): Nếu bạn dùng StarRocks bản Shared-data (v3.0+), StarRocks sẽ tự quản lý việc chia nhỏ dữ liệu thành các segment (thường là 100MB - 256MB) trước khi đẩy lên S3/MinIO/SeaweedFS. Đây là ngưỡng rất đẹp cho cả hai hệ thống.
3. Dùng Routine Load / Stream Load:
* Tránh commit quá thường xuyên (ví dụ 1 giây/lần với lượng dữ liệu ít) vì nó sẽ tạo ra vô số file nhỏ trên Storage.
* Nên điều chỉnh desired_max_batch_interval (ví dụ lên 30-60s) hoặc max_batch_rows để gom dữ liệu lớn hơn trước khi tạo một segment mới.
Tổng kết lời khuyên:
* Nếu bạn muốn một con số "an toàn" cho cả 2 hệ thống: Hãy đặt mục tiêu 256MB mỗi file.
* Nếu dùng MinIO: Tuyệt đối tránh để tình trạng file "vụn" (dưới 1MB) với số lượng lớn.
* Nếu dùng SeaweedFS: Bạn có thể thoải mái hơn, nhưng kích thước file lớn (trên 100MB) vẫn giúp StarRocks quét dữ liệu nhanh hơn nhờ giảm bớt số lượng request HTTP.