doris快照备份和恢复
环境:
OS:Centos 7
doris:4.0.8
说明:
删除快照需要在minio端进行删除,doris侧没有delete和drop的命令
######################################################备份######################################
1.部署minio
通过web界面创建
http://192.168.12.87:9001/browser
创建备份桶:doris-backup-bucket

2.创建备份仓库
/opt/mysql5744/bin/mysql -uroot -P9030 -h 192.168.1.134 -pmysql
CREATE REPOSITORY doris_minio_backup
WITH S3
ON LOCATION "s3://doris-backup-bucket/snapshots"
PROPERTIES (
"s3.endpoint" = "http://192.168.12.87:9000",
"s3.access_key" = "admin",
"s3.secret_key" = "admin@123",
"s3.region" = "us-east-1",
"s3.use_path_style" = "true"
);
参数说明:
"s3.region" = "us-east-1" ##MinIO 本身不校验 region,随便填一个字符串就行,Doris 的 S3 协议参数必填,不能删掉
"s3.use_path_style" = "true" ##自建 MinIO 必加
mysql> CREATE REPOSITORY doris_minio_backup
-> WITH S3
-> ON LOCATION "s3://doris-backup-bucket/snapshots"
-> PROPERTIES (
-> "s3.endpoint" = "http://192.168.12.87:9000",
-> "s3.access_key" = "admin",
-> "s3.secret_key" = "admin@123",
-> "s3.region" = "us-east-1",
-> "s3.use_path_style" = "true"
-> );
Query OK, 0 rows affected (5.70 sec)
3.查看
mysql> SHOW REPOSITORIES;
+---------------+--------------------+---------------------+------------+------------------------------------+--------+------+--------+
| RepoId | RepoName | CreateTime | IsReadOnly | Location | Broker | Type | ErrMsg |
+---------------+--------------------+---------------------+------------+------------------------------------+--------+------+--------+
| 1792653460032 | doris_minio_backup | 2026-10-26 13:39:26 | false | s3://doris-backup-bucket/snapshots | - | S3 | NULL |
+---------------+--------------------+---------------------+------------+------------------------------------+--------+------+--------+
1 row in set (0.00 sec)
4.备份表
USE db_test;
BACKUP SNAPSHOT snap_tb_hxl_20261026
TO doris_minio_backup
ON (tb_hxl);
mysql> USE db_test;
mysql> BACKUP SNAPSHOT snap_tb_hxl_20261026
-> TO doris_minio_backup
-> ON (tb_hxl);
Query OK, 0 rows affected (0.35 sec)
5.查看备份进度
mysql> use db_test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW BACKUP;
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
| JobId | SnapshotName | DbName | State | BackupObjs | CreateTime | SnapshotFinishedTime | UploadFinishedTime | FinishedTime | UnfinishedTasks | Progress | TaskErrMsg | Status | Timeout |
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
| 1792653460033 | snap_tb_hxl_20261026 | db_test | FINISHED | [db_test.tb_hxl] | 2026-10-26 13:41:22 | 2026-10-26 13:41:28 | 2026-10-26 13:41:40 | 2026-10-26 13:41:46 | | | | [OK] | 86400 |
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
1 row in set (0.00 sec)
6.登录minio查看备份文件
web界面登录
http://192.168.12.87:9001/browser/doris-backup-bucket

######################################恢复####################################
1.模拟删除刚才备份的表
/opt/mysql5744/bin/mysql -uroot -P9030 -h 192.168.1.134 -pmysql
mysql> use db_test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-------------------+
| Tables_in_db_test |
+-------------------+
| tb_hxl |
| tb_test |
| tb_test01 |
+-------------------+
3 rows in set (0.00 sec)
mysql> drop table tb_hxl;
Query OK, 0 rows affected (0.06 sec)
2.重备份中进行恢复
-- 查看备份任务进度
mysql> use db_test;
mysql> show backup;
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
| JobId | SnapshotName | DbName | State | BackupObjs | CreateTime | SnapshotFinishedTime | UploadFinishedTime | FinishedTime | UnfinishedTasks | Progress | TaskErrMsg | Status | Timeout |
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
| 1792653460033 | snap_tb_hxl_20261026 | db_test | FINISHED | [db_test.tb_hxl] | 2026-10-26 13:41:22 | 2026-10-26 13:41:28 | 2026-10-26 13:41:40 | 2026-10-26 13:41:46 | | | | [OK] | 86400 |
+---------------+----------------------+---------+----------+------------------+---------------------+----------------------+---------------------+---------------------+-----------------+----------+------------+--------+---------+
1 row in set (0.00 sec)
-- 查看MinIO仓库里面所有快照列表(连通MinIO拉取)
mysql> use db_test;
mysql> show snapshot on doris_minio_backup;
+----------------------+---------------------+--------+
| Snapshot | Timestamp | Status |
+----------------------+---------------------+--------+
| snap_tb_hxl_20261026 | 2026-10-26-13-41-22 | OK |
+----------------------+---------------------+--------+
1 row in set (0.60 sec)
-- 恢复快照
表结构已经存在或是表不存在都可以进行恢复
USE db_test;
RESTORE SNAPSHOT snap_tb_hxl_20261026
FROM doris_minio_backup
ON (tb_hxl)
PROPERTIES (
"backup_timestamp"="2026-10-26-13-41-22",
"replication_num"="3"
);
mysql> RESTORE SNAPSHOT snap_tb_hxl_20261026
-> FROM doris_minio_backup
-> ON (tb_hxl)
-> PROPERTIES (
-> "backup_timestamp"="2026-10-26-13-41-22",
-> "replication_num"="3"
-> );
Query OK, 0 rows affected (0.79 sec)
查看恢复进度
mysql> show restore;
查看表恢复情况
mysql> show tables;
+-------------------+
| Tables_in_db_test |
+-------------------+
| tb_hxl |
| tb_test |
| tb_test01 |
+-------------------+
3 rows in set (0.00 sec)
mysql> select count(1) from tb_hxl;
+----------+
| count(1) |
+----------+
| 1000000 |
+----------+
1 row in set (3.02 sec)
#######################################其他备份方式###########################
1.备份整个库
USE db_test;
BACKUP SNAPSHOT db_test_full_20261026
TO doris_minio_backup;
mysql> BACKUP SNAPSHOT db_test_full_20261026
-> TO doris_minio_backup;
Query OK, 0 rows affected (0.28 sec)
2.备份多个表
USE db_test;
BACKUP SNAPSHOT multi_table_20261026
TO doris_minio_backup
ON (tb_hxl, tb_test);
浙公网安备 33010602011771号