自动从 InfluxDB 1.x 升级到 2.7
使用 influxd upgrade
命令将 InfluxDB 1.x 升级到 InfluxDB 2.7。 influxd upgrade
命令是 v2 influxd
服务 的一部分,并提供从 InfluxDB 1.x 到 InfluxDB 2.7 的就地升级。
要完成升级过程,请确保您正在使用包含 influxd upgrade
命令的 InfluxDB 2.7 influxd
二进制文件。
升级过程执行以下操作
- 读取现有的 InfluxDB 1.x 配置文件,并在
~/.influxdbv2/config.toml
或使用--v2-config-path
标志指定的自定义路径生成等效的 InfluxDB 2.7 配置文件。 - 将元数据和存储引擎路径升级到
~/.influxdbv2/meta
和~/.influxdbv2/engine
,分别(除非另有指定)。 - 将现有数据和预写日志 (WAL) 文件写入 InfluxDB 2.7 存储桶。
- 创建使用 InfluxQL 查询数据所需的 数据库和保留策略 (DBRP) 映射。
- 读取现有元数据,并将非管理员用户、密码和权限迁移到
~/influxdbv2/influxdb.bolt
中的 1.x 授权兼容存储。
在运行 influxdb upgrade
后启动 InfluxDB 2.7 时,InfluxDB 必须构建新的时间序列索引 (TSI)。根据存在的数据量,这可能需要一些时间。
开始之前的重要注意事项
在升级到 InfluxDB 2.7 之前,请考虑以下准则。某些或全部可能适用于您的特定安装和用例。以下各节包含我们关于解决升级过程中可能存在的差距的建议。请考虑在升级之前是否需要解决以下任何问题。
可用的操作系统、容器和平台支持
InfluxDB 2.7 目前可用于 macOS、Linux 和 Windows。
InfluxDB 2.7 需要 64 位操作系统。
连续查询
连续查询在 InfluxDB 2.7 中被 任务 取代。默认情况下,influxd upgrade
将所有连续查询写入 ~/continuous_queries.txt
。要将连续查询转换为 InfluxDB 任务,请参阅 将连续查询迁移到任务。
支持的协议
InfluxDB 2.7 不直接支持 InfluxDB 1.x 中支持 的备用写入协议(CollectD、Graphite、OpenTSDB、Prometheus、UDP)。使用 Telegraf 将这些协议转换为 Line Protocol。
Kapacitor
在以下情况下,您可以继续将 Kapacitor 与 InfluxDB OSS 2.7 一起使用
- Kapacitor 批处理风格的 TICKscripts 可以与 1.x 读取兼容 API 一起使用。现有的 Kapacitor 用户凭据应继续使用 1.x 兼容性 API。
- InfluxDB 2.7 没有订阅 API,并且不支持 Kapacitor 流任务。要继续使用流任务,请将数据直接写入 InfluxDB 和 Kapacitor。使用 Telegraf 及其 InfluxDB 输出插件 写入 Kapacitor,并使用 InfluxDB v2 输出插件 写入 InfluxDB v2。
Telegraf 配置示例
# Write to Kapacitor
[[outputs.influxdb]]
urls = ["http://localhost:9092"]
database = "example-db"
retention_policy = "example-rp"
# Write to InfluxDB 2.7
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "example-db"
retention_policy = "example-rp"
username = "v1-auth-username"
password = "v1-auth-password"
用户迁移
influxd upgrade
迁移现有的 1.x 用户及其权限,但以下用户除外
- 1.x 管理员用户
- 未被授予任何权限的 1.x 非管理员用户
如果将管理员用户用于可视化或 Chronograf 管理功能,请在升级之前创建一个新的只读用户
创建只读 1.x 用户
> CREATE USER <username> WITH PASSWORD '<password>'
> GRANT READ ON <database> TO "<username>"
InfluxDB 2.7 仅向在 InfluxDB 2.7 升级期间设置的主用户授予管理员权限。这为您提供了在设置 InfluxDB 2.7 时重新评估要向谁授予管理员权限的机会。
仪表盘
您可以通过 1.x /query
兼容性 API 继续将现有仪表盘和可视化工具与 InfluxDB 2.7 一起使用。升级过程创建 DBRP 映射,以确保现有用户可以使用适当的权限执行 InfluxQL 查询。
但是,如果您的仪表盘工具配置为使用具有管理员权限的用户,则您需要在升级之前创建一个具有适当数据库权限的新只读用户。此新的用户名和密码组合应用于数据源配置中,以继续提供对底层数据的只读访问权限。
确保您的仪表盘在升级前全部正常运行。
其他数据
1.x _internal
数据库不会随 influxd upgrade
命令一起迁移。要收集、存储和监控类似的 InfluxDB 内部指标,创建一个 InfluxDB 2.7 抓取器,以从 /metrics
端点抓取数据并将其存储在存储桶中。
默认安全
InfluxDB 2.7 需要身份验证,并且不支持 InfluxDB 1.x auth-enabled = false
配置选项。
在升级到 2.7 之前,在您的 InfluxDB 1.x 实例中启用身份验证 并测试您的凭据,以确保您的应用程序、代理和可视化工具可以连接到 InfluxDB。
如果您在 auth-enabled = false
的情况下升级,升级可能看起来已完成,但客户端对 InfluxDB 2.7 的请求可能会被静默忽略(您不会看到请求被拒绝的通知)。
内存索引选项
InfluxDB 2.7 不支持 内存 (inmem
) 索引。与 inmem
索引关联的以下 InfluxDB 1.x 配置选项在升级过程中被忽略
max-series-per-database
max-values-per-tag
交互式 shell
InfluxDB 2.7 influx
CLI 包含一个交互式 InfluxQL shell,用于执行 InfluxQL 查询。要启动 InfluxQL shell
- 下载并安装
influx
CLI。 - 设置您的
influx
CLI 身份验证凭据。 - 运行
influx v1 shell
命令。
有关更多信息,请参阅
要构建一个交互式 shell 来执行 Flux 查询,请 从源代码编译和构建命令行 Flux REPL。
执行升级
如果您已考虑 以上指南 并准备好继续,请按照以下步骤将 InfluxDB 1.x 升级到 InfluxDB 2.7。
下载 InfluxDB OSS 2.7。解压 InfluxDB 二进制文件并将它们放在您的
$PATH
中。停止正在运行的 InfluxDB 1.x 实例。在升级之前制作所有 1.x 数据的备份副本
cp -R .influxdb/ .influxdb_bak/
使用
influxd version
确保您正在从命令行运行 InfluxDB 2.7。influxd upgrade
命令仅在 InfluxDB 2.7 中可用。如果您的 1.x 配置文件位于 默认位置,请运行
influxd upgrade
升级
.deb
软件包从
.deb
软件包安装时,InfluxDB 1.x 和 2.x 在influxdb
用户下运行。如果您已从.deb
软件包安装了这两个版本,请以influxdb
用户身份运行升级命令sudo -u influxdb influxd upgrade
如果您的 1.x 配置文件不在默认位置,请运行
influxd upgrade --config-file <path to v1 config file>
要将升级后的 2.7 配置文件存储在自定义位置,请包含
--v2-config-path
标志influxd upgrade --v2-config-path <destination path for v2 config file>
按照提示设置新的 InfluxDB 2.7 实例。
Welcome to InfluxDB 2.7 upgrade! Please type your primary username: <your-username> Please type your password: Please type your password again: Please type your primary organization name: <your-org> Please type your primary bucket name: <your-bucket> Please type your retention period in hours. Or press ENTER for infinite: You have entered: Username: <your-username> Organization: <your-org> Bucket: <your-bucket> Retention Period: infinite Confirm? (y/n): y
升级的输出打印到标准输出。它也保存(用于故障排除和调试)在当前目录中,到一个名为 upgrade.log
的文件中,该文件位于运行 influxdb upgrade
的用户的 home 目录中。
升级后
验证 1.x 用户是否已迁移到 2.7
要验证 1.x 用户是否已成功迁移到 2.7,请运行 influx v1 auth list
。
为外部客户端添加授权
如果您的 InfluxDB 1.x 实例未启用身份验证,并且 influx v1 auth list
未返回任何用户,则连接到您的 1.x 实例的外部客户端将无法访问需要身份验证的 InfluxDB 2.7。
为了使这些外部客户端与 InfluxDB 2.7 一起工作
- 手动创建 1.x 兼容的授权.
- 更新客户端配置以使用与您的 1.x 兼容授权关联的用户名和密码。
此页面是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您对 InfluxDB 和本文档提供反馈和错误报告。要寻求支持,请使用以下资源
拥有年度合同或支持合同的客户 可以 联系 InfluxData 支持。