Skip to content

Commit 7d82245

Browse files
hantmacsoyeric128
authored andcommitted
feat: add db-arhciver docs
1 parent 5dc89b5 commit 7d82245

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
---
2+
title: db-archiver
3+
---
4+
5+
import FunctionDescription from '@site/src/components/FunctionDescription';
6+
7+
<FunctionDescription description="Introduced: v1.1.70"/>
8+
9+
[db-archiver](https://github.com/databendcloud/db-archiver) 是一个 Databend 自研的开箱即用的归档工具,用于将数据库或者其他数据源的数据归档到 Databend。
10+
11+
## 支持的数据源
12+
13+
| 数据源 | 支持状态 |
14+
| :--------- | :------: |
15+
| MySQL | 支持 |
16+
| PostgreSQL | 支持 |
17+
| TiDB | 支持 |
18+
| Oracle | 支持 |
19+
| CSV | 即将支持 |
20+
| NDJSON | 即将支持 |
21+
22+
## 安装
23+
24+
```bash
25+
go install github.com/databend/db-archiver@latest
26+
```
27+
28+
或者从 [release](https://github.com/databendcloud/db-archiver/releases) 下载对应的可执行文件。
29+
30+
## 使用方法
31+
32+
`config/conf.json` 中配置数据源信息和 Databend 连接:
33+
34+
```json
35+
{
36+
"sourceHost": "127.0.0.1",
37+
"sourcePort": 3306,
38+
"sourceUser": "root",
39+
"sourcePass": "123456",
40+
"sourceDB": "mydb",
41+
"sourceTable": "my_table",
42+
"sourceDbTables": ["mydb.*@table.*"],
43+
"sourceQuery": "select * from mydb.my_table",
44+
"sourceWhereCondition": "id < 100",
45+
"sourceSplitKey": "id",
46+
"databendDSN": "https://cloudapp:[email protected]:443",
47+
"databendTable": "testSync.my_table",
48+
"batchSize": 2,
49+
"batchMaxInterval": 30,
50+
"workers": 1,
51+
"copyPurge": false,
52+
"copyForce": false,
53+
"disableVariantCheck": false,
54+
"userStage": "~",
55+
"deleteAfterSync": false
56+
}
57+
```
58+
59+
运行工具并开始同步:
60+
61+
```bash
62+
./db-archiver -f config/conf.json
63+
```
64+
65+
日志输出:
66+
67+
```shell
68+
INFO[0000] Starting worker
69+
2024/06/25 11:35:37 ingest 2 rows (0.565646 rows/s), 64 bytes (18.100678 bytes/s)
70+
2024/06/25 11:35:38 ingest 1 rows (0.556652 rows/s), 33 bytes (17.812853 bytes/s)
71+
2024/06/25 11:35:38 ingest 2 rows (0.551906 rows/s), 65 bytes (17.660995 bytes/s)
72+
2024/06/25 11:35:38 ingest 2 rows (0.531644 rows/s), 64 bytes (17.012600 bytes/s)
73+
2024/06/25 11:35:38 ingest 2 rows (0.531768 rows/s), 64 bytes (17.016584 bytes/s)
74+
```
75+
76+
## 参数参考
77+
78+
| 参数 | 描述 | 默认值 | 示例 | 必填 |
79+
| -------------------- | ------------------------------ | ------ | ----------------------------- | ---- |
80+
| sourceHost | 源主机 | | ||
81+
| sourcePort | 源端口 | 3306 | 3306 ||
82+
| sourceUser | 源用户 | | ||
83+
| sourcePass | 源密码 | | ||
84+
| sourceDB | 源数据库 | | ||
85+
| sourceTable | 源表 | | ||
86+
| sourceDbTables | 源数据库表(支持正则表达式匹配) | [] | [db.*@table.*,mydb.*.table.*] ||
87+
| sourceQuery | 源查询 | | ||
88+
| sourceWhereCondition | 源条件 | | ||
89+
| sourceSplitKey | 源分割键 || "id" ||
90+
| sourceSplitTimeKey | 源分割时间键 || "t1" ||
91+
| timeSplitUnit | 时间分割单位 | "分钟" | "天" ||
92+
| databendDSN | Databend 数据源名称 || "http://localhost:8000" ||
93+
| databendTable | Databend 表 || "db1.tbl" ||
94+
| batchSize | 批量大小 | 1000 | 1000 ||
95+
| copyPurge | 复制清除 | false | false ||
96+
| copyForce | 强制复制 | false | false ||
97+
| DisableVariantCheck | 禁用变体检查 | false | false ||
98+
| userStage | 用户外部 stage | ~ | ~ ||
99+
| deleteAfterSync | 同步成功后删除源数据 | false | false ||
100+
101+
注意:
102+
103+
1. 为了减少服务器负载,我们设置了 `sourceSplitKey`,它是源表的主键。工具将根据 `sourceSplitKey` 分割数据,并并行同步数据到 Databend。
104+
`sourceSplitTimeKey` 用于按时间列分割数据。`sourceSplitTimeKey``sourceSplitKey` 至少必须设置一个。
105+
2. `sourceDbTables` 用于从多个表同步数据。格式为 `db.*@table.*``db.table.*``.*` 是正则表达式模式。`db.*@table.*` 表示匹配数据库中所有匹配正则表达式 `db.*` 的表和匹配正则表达式 `table.*` 的表。
106+
3. `sourceDbTables` 的优先级高于 `sourceTable``sourceDB`。如果设置了 `sourceDbTables`,则会忽略 `sourceTable`
107+
4. `database``table` 都支持正则表达式模式。
108+
109+
## 两种模式
110+
111+
### 根据 `sourceSplitKey` 同步数据
112+
113+
如果您的源表有一个主键,您可以设置 `sourceSplitKey` 来并行同步数据。工具将根据 `sourceSplitKey` 分割数据,并并行同步数据到 Databend。
114+
这是性能最高的模式。
115+
`conf.json` 的示例:
116+
117+
```json
118+
{
119+
"sourceHost": "0.0.0.0",
120+
"sourcePort": 3306,
121+
"sourceUser": "root",
122+
"sourcePass": "123456",
123+
"sourceDB": "mydb",
124+
"sourceTable": "my_table",
125+
"sourceQuery": "select * from mydb.my_table",
126+
"sourceWhereCondition": "id < 100",
127+
"sourceSplitKey": "id",
128+
"databendDSN": "https://cloudapp:[email protected]:443",
129+
"databendTable": "testSync.my_table",
130+
"batchSize": 2,
131+
"batchMaxInterval": 30,
132+
"workers": 1,
133+
"copyPurge": false,
134+
"copyForce": false,
135+
"disableVariantCheck": false,
136+
"userStage": "~",
137+
"deleteAfterSync": false,
138+
"maxThread": 10
139+
}
140+
```
141+
142+
### 根据 `sourceSplitTimeKey` 同步数据
143+
144+
如果您的源表有一个时间列,您可以设置 `sourceSplitTimeKey` 来并行同步数据。工具将根据 `sourceSplitTimeKey` 分割数据,并并行同步数据到 Databend。
145+
`sourceSplitTimeKey` 必须与 `timeSplitUnit` 一起设置。`timeSplitUnit` 可以是 `minute``hour``day``timeSplitUnit` 用于按时间列分割数据。
146+
`conf.json` 的示例:
147+
148+
```json
149+
{
150+
"sourceHost": "127.0.0.1",
151+
"sourcePort": 3306,
152+
"sourceUser": "root",
153+
"sourcePass": "12345678",
154+
"sourceDB": "mydb",
155+
"sourceTable": "test_table1",
156+
"sourceQuery": "select * from mydb.test_table1",
157+
"sourceWhereCondition": "t1 >= '2024-06-01' and t1 < '2024-07-01'",
158+
"sourceSplitKey": "",
159+
"sourceSplitTimeKey": "t1",
160+
"timeSplitUnit": "hour",
161+
"databendDSN": "https://cloudapp:password@tn3ftqihs--medium-p8at.gw.aws-us-east-2.default.databend.com:443",
162+
"databendTable": "default.test_table1",
163+
"batchSize": 2,
164+
```

0 commit comments

Comments
 (0)