乐趣区

关于mysql:KunlunDB集群管理接口

KunlunDB 在 0.9 版本之后,减少了运维监控平台(Xpanel), 通过集群治理(Cluster_mgr)的 HTTP 命令接口,能够实现对整个集群环境进行治理和监控。

以下是具体的命令接口介绍:
获取 cluster 工作状态,POST 接口:

curl -d "{\"job_type\":\"get_status\",\"job_id\":\"uuid999\"}" 
http://127.0.0.1:57000

因为创立集群,和复原一个新集群,会生成新的集群名称,通过 get_status 这个命令获取状态时,如果返回 result 为 succeed,那 info 就是新集群的名称。

命令接管:

{"result":"accept"}

胜利返回:

{"result":"done","info":"something done"}

正在工作:

{"result":"ongoing","info":"something ongoing"}

失败返回:

{"result":"failed","info":"something error"}
  1. 创立机器, 异步,须要查问,不阻塞其余操作。
  • 返回 result=done/failed,info:create machine succeed(或者错误信息)。
  • 操作表记录:info:create machine succeed(或者错误信息)。
  • 门路为根门路,必须存在,total_mem 单位是 Mbyte。

    
    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"create_machine",
    "hostaddr":"127.0.0.1",
    "rack_id":"1",
    "datadir":"/home/kunlun;/nvme2",
    "logdir":"/home/kunlun;/nvme3",
    "wal_log_dir":"/home/kunlun",
    "comp_datadir":"/nvme2",
    "total_mem":"1024",
    "total_cpu_cores":"8",
    "user_name":"zhangsan"
    }
  • 更新机器, 异步,须要查问,不阻塞其余操作。
  • 返回 result=done/failed 时, info:update machine succeed(或者错误信息)。
  • 操作表记录:info:update machine succeed(或者错误信息)。
  • 门路为根门路,必须存在,total_mem 单位是 Mbyte。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"update_machine",
"hostaddr":"127.0.0.1",
"rack_id":"1",
"datadir":"/home/kunlun;/nvme2",
"logdir":"/home/kunlun;/nvme3",
"wal_log_dir":"/home/kunlun",
"comp_datadir":"/nvme2",
"total_mem":"4096",
"total_cpu_cores":"8",
"user_name":"zhangsan"
}
  1. 删除机器, 异步,须要查问,不阻塞其余操作。
  • 返回 result=done/failed 时, info:delete machine succeed(或者错误信息)。
  • 操作表记录:info:delete machine succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_machine",
"hostaddr":"127.0.0.1",
"user_name":"zhangsan"
}
  1. 创立集群, 异步,须要查问。
  • 返回 result=done 时, info: 集群名称。
  • 操作表记录:info:create cluster succeed(或者错误信息)。
  • max_storage_size 单位是 G, innodb_size 单位是 G。
  • innodb_size 按要求先默认 1G 吧,范畴 1 -16G。
  • user_name 为网页端应用,保留到操作记录外面。
  • machine 为指定装置机器,以 machine0 开始。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"create_cluster",
"ha_mode":"mgr",
"shards":"2",
"nodes":"1",
"comps":"1",
"max_storage_size":"20",
"max_connections":"6",
"cpu_cores":"8",
"innodb_size":"1",
"user_name":"zhangsan",
"machinelist":
[{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}
  1. 删除集群, 异步,须要查问。
  • 返回 result=done 时, info: 集群名称。
  • 操作表记录:info:delete cluster succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_cluster",
"cluster_name":"cluster001",
"user_name":"zhangsan"
}
  1. 在现有集群上,新增分片,能够减少多个。
  • 返回 result=done 时, info:shard2;shard3。
  • 操作表记录:info:add shards succeed(或者错误信息)。
  • 分片名称排列, 分隔符改为分号,因为之前创立机器的门路也是分号,对立了比拟好。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_shards",
"cluster_name":"cluster001",
"shards":"2",
"user_name":"zhangsan",
"machinelist":
[{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}
  1. 在现有集群上,删除分片,只能一个一个删
  • 返回 result=done 时, info: 删除分片名。
  • 操作表记录:info:delete shard succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_shard",
"cluster_name":"cluster001",
"shard_name":"shard1",
"user_name":"zhangsan"
}
  1. 在现有集群上,新增计算节点,能够减少多个。
  • 返回 result=done 时, info:comp2;comp3。
  • 操作表记录:info:add comps succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_comps",
