influxdb-cluster
influxdb-cluster copied to clipboard
节点不同步问题
1、当初始化集群加入data-node节点后,数据库自带的_internal库并非同步的,是正常的吗? 2、当删除某个节点的库或表后,其他节点的表和库有时并未删除,导致节点不同步? 3、删除操作必须使用接口操作吗?能使用控制台或可视化客户端输入sql语句进行删除? 4、当节点状态不同步后,如何进行再同步?
1、当初始化集群加入data-node节点后,数据库自带的_internal库并非同步的,是正常的吗?
_internal 是自带的库,默认的 replica factor 备份因子是 1,所以新加入的 data node 是不会同步的,也不影响
2、当删除某个节点的库或表后,其他节点的表和库有时并未删除,导致节点不同步?
过程是怎么操作的,正常过程不会出现这种情况
3、删除操作必须使用接口操作吗?能使用控制台或可视化客户端输入sql语句进行删除?
HTTP 接口、客户端、命令行等都可以,底层都是走的 HTTP 接口,所以答案是“都能”
4、当节点状态不同步后,如何进行再同步?
当有 data node 有宕机出现,有 hinted handoff 机制保证当该 data node 恢复后重新写入数据。因为其它原因导致的不同步,例目前还不支持手动同步,计划下两个版本支持这个功能
自带库的复制因子是1,其他非自带库的复制因子是多少呢,如何修改复制因子数?
其它库是自己创建时指定,如下 REPLICATION
所示,修改用 ALTER RETENTION POLICY
-- Create a database called bar with a new DEFAULT retention policy and specify the duration, replication, shard group duration, and name of that retention policy
CREATE DATABASE "bar" WITH DURATION 1d REPLICATION 1 SHARD DURATION 30m NAME "myrp"
-- Create a retention policy.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2
-- Create a retention policy and set it as the DEFAULT.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2 DEFAULT
-- Create a retention policy and specify the shard group duration.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2 SHARD DURATION 30m
-- Change duration and replication factor.
-- REPLICATION (replication factor) not valid for OSS instances.
ALTER RETENTION POLICY "policy1" ON "somedb" DURATION 1h REPLICATION 4
InfluxQL 语法参考:https://docs.influxdata.com/influxdb/v1.8/query_language/spec/
我创建库时没指定策略和复制因子,默认的策略和复制因子是多少?
我创建库时没指定策略和复制因子,默认的策略和复制因子是多少?
在 InfluxDB Cluster,默认策略下
- 如果 data node 个数大于等于 3,则 复制因子 为 3
- 如果 data node 个数小于等于 1,则 复制因子 为 1
- 如果 data node 个数为 2,则 复制因子 为 2
好的,谢谢
集群部署了两个data节点,当某个节点宕机后,另一个节点还在写入数据,后来重启了故障节点,但是数据不再同步了,后续数据也不再同步了,这种情况发生了好多次,是什么原因呢?有没有办法实现再次同步?
有错误日志吗?两个 data 节点,写数据时,地址是指定了正常节点还是故障节点?还是说有负责均衡器?
只目前还不支持手动同步,计划下两个版本支持这个功能
错误日志中会有404,500等错误,地址是指向正常节点,但是数据写入量比较大,是同步线程需要排队等候吗
能否贴详细错误日志,例如截图?
因为是测试环境,异常后进行了重新部署, 日志没有了,下次场景还原后再反馈。
现在发现一个问题,修改influxdb.conf文件的[hinted-handoff] max-size = "10g"属性,只要放开这个属性就启动不了,会报错
parse config: toml: cannot load TOML value of type string into a Go integer
max-size 是一个整型配置,不是字符串,所以会报错。这一点特性和官方 influxdb enterprise 表现一模一样
文件默认的就是这个字符串,我只是放开了注释并未修改,其他容量的写法也是这样,例如:cache-max-memory-size = "2g",max-size如果写数字,它的单位是多少?
文件默认的就是这个字符串,我只是放开了注释并未修改,其他容量的写法也是这样,例如:cache-max-memory-size = "2g",max-size如果写数字,它的单位是多少?
那就是是配置文件写错了的问题,单位是字节byte,感谢报告😂 默认值是10737418240,代表10g
官方 influxdb enterprise 直接写 max-size = "10g"
也会报同样的错误,所以我在想,是和官方 influxdb enterprise 保持同样的行为报错,还是可以优化一下,支持像 cache-max-memory-size = "2g"
这样的写法😂


这个hinted handoff配置不常用,而且容易发现,注释中描述也采用了bytes,个人认为和官方一样暂时不修正即可
influxdb cluster v1.8.10-c1.1.0 正式发布,对 hinted handoff 进行了优化,确保重写并同步数据