go语言版本:1.8.3 linux/amd64
InfluxDB版本:1.1.0
influxdb默认配置:
meta默认配置:
meta数据存放目录,默认值:/var/lib/influxdb/meta
meta数据文件默认路径:/var/lib/influxdb/meta/meta.db
用于控制默认存储策略,数据库创建时,会自动生成autogen的存储策略,默认值:true
是否开启meta日志,默认值:true
源码路径: github.com/influxdata/influxdb/services/meta/client.go
meta文件dump
snapshot可以通过以下两种方式触发:
1、当执行 Client.Open 函数时会进行snapshot操作;
2、执行meta文件更新时通过commit函数进行snapshot操作;
在InfluxDB中程序中,通过 NewServer 函数创建MetaClient变量(meta.NewClient),然后执行MetaClient.Open()进行初始化;
后续会通过Server.Open函数(run/server.go)启动各项服务,如果有meta文件的更新操作,通过commit函数进行snapshot操作;
meta文件load
Client.Open()中会执行Load操作,NewServer时会自动加载。
源码路径: github.com/influxdata/influxdb/services/meta/data.go
meta数据encode:
meta数据decode:
proto路径 :github.com/gogo/protobuf/proto
源码路径: github.com/influxdata/influxdb/services/meta/data.go
meta文件存储的就是 meta.Data 的数据,结构定义如下:
Term :暂时不知道干什么用的。
Index :从源码看这个应该是类似版本号的东西,初始化为1,执行commit操作是会增加。如果为1,会立即执行持久化操作(在Open函数中操作)。
ClusterID : 是InfluxDB集群相关内容;
Databases :用于存储数据库信息;
Users :用于存储数据库用户信息;
DatabaseInfo 定义 :
RetentionPolicyInfo 定义:
ShardGroupInfo 定义:
ShardInfo 定义:
ShardOwner 定义:
ShardOwner主要用于集群,其中NodeId用于标识集群的节点ID,在InfluxDB 1.1社区版本中集群已经不支持了,该字段无效。
SubscriptionInfo 定义:
ContinuousQueryInfo 定义:
UserInfo 定义:
meta文件解析示例代码:
好,就这些了,希望对你有帮助。