"cluster_name":"cluster001",
"comps":"2",
"user_name":"zhangsan",
"machinelist":
[{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}
  1. 在现有集群上,删除计算节点,只能一个一个删。
  • 返回 result=done 时, info: 删除计算节点名。
  • 操作表记录:info:delete shard succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_comp",
"cluster_name":"cluster001",
"comp_name":"comp1",
"user_name":"zhangsan"
}
  1. 为集群所有分片减少 node, 异步,须要查问。
  • 带有 shard_name 字段,只减少该分片,否则所有分片都减少。
  • 返回 result=done 时, info:ip:port;ip:port, 分隔符分号。
  • 操作表记录:info:add nodes succeed(或者错误信息)。
  • 该操作只能是 MGR 模式,先备份分片,创立出新 NODE, 把备份复原到新 NODE, 将新 NODE 退出分片。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"add_nodes",
"cluster_name":"cluster001",
"shard_name":"shard1",
"nodes":"2",
"user_name":"zhangsan",
"machinelist":
[{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}
  1. 某个分片删除 node, 异步,须要查问。
  • 返回 result=done 时, info:ip:port, 分隔符分号。
  • 操作表记录:info:delete node succeed(或者错误信息)。
  • 该操作只能是 MGR 模式,先备份分片,创立出新 NODE, 把备份复原到新 NODE, 将新 NODE 退出分片。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"delete_node",
"cluster_name":"cluster001",
"shard_name":"shard1",
"ip":"127.0.0.1",
"port":"57338",
"user_name":"zhangsan"
}
  1. 备份集群, 异步,须要查问。
  • 返回 result=done 时, info: 备份的工夫。
  • 操作表记录:info:backup cluster succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"backup_cluster",
"backup_cluster_name":"cluster001",
"user_name":"zhangsan"
}
  1. 复原集群, 异步,须要查问,该命令敞开,不给客户执行。
  • 返回 result=done 时, info: 复原集群名称。
  • 操作表记录:info:restore cluster succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"restore_cluster",
"timestamp":"2021-12-20 19:22:20",
"backup_cluster_name":"cluster003",
"restore_cluster_name":"cluster004",
"user_name":"zhangsan"
}
  1. 复原出新集群, 异步,须要查问
  • 返回 result=done 时, info: 新集群名称。
  • 操作表记录:info:restore new cluster succeed(或者错误信息)。
{
"ver":"0.1",
"job_id":"uuid999",
"job_type":"restore_new_cluster",
"timestamp":"2021-12-20 19:22:20",
"backup_cluster_name":"cluster003",
"user_name":"zhangsan",
"machinelist":
[{"hostaddr":"127.0.0.2"},
{"hostaddr":"127.0.0.3"}
]
}
  1. 获取元数据 MGR 模式, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_meta_mode"
    }
  2. 获取元数据节点列表, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_meta"
    }
  3. 获取所有集群列表, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_cluster"
    }
  4. 获取集群存储节点列表, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_storage",
    "cluster_name":"cluster003"
    }
  5. 获取集群计算节点列表, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_computer",
    "cluster_name":"cluster003"
    }
  6. 获取实例变量, 同步返回。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"get_variable",
    "variable":"innodb_buffer_pool_size",
    "ip":"127.0.0.1",
    "port":"57338"
    }
    
  7. 设置实例变量, 同步返回。
  • 优先整型 value_int, 找不到再找字符串 value_str

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"set_variable",
    "variable":"innodb_buffer_pool_size",
    "value_int":"134217728",
    "value_str":"134217728",
    "ip":"127.0.0.1",
    "port":"57338"
    }
  • 管制实例,异步,须要查问。
  • 包含进行 (stop)/ 启动(start)/ 重启(restart) 三个操作。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"control_instance",
    "control":"stop",
    "ip":"127.0.0.1",
    "port":"57338",
    "user_name":"zhangsan"
    }
  • 更新 prometheus 数据,异步,须要查问。
  • 机器 IP, 从元数据表读取,PORT 从配置文件读取。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"update_prometheus",
    "user_name":"zhangsan"
    }
  • prometheus 连贯到 PostgreSQL。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"postgres_exporter",
    "ip":"127.0.0.1",
    "port":"57030",
    "user_name":"zhangsan"
    }
  • prometheus 连贯到 MySQL。

    {
    "ver":"0.1",
    "job_id":"uuid999",
    "job_type":"mysqld_exporter",
    "ip":"127.0.0.1",
    "port":"57330",
    "user_name":"zhangsan"
    }

KunlunDB 我的项目已开源

【GitHub:】
https://github.com/zettadb

【Gitee:】
https://gitee.com/zettadb

END

退出移动版