Upgrade
从 v0.4 开始,我们提供了一个内置的工具来帮助您将以前的 GreptimeDB 部署升级到最新版本。
如果不同版本之间有 Breaking Change,我们都建议使用此方法在不同版本的 GreptimeDB 之间进行迁移升级。
此工具可以将 v0.3.0 以上的版本升级到最新版本。
CLI
该工具在 greptime 二进制文件中。在开始之前,您需要准备目标版本的二进制文件。
greptime cli export --help
帮助文档如下:
greptime-cli-export
USAGE:
greptime cli export [OPTIONS] --addr <ADDR> --output-dir <OUTPUT_DIR> --target <TARGET>
OPTIONS:
--addr <ADDR> Server address to connect
--database <DATABASE> The name of the catalog to export. Default to "greptime-*""
[default: ]
-h, --help Print help information
-j, --export-jobs <EXPORT_JOBS> Parallelism of the export [default: 1]
--max-retry <MAX_RETRY> Max retry times for each job [default: 3]
--output-dir <OUTPUT_DIR> Directory to put the exported data. E.g.:
/tmp/greptimedb-export
-t, --target <TARGET> Things to export [possible values: create-table, table-data]
这里解释一些重要选项的含义:
-addr:Frontend 节点或者 Standalone 进程的 gRPC 地址。-output-dir:要放置导出数据的目录。需要是当前机器上的路径。导出的 SQL 文件将放在该目录中。-target:要导出的内容。create-table可以导出每个表的CREATE TABLE语句。table-data可以导出每个表的数据以及对应的COPY FROM语句。
对于完整的升级,您需要使用每个目标选项两次执行此工具。
从 0.7.x 升级
这一节将演示如何从 v0.7.x 升级到 v0.8.0。
在下面的文本中,我们假设您的数据库的 HTTP 端口为 127.0.0.1:4000。
导出 CREATE TABLE
greptime cli export --addr '127.0.0.1:4000' --output-dir /tmp/greptimedb-export --target create-table
如果成功,您将看到类似于以下内容的输出
2023-10-20T09:41:06.500390Z INFO cmd::cli::export: finished exporting greptime.public with 434 tables
2023-10-20T09:41:06.500482Z INFO cmd::cli::export: success 1/1 jobs
此时输出目录的结构如下
/tmp/greptimedb-export
└── greptime-public.sql
处理 Breaking Changes
注意
从版本 0.7.x 升级时存在已知的 Breaking Changes。您需要手动编辑导出的 SQL 文件(即 /tmp/greptimedb-export/greptime-public.sql)
删除 WITH 从句中的 regions 选项
修改前:
CREATE TABLE foo (
host string,
ts timestamp DEFAULT '2023-04-29 00:00:00+00:00',
TIME INDEX (ts),
PRIMARY KEY(host)
) ENGINE=mito
WITH( # 删除
regions=1
);
修改后:
CREATE TABLE foo (
host string,
ts timestamp DEFAULT '2023-04-29 00:00:00+00:00',
TIME INDEX (ts),
PRIMARY KEY(host)
) ENGINE=mito;
重写分区规则
修改前:
PARTITION BY RANGE COLUMNS (n) (
PARTITION r0 VALUES LESS THAN (1),
PARTITION r1 VALUES LESS THAN (10),
PARTITION r2 VALUES LESS THAN (100),
PARTITION r3 VALUES LESS THAN (MAXVALUE),
)
修改后:
PARTITION ON COLUMNS (n) (
n < 1,
n >= 1 AND n < 10,
n >= 10 AND n < 100,
n >= 100
)