influxDB2.1 重启失败修复

博客记录了一次InfluxDB 2.1版本在执行大规模查询后出现的问题及解决过程。主要表现为数据库服务资源占用过高导致宕机,重启时提示权限错误。通过修改服务配置文件中的用户权限,并调整启动超时时间,最终成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在influxDB2.1 中执行了一次超大规模的查询,导致数据库的服务占用资源飙升宕机,top下能看到influxd进程但是CPU和MEM的占用非常高并且服务不可用。

执行重启无效,提示启动超时,有进程且占用资源很高,查看日志是对原有数据目录无权限,

10月 10 16:34:11 node2 influxd-systemd-start.sh[43457]: ts=2022-10-10T08:34:11.721529Z lvl=info msg="Welcome to InfluxDB" log_id=0dSGKQYG000 version=2.1.1 commit=657e1839de build_date=2021-11-09T03:03:48Z
10月 10 16:34:11 node2 influxd-systemd-start.sh[43457]: ts=2022-10-10T08:34:11.723423Z lvl=error msg="Failed opening bolt" log_id=0dSGKQYG000 error="unable to open boltdb: open /home/influxdata2/influxd.bolt: permission denied"
10月 10 16:34:11 node2 influxd-systemd-start.sh[43457]: Error: unable to open boltdb: open /home/influxdata2/influxd.bolt: permission denied

遂加权限

解决办法

vim /usr/lib/systemd/system/influxdb.service
# /usr/lib/systemd/system/influxdb.service
# If you modify this, please also make sure to edit init.sh

[Unit]
Description=InfluxDB is an open-source, distributed, time series database
Documentation=https://docs.influxdata.com/influxdb/
After=network-online.target

[Service]
User=root
Group=root
LimitNOFILE=65536
EnvironmentFile=-/etc/default/influxdb
ExecStart=/usr/bin/influxd -config /etc/influxdb/influxdb.conf ${INFLUXD_OPTS}
KillMode=control-group
Restart=on-failure
TimeoutStartSec=45m

[Install]
WantedBy=multi-user.target
Alias=influxd.service

# /etc/systemd/system/influxdb.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/influxd -config /dashboard/influxdb.conf ${INFLUXD_OPTS}

将USER和Group修改为root 再次启动

[root@node2 ~]# sudo service influxdb start

依然失败,尝试增加等待时间

增加参数

[Service]
TimeoutStartSec=45m

执行命令

[root@node2 ~]# systemctl enable influxdb
[root@node2 ~]# systemctl start influxdb

漫长的等待之后 成功启动

参数设置参考了1.*版本的配置文件引用[07 部署Indluxdb-telegraf_MappleZF的博客-优快云博客]

【其他知识】

influxDB 2.1 的配置文件路径

/etc/influxdb/config.toml

查看日志命令

journalctl -u influxdb -f

### InfluxDB插入数据失败的原因及解决方案 在使用InfluxDB时,如果插入数据失败,可能是由多种原因引起的。以下是可能导致插入失败的常见原因及其对应的解决方案。 #### 1. 数据类型不匹配 InfluxDB对字段(fields)的数据类型有严格的限制。如果尝试写入与之前定义的数据类型不同的值,例如将字符串写入一个原本接收数字的字段,InfluxDB会拒绝该数据[^2]。 - **解决方案**:确保所有写入的数据类型与现有字段的定义一致。可以通过查询数据库中的schema来确认字段类型,并根据需要调整输入数据的格式。 #### 2. 时间戳格式错误 时间戳是InfluxDB中数据点的关键部分。如果时间戳格式不符合预期,例如未指定正确的精度(如`ns`、`ms`等),数据可能无法正确插入[^4]。 - **解决方案**:确保写入数据的时间戳格式与请求中指定的精度相匹配。例如,如果使用的是纳秒级时间戳,则需要在写入请求中添加`-precision=ns`参数。 #### 3. 数据库或Retention Policy不存在 在写入数据时,如果目标数据库或保留策略(RetentionPolicy)不存在,写入操作将失败。 - **解决方案**:在写入数据之前,确保目标数据库和保留策略已创建。可以通过以下命令检查和创建数据库: ```bash # 创建数据库 influx -execute 'CREATE DATABASE your_database_name' # 检查数据库是否存在 influx -execute 'SHOW DATABASES' ``` #### 4. 写入权限不足 如果客户端没有足够的权限向目标数据库写入数据,操作将被拒绝[^3]。 - **解决方案**:确保用于写入数据的用户具有适当的权限。可以使用以下命令为用户授予权限: ```bash # 授予用户写入权限 influx -execute 'GRANT WRITE ON your_database_name TO your_user_name' ``` #### 5. 数据格式不正确 InfluxDB要求写入的数据遵循特定的行协议(Line Protocol)。如果数据格式不符合要求,例如缺少measurement、tags或fields,写入将失败。 - **解决方案**:验证写入数据的格式是否符合行协议。以下是一个符合行协议的示例: ```plaintext Number,fqname=tag1.tag2.tag3,id=d2c52849-f1a2-5d18-a2a4-3d36a4687083 value=79.4 1688342400000000000 ``` #### 6. 网络问题或服务不可用 网络连接问题或InfluxDB服务不可用也可能导致写入失败。 - **解决方案**:检查网络连接状态和服务运行状态。可以通过以下命令测试InfluxDB服务是否正常: ```bash curl -G http://localhost:8086/ping ``` 如果服务不可用,请检查服务器日志以诊断问题。 --- ### 示例代码 以下是一个完整的写入数据的示例,包含必要的参数和格式: ```bash # 使用curl命令写入数据 curl -i -XPOST "http://localhost:8086/write?db=your_database_name&precision=ns" --data-binary "Number,fqname=tag1.tag2.tag3,id=d2c52849-f1a2-5d18-a2a4-3d36a4687083 value=79.4 1688342400000000000" ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH_CS

随缘吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值