目的
修改当前已经存在的 namespace 参数
预期将会保留之前的 namespace 数据
总结
删除 namespace
执行 curl -X DELETE localhost:7201/api/v1/namespace/tools 后, 数据依旧存在
需要手动执行删除 namespace 下的文件重建 namespace
执行 curl -X POST localhost:7201/api/v1/namespace/tools ‘{ xxxxx }’ 重建 namespace
重启 m3db
最后需要重启才能够生效
假如修改 namespace 错误, 则会导致无法正常启动
步骤
删除 namespace
验证数据文件是否会丢失
利用新参数创建新 namespace
验证旧数据是否存在 (成功)
不重启 m3db, 参数不会成功被修改
环境
利用 curl -X GET http://10.189.208.210:7201/api/v1/namespace 查询得知 tools namespace 由于 bufferFutrue 过小, 导致流量图断流
"tools": {
"bootstrapEnabled": true,
"flushEnabled": true,
"writesToCommitLog": true,
"cleanupEnabled": true,
"repairEnabled": false,
"retentionOptions": {
"retentionPeriodNanos": "604800000000000",
"blockSizeNanos": "7200000000000",
"bufferFutureNanos": "600000000000", <- 过小
"bufferPastNanos": "600000000000", <- 过小
"blockDataExpiry": true,
"blockDataExpiryAfterNotAccessPeriodNanos": "300000000000",
"futureRetentionPeriodNanos": "0"
},
断流效果如下
修改
[root@ns-ceph-208210 app]# curl -X DELETE localhost:7201/api/v1/namespace/tools
{"deleted":true}
执行了删除之后, 数据文件还在, 看来需要手动地执行 rm
重新创建相同的 namespace , 修改参数
curl -X POST localhost:7201/api/v1/namespace -d '{
"name": "tools",
"options": {
"bootstrapEnabled": true,
"flushEnabled": true,
"writesToCommitLog": true,
"cleanupEnabled": true,
"snapshotEnabled": true,
"repairEnabled": false,
"retentionOptions": {
"retentionPeriodDuration": "168h",
"blockSizeDuration": "2h",
"bufferFutureDuration": "1h",
"bufferPastDuration": "1h",
"blockDataExpiry": true,
"blockDataExpiryAfterNotAccessPeriodDuration": "5m"
},
"indexOptions": {
"enabled": true,
"blockSizeDuration": "12h"
}
}
}'
修改 namespace 参数后需重启才会生效, 参考修改后效果图
假如修改 一个错误的 blocksizeduration, 那么下次重启将会失败并报错
{"level":"info","ts":1560956183.119692,"msg":"bootstrap finished","namespace":"vipshop60s","duration":1.150918387}
{"level":"fatal","ts":1560956183.1197174,"msg":"could not bootstrap database","error":"received bootstrap range that is not multiple of blockSize, blockSize: 43200000000000, start: 2019-06-12 22:00:00 +0800 CST, end: 2019-06-12 20:00:00 +0800 CST","errorCauses":[{"error":"received bootstrap range that is not multiple of blockSize, blockSize: 43200000000000, start: 2019-06-12 22:00:00 +0800 CST, end: 2019-06-12 20:00:00 +0800 CST","errorCauses":[{"error":"received bootstrap range that is not multiple of blockSize, blockSize: 43200000000000, start: 2019-06-12 22:00:00 +0800 CST, end: 2019-06-12 20:00:00 +0800 CST"}]}]}
现象:
m3dbnode 无法启动 9000 端口
所有查询都会有问题