跳至主要內容

Klustron(原KunlunBase) ClusterManager API

Klustron大约 48 分钟

Klustron(原KunlunBase) ClusterManager API

0.使用介绍

KunlunClusterManager 接受 HTTP 协议的请求,并根据请求的类型和参数,执行相应的任务。接口应答模式分为同步和异步模式。 同步模式为客户端在发出请求后,接收到的应答就包含当前接口的执行结果(如果获取集群信息等)。 异步模式通常为执行时间较长的任务。客户端在下发请求后,需要通过 get_status 接口来获取任务的执行状态,指导任务成功或者失败为止。

0.1 下发任务

接口说明

下发集群管理任务。

请求参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
job_idstring0下发任务,不需要填写 job_id,该 job_id 会由clustermanager 自动生成并通过应答返回。
job_typestring1任务类型,与具体任务内容相关
timestampstring1任务发起的时间戳
parasjson0自定义参数部分,与任务类型相关。

应答参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
error_codestring1错误码
error_infostring1错误信息
statusstring1任务状态,可能的值为 accepted,started, ongoing, done, failed
job_idstring0由clustermanager 自动生成的 job_id, 如果任务类型是异步任务的话,可以通过该 job_id 来查询任务进度和状态。

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"expand_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "dst_shard_id":"2",
        "src_shard_id":"1",
        "table_list":[
            "sbtest.public.test1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

0.2 获取任务执行状态

接口说明

获取指定 job_id 任务的执行状态。

请求参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
job_idstring1待查询任务的 id
job_typestring1任务类型,当前接口 'get_status'
timestampstring1任务发起的时间戳
parasjson0自定义参数部分,get_status 类型接口不需要填写,其他任务类型可能需要填写。

应答参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
error_codestring1错误码
error_infostring1错误信息
statusstring1任务状态,可能的值为 started, ongoing, done, failed

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"expand_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "dst_shard_id":"2",
        "src_shard_id":"1",
        "table_list":[
            "sbtest.public.test1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

1.设备管理

1.1 上报机器设备

接口说明

将已初始化的服务器设备,注册到系统中。

应答模式

异步。通过 get_status 接口来查询状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1create_machine
hostaddrstring1服务器 IP
machine_typestring1设备类型。 设备类型包括两种 storage 和 computer。 分别代表了存储机型和计算机型。存储机型表示,该设备可以被用来部署 Klustron-storage。相同的,计算机型代表着该设备可以被用来部署 Klustron-server。同一台物理设备,其类型可以是存储设备或者计算设备,也可以既是存储设备,也是计算设备,这种情况下,端口范围需要明确的区分开,确保在同一台设备上安装的计算节点和存储节点不会端口冲突。
port_rangestring1端口分配范围。即新创建的实力端口在该参数指定的范围内分配
rack_idstring1机架信息
datadirstring1实例数据目录存放位置
logdirstring1日志目录存放位置
wal_log_dirstring1wal 日志存放位置
comp_datadirstring1如果当前设备为计算机型,则该字段标识计算节点的数据目录
total_memstring1该机型可用总内存 单位为 MB
total_cpu_coresstring1该机型可用总的逻辑核心数

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"192.168.0.135",
        "machine_type":"computer",
        "port_range":"45000-48000",
        "rack_id":"1",
        "datadir":"/home/play_ground/run_data",
        "logdir":"/home/play_ground/run_data",
        "wal_log_dir":"/home/play_ground/run_data",
        "comp_datadir":"/home/play_ground/run_data",
        "total_mem":"8192",
        "total_cpu_cores":"8"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回

{
    "version":"1.0",
    "error_code":"0",
    "error_info":"create machine successfully",
    "status":"done",
    "attachment":{

}
}

1.2 删除设备

接口说明

对已经注册到系统的服务器,执行删除操作。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_machine
hostaddrstring1机器 ip
machine_typestring1该设备的机型信息 storage 或者 computer

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"127.0.0.1",
        "machine_type":"storage"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete machine successfully",
    "status":"done",
    "attachment":{

}
}

1.3 设置服务器状态

接口说明

设置指定服务器的状态,如 dead,running,分别表示当前设备处于下线和在线状态,只有在线的设备才能被系统划分到资源池内。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_machine
hostaddrstring1机器 ip
node_statsstring1running, dead

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"set_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"127.0.0.1",
        "node_stats":"running"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"set machine success",
    "status":"done",
    "attachment":{

}
}

2.集群购买与删除

2.1 购买新集群

接口说明

按照指定的参数配置,创建新的 kunlunBase 集群。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1create_cluster
nick_namestring1业务名称,如‘对账结息数据库’
ha_modestring1rbr, mgr。标识高可用模式。前者为强同步模式,后者为 mgr 模式。
shardsstring1分片数目
nodesstring1每个分片的节点数目,至少 3 个节点,组成一主两从的高可用集群
compsstring1计算节点个数
max_storage_sizestring1最大存储空间
max_connectionsstring1最大连接数
cpu_coresstring1可以使用的最大核数
cpu_limit_nodestring1share 标识软隔离模式; quota 标识硬隔离模式;
innodb_sizestring1Klustron-storage 使用的 innodb_buffer 大小(这个字段innodb_size 单位:M)
rocksdb_block_cache_size_Mstring1Klustron-storage 设置rocsdb block cache size 单位:M), version >=1.1
dbcfgstring0设置小内存模式,0和没有这个字段为正常模式,1为小内存模式 取值为 0 或者 1。
fullsync_levelstring1该shard中强同步备机应当个数,该字段值要小于等于备机节点数
storage_iplistsJson array0为指定安装存储节点机器,如果不指定,默认选择已有机器
computer_iplistsJson array0为指定安装计算节点机器,如果不指定,默认选择已有机器
node_distributionJson array0配置存储节点分布信息
comp_distributionJson array0配置计算节点分布信息
install_proxysqlstring0安装集群时是否安装proxysql,如果安装proxysql,则该集群为单shard模式,默认为0

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"mgr",
        "shards":"1",
        "nodes":"3",
        "comps":"1",
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"1024",
	"rocksdb_block_cache_size_M":"1024",
        "dbcfg":"1",
        "fullsync_level":"1",
        "install_proxysql":"0",
        "storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ],
        "computer_iplists":[
            "192.168.0.1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"create cluster successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"3",
        "cluster_name":"cluster_1651903646_000001",
        "shards":"1",
        "comps":"1"
    }
}

2.2  集群内新增分片

接口说明

按照指定的参数配置,在现有集群上,新增分片,可以增加多个。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_shards
cluster_idstring1集群 id
shardsstring1新增分片个数
nodesstring1新增分片中,每个分片的节点个数
storage_iplistsJson array1为指定安装存储节点机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_shards",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shards":"2",
  "nodes":"3",

"storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add shards successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"2",
        "cluster_name":"cluster_1651836141_000001",
        "shards":"2",
        "comps":"1",
        "list_shard":[
            {
                "shard_id":"3",
                "shard_name":"shard2"
            }
        ]
    }
}

2.3  集群内删除现有分片

接口说明

按照指定的参数配置,在现有集群上,删除分片,只能一个一个删。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_shards
cluster_idstring1集群 id
shard_idstring1待删除分片 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_shard",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete shard successfully",
    "status":"done",
    "attachment":{

}
}

2.4 集群内新增计算节点

接口说明

按照指定的参数配置,在现有集群上,新增分片,可以增加多个。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_comps
cluster_idstring1集群 id
compsstring1新增的计算节点的个数
computer_iplistsJson array1为指定安装计算节点的机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_comps",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "comps":"2",
        "computer_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add comps successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"3",
        "cluster_name":"cluster_1651903646_000001",
        "shards":"1",
        "comps":"2",
        "list_comp":[
            {
                "comp_id":"3",
                "comp_name":"comp2"
            }
        ]
    }
}

2.5  集群内删除计算节点

接口说明

按照指定的参数配置,在现有集群上,删除计算节点,只能一个一个删。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_shards
cluster_idstring1集群 id
comp_idstring1待删除计算节点 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_comp",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "comp_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete comp successfully",
    "status":"done",
    "attachment":{

}
}

2.6  指定集群增加 node 节点

接口说明

按照指定的参数配置,为集群所有分片增加node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
nodesstring1增加节点的个数
storage_iplistsJson array1为指定安装存储节点机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_nodes",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1",
        "nodes":"2",
        "storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add new nodes successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"1",
        "cluster_name":"cluster_1651907758_000001",
        "shards":"1",
        "comps":"1",
        "list_shard":[
            {
                "shard_id":"1",
                "shard_name":"shard1",
                "nodes":"5",
                "list_node":[
                    {
                        "hostaddr":"192.168.0.127",
                        "node_id":"4",
                        "port":"58509"
                    },
                    {
                        "hostaddr":"192.168.0.127",
                        "node_id":"5",
                        "port":"58512"
                    }
                ]
            }
        ]
    }
}

2.7  指定集群删除 node 节点

接口说明

按照指定的参数配置,为集群指定分片删除指定 node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
hostaddrstring1待删除 node 所在的机器 IP
portstring1端口号

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_node",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1",
        "hostaddr":"127.0.0.1",
        "port":"57338"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete node successfully",
    "status":"done",
    "attachment":{

}
}

2.8  重做备机

接口说明

指定重做某个 shard 的备机。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
hostaddrstring1待删除 node 所在的机器 IP
portstring1端口号
need_backupstring1是否需要在重做前进行备份
hdfs_hoststring1冷备位置
pv_limitstring1冷备传输限速 单位是 MB
allow_pull_from_masterstring1是否在备机不可用的情况下,使用主机的数据重做备机
allow_replica_delaystring1备机延迟的最大值,如果备机延迟超过这个值,则认为该备机不适合作为数据源

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"rebuild_node",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "shard_id":"1",
        "cluster_id":"1",
        "rb_nodes":[
            {
                "hostaddr":"192.168.0.125",
                "port":"57001",
                "need_backup":"0",
                "hdfs_host":"hdfs",
                "pv_limit":"10"
            }
        ],
        "allow_pull_from_master":"1",
        "allow_replica_delay":"15"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete node successfully",
    "status":"done",
    "attachment":{

}
}

2.9 删除指定集群

接口说明

按照指定的参数配置,为集群指定分片删除指定 node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_cluster
cluster_idstring1集群 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
"attachment":  {
"cluster_id": "43" ,
"cluster_name": "cluster_1665971623_000043" ,
"computer_id": "776" ,
"computer_state": "done" ,
"computer_step":  [
 {
"cluster_id": "43" ,
"computer_hosts": "192.168.0.132_53704;" ,
"computer_id": "778" ,
"computer_state": "done" ,
"error_code": 0 ,
"error_info": "OK" ,
"rollback_flag": "1"
}
],
"job_steps": "shard,computer" ,
"shard_id": "775" ,
"shard_step":  [
 {
"cluster_id": "43" ,
"error_code": 0 ,
"error_info": "OK" ,
"rollback_flag": "1" ,
"shard_ids": "83," ,
"storage_hosts": "192.168.0.132_53407;192.168.0.132_53411;" ,
"storage_id": "777" ,
"storage_state": "done"
}
],
"storage_state": "done"
},
"error_code": "0" ,
"error_info": "OK" ,
"job_id": "" ,
"job_type": "" ,
"status": "done" ,
"version": "1.0"
}

2.10 修改实例资源隔离参数

接口说明

按照指定的参数配置,修改 MySQL 或者 PostgreSQL 实例的资源隔离参数,当前只支持 cpu 隔离。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1update_instance_cgroup
ipstring1实例 ip
Portstring1实例监听端口
typestring1mysql 标识存储节点实例,pg 标识计算节点实例
cpu_coresstring1分配的 cpu 核数
cgroup_modestring1cpu 资源限制的模式,默认是quota,可以设置quota或者share,其中 share 标识软隔离,quota 标识硬隔离。

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"update_instance_cgroup",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "ip":"192.168.0.135",
        "port":"57001",
        "type":"mysql",
        "cpu_cores":"5",
        "cgroup_mode":"quota"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

3.集群备份

3.1 手动发起集群备份

接口说明

调用该接口手动发起一次全量备份。cluster_id 为 -1 时,表示备份元数据集群。

应答模式

同步接口。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1集群 ID

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"manual_backup_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

4.集群恢复

4.1 集群回档(按时间点恢复集群)

接口说明

按时间点对指定集群进行回档。

应答模式

异步。通过 get_status 接口获取任务进度。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1回档操作的源集群 ID
dst_cluster_idstring1回档操作的目标集群 ID。该集群必须是新买的空集群
restore_timestring1回档时间点

示例

#请求
{
    "version":"1.0",
    "job_id":"",
    "job_type":"cluster_restore",
    "timestamp":"1435749309",
    "paras":{
      "src_cluster_id":"1",
    	"dst_cluster_id":"2",
    	"restore_time":"restore_time"
    }
} -X POST http://192.168.0.135:35001/HttpService/Emit


#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

5.集群扩容

5.1 自动获取表搬迁列表

接口说明

获取系统自动选择出来的待搬迁的表列表。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1集群 ID
shard_idstring1当前集群内待迁出表的源 shard id
policystring1top_hit:选择访问频率最高的表。 top_size:选择数据量最大的表

应答参数

参数名称参数类型是否必填备注
attachment->table_liststring待迁移表列表

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_expand_table_list",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"3",
        "shard_id":"2",
        "policy":"top_size"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "table_list":"kunlundb_super_dba.kunlundb_super_dba_$$_public.test1"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

5.2 发起表搬迁任务

接口说明

发起表搬迁任务。

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
job_typestring1expand_cluster
cluster_idstring1集群 ID
src_shard_idstring1当前集群内待迁出表的源 shard id
dst_shard_idstring1当前集群内待迁出表的目标 shard id
table_listjson_array1待迁移表列表
drop_old_tablestring0是否保留源表

示例

#请求
curl -d '
{
  "version": "1.0",
  "job_id":"",
  "job_type": "expand_cluster",
  "timestamp" : "1435749309",
  "user_name":"kunlun_test",
  "paras": {
    "cluster_id": "1",
    "dst_shard_id": "5",
    "src_shard_id": "6",
    "table_list": [
      "postgres.public.test2"
    ]
  }
} ' -X POST http://192.168.0.135:8010/HttpService/Emit


#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

6. 元数据管理

6.1 获取元数据集群同步模式

接口说明

查询元数据集群同步模式。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_meta_summary

应答参数

参数名称参数类型是否必填备注
attachment->modestring元数据集群同步模式 no_rep, mgr, rbr 三种类型的结果

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_meta_mode",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "mode":"mgr"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.2 获取冷备存储服务信息

接口说明

查询冷备存储服务的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_backup_storage

应答参数

参数名称参数类型是否必填备注
hostaddrstring备份服务 IP
namestring备份服务名称
portstring备份服务端口
stypestring备份服务类型

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_backup_storage",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_backup_storage":[
            {
                "hostaddr":"192.168.0.135",
                "name":"hdfs_backup1",
                "port":"9000",
                "stype":"HDFS"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.3 获取机器状态信息

接口说明

查询所有机器状态的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_machine_summary

应答参数

参数名称参数类型是否必填备注
hostaddrstring服务器地址
statusstring服务器状态

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_machine_summary",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_machine":[
            {
                "hostaddr":"192.168.0.135",
                "status":"online"
            },
            {
                "hostaddr":"192.168.0.125",
                "status":"online"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.4 获取集群列表

接口说明

查询所有 kunlunbase 集群列表。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_cluster_summary

应答参数

参数名称参数类型是否必填备注
namestring集群名称
nick_namestring业务名称
shardsstring分片个数
compsstring计算节点个数

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_machine_summary",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_machine":[
            {
                "hostaddr":"192.168.0.135",
                "status":"online"
            },
            {
                "hostaddr":"192.168.0.125",
                "status":"online"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.5 获取集群详细信息

接口说明

获取指定集群的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_cluster_detail
cluster_namestring1集群名称

应答参数

参数名称参数类型是否必填备注
namestring集群名称
nick_namestring业务名称
shardsstring分片个数
compsstring计算节点个数
comp_namestring计算节点名称
hostaddrstring计算节点或者存储节点 IP
portstring计算节点或者存储节点端口
statusstring当前节点状态
masterstring当前存储节点是否为主节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_cluster_detail",
    "timestamp":"1435749309",
    "paras":{
        "cluster_name":"cluster_1659333382_000001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "cluster_name":"cluster_1659333382_000001",
        "comps":"1",
        "list_comp":[
            {
                "comp_name":"comp_1",
                "hostaddr":"192.168.0.135",
                "port":"45001",
                "status":"online"
            }
        ],
        "list_shard":[
            {
                "list_node":[
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"true",
                        "port":"55001",
                        "status":"online"
                    },
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"false",
                        "port":"55002",
                        "status":"online"
                    },
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"false",
                        "port":"55003",
                        "status":"online"
                    }
                ],
                "nodes":"3",
                "shard_name":"shard_1"
            }
        ],
        "nick_name":"my_nick_name",
        "shards":"1"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.6 获取存储节点系统变量信息

接口说明

查询 Klustron-storage 的某个变量值(如 innodb_buffer_pool_size)。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_variable
hostaddrstring1Klustron-storage ip
portstring1Klustron-storage port
variablestring1变量名

应答参数

参数名称参数类型是否必填备注
resultstring查询是否成功
valuestring查询结果

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_variable",
    "timestamp":"1435749309",
    "paras":{
        "hostaddr":"192.168.0.135",
        "port":"55001",
        "variable":"innodb_buffer_pool_size"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "result":"true",
        "value":"5242880"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

7.表重分布

接口说明

根据用户输入表,将表中数据dump出来导入新表中

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1原表所在cluster_id
dst_shard_idstring1目标表重分布到目标的cluster_id
repartition_tablesstring1目标表重分布到目标的cluster_id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"table_repartition",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "src_cluster_id":"3",
        "dst_cluster_id":"2",
        "repartition_tables":"test_

$$ public.t=>test1 $$

private.t2,test

$$ priv.ta=>test1 $$

_priv1.tb"     } } ' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别说明:

1.需要预先在目标cluster下建立好database,schema,和table,并且原和目标表表结构一致,这个cluster_mgr会自动校验
2.重分布表任务一次要求做的表必须下同一个database下,原和目标database可以不同

8.表逻辑备份

接口说明

用户发起对某个表逻辑备份,以及设置定时逻辑备份

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1逻辑备份表所在cluster_id
backup_typestring1逻辑备份类型,支持db|schema|table. cluster_mgr版本1.0以上支持
db_tablestring1要逻辑备份的表
backup_timestring1定时备份时间段

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"logical_backup",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
	"backup_type":"schema",
    	"backup":[
          {
            "db_table":"postgres_

$$ public", "backup_time":"01:00:00-02:00:00" }, { "db_table":"postgres $$

_trtest", "backup_time":"01:00:00-02:00:00" } ]

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别强调

如果backup_type为db,表示要备份该db下所有schema中表。 在输入backup下 db_table中输入db名

如果backup_type为schema,表示要备份该schema下所有表。 在输入backup下 db_table中输入db_$$_schema

9.表逻辑恢复

接口说明

用户发起对某个逻辑备份表恢复到指定历史时间点

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1备份表所在cluster_id
dst_cluster_idstring1逻辑恢复表到的cluster_id
restore_typestring1逻辑恢复类型,支持db|schema|table. cluster_mgr版本1.0以上支持
db_tablestring1要逻辑恢复的表
restore_timestring1要恢复到的历史时间点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"logical_restore",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "src_cluster_id":"1",
    	"dst_cluster_id":"2",
	"restore_type":"table",
	"restore":[{
		"db_table":"postgres_

$$ public.t1", "restore_time":"2022-10-20 19:20:15" },{ "db_table":"postgres $$

_puingblic.t2", "restore_time":"2022-10-20 19:20:15" }]

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

10. 手动触发cluster_mgr主备切换

接口说明

用户发起对当前cluster_mgr集群触发主备切换操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为transfer_leader
target_leaderstring1要切换的目标新主

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"transfer_leader",
    	"target_leader":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

11. 为cluster_mgr添加节点

接口说明

用户发起对当前cluster_mgr集群添加节点操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为add_peer
peerstring1要添加cluster_mgr节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"add_peer",
    	"peer":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

12. 为cluster_mgr删除节点

接口说明

用户发起对当前cluster_mgr集群删除节点操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为remove_peer
peerstring1要删除的cluster_mgr节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"remove_peer",
    	"peer":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别强调

为cluster_mgr集群添加/删除节点,需要手动更新cluster_mgr配置文件中raft_group_member_init_config配置项,将添加/删除节点配置更新

Klustron ClusterManager API

0.使用介绍

KlustronClusterManager 接受 HTTP 协议的请求,并根据请求的类型和参数,执行相应的任务。接口应答模式分为同步和异步模式。 同步模式为客户端在发出请求后,接收到的应答就包含当前接口的执行结果(如果获取集群信息等)。 异步模式通常为执行时间较长的任务。客户端在下发请求后,需要通过 get_status 接口来获取任务的执行状态,指导任务成功或者失败为止。

0.1 下发任务

接口说明

下发集群管理任务。

请求参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
job_idstring0下发任务,不需要填写 job_id,该 job_id 会由clustermanager 自动生成并通过应答返回。
job_typestring1任务类型,与具体任务内容相关
timestampstring1任务发起的时间戳
parasjson0自定义参数部分,与任务类型相关。

应答参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
error_codestring1错误码
error_infostring1错误信息
statusstring1任务状态,可能的值为 accepted,started, ongoing, done, failed
job_idstring0由clustermanager 自动生成的 job_id, 如果任务类型是异步任务的话,可以通过该 job_id 来查询任务进度和状态。

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"expand_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "dst_shard_id":"2",
        "src_shard_id":"1",
        "table_list":[
            "sbtest.public.test1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

0.2 获取任务执行状态

接口说明

获取指定 job_id 任务的执行状态。

请求参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
job_idstring1待查询任务的 id
job_typestring1任务类型,当前接口 'get_status'
timestampstring1任务发起的时间戳
parasjson0自定义参数部分,get_status 类型接口不需要填写,其他任务类型可能需要填写。

应答参数

参数名称参数类型是否必填备注
versionstring1自定义协议版本,默认 ‘1.0’
error_codestring1错误码
error_infostring1错误信息
statusstring1任务状态,可能的值为 started, ongoing, done, failed

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"expand_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "dst_shard_id":"2",
        "src_shard_id":"1",
        "table_list":[
            "sbtest.public.test1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

1.设备管理

1.1 上报机器设备

接口说明

将已初始化的服务器设备,注册到系统中。

应答模式

异步。通过 get_status 接口来查询状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1create_machine
hostaddrstring1服务器 IP
machine_typestring1设备类型。 设备类型包括两种 storage 和 computer。 分别代表了存储机型和计算机型。存储机型表示,该设备可以被用来部署 Klustron-storage。相同的,计算机型代表着该设备可以被用来部署 Klustron-server。同一台物理设备,其类型可以是存储设备或者计算设备,也可以既是存储设备,也是计算设备,这种情况下,端口范围需要明确的区分开,确保在同一台设备上安装的计算节点和存储节点不会端口冲突。
port_rangestring1端口分配范围。即新创建的实力端口在该参数指定的范围内分配
rack_idstring1机架信息
datadirstring1实例数据目录存放位置
logdirstring1日志目录存放位置
wal_log_dirstring1wal 日志存放位置
comp_datadirstring1如果当前设备为计算机型,则该字段标识计算节点的数据目录
total_memstring1该机型可用总内存 单位为 MB
total_cpu_coresstring1该机型可用总的逻辑核心数

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"192.168.0.135",
        "machine_type":"computer",
        "port_range":"45000-48000",
        "rack_id":"1",
        "datadir":"/home/play_ground/run_data",
        "logdir":"/home/play_ground/run_data",
        "wal_log_dir":"/home/play_ground/run_data",
        "comp_datadir":"/home/play_ground/run_data",
        "total_mem":"8192",
        "total_cpu_cores":"8"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回

{
    "version":"1.0",
    "error_code":"0",
    "error_info":"create machine successfully",
    "status":"done",
    "attachment":{

}
}

1.2 删除设备

接口说明

对已经注册到系统的服务器,执行删除操作。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_machine
hostaddrstring1机器 ip
machine_typestring1该设备的机型信息 storage 或者 computer

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"127.0.0.1",
        "machine_type":"storage"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete machine successfully",
    "status":"done",
    "attachment":{

}
}

1.3 设置服务器状态

接口说明

设置指定服务器的状态,如 dead,running,分别表示当前设备处于下线和在线状态,只有在线的设备才能被系统划分到资源池内。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_machine
hostaddrstring1机器 ip
node_statsstring1running, dead

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"set_machine",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "hostaddr":"127.0.0.1",
        "node_stats":"running"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"set machine success",
    "status":"done",
    "attachment":{

}
}

2.集群购买与删除

2.1 购买新集群

接口说明

按照指定的参数配置,创建新的 Klustron 集群。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1create_cluster
nick_namestring1业务名称,如‘对账结息数据库’
ha_modestring1rbr, mgr。标识高可用模式。前者为强同步模式,后者为 mgr 模式。
shardsstring1分片数目
nodesstring1每个分片的节点数目,至少 3 个节点,组成一主两从的高可用集群
compsstring1计算节点个数
max_storage_sizestring1最大存储空间
data_storage_MBstring1数据存储空间,单位:M
log_storage_MBstring1日志存储空间,单位:M
max_connectionsstring1最大连接数
cpu_coresstring1可以使用的最大核数
cpu_limit_nodestring1share 标识软隔离模式; quota 标识硬隔离模式;
enable_backup_encryptstring01 标识开启备份加密;0 标识不开启备份加密
backup_encrypt_keystring0备份加密 KEY。如果开启了备份加密,那么此选项必填;
innodb_sizestring1Klustron-storage 使用的 innodb_buffer 大小(这个字段innodb_size 单位:M)
innodb_page_sizestring0Klustron-storage 使用的 innodb_page_size 大小, 默认为16384 (支持值为4096
dbcfgstring0设置小内存模式,0和没有这个字段为正常模式,1为小内存模式 取值为 0 或者 1。
fullsync_levelstring1该shard中强同步备机应当个数,该字段值要小于等于备机节点数
storage_iplistsJson array1为指定安装存储节点机器,如果不指定,默认选择已有机器
computer_iplistsJson array1为指定安装计算节点机器,如果不指定,默认选择已有机器
install_proxysqlstring0安装集群时是否安装proxysql,如果安装proxysql,则该集群为单shard模式,默认为0

增加输入SN和CN节点分布参数 跨city情况,主城指定master_idc/slave_idc

{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"rbr",
        "shards":"1",
        "nodes":"3",
        "node_distribution":{
            "distribution_type":"cross_city",
            "master_city":{
                "city_name":"cname_11",
                "master_idc":{
                    "idc":"name_11",
                    "node_num":"2"
                },
                "slave_idc":[
                    {
                        "idc":"name_22",
                        "node_num":"2"
                    },
                    {
                        "idc":"name_33",
                        "node_num":"2"
                    }
                ]
            },
            "slave_city":{
                "city_name":"cname_22",
                "idcs":[
                    {
                        "idc":"name_44",
                        "node_num":"2"
                    },
                    {
                        "idc":"name_55",
                        "node_num":"2"
                    }
                ]
            }
        },
        "comps":"1",
        "comp_distribution":[
            {
                "idc":"name_44",
                "node_num":"2"
            },
            {
                "idc":"name_55",
                "node_num":"2"
            }
        ],
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"128",
        "dbcfg":"1"
    }
}

跨city情况,主城不指定master_idc/slave_idc

{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"rbr",
        "shards":"1",
        "nodes":"3",
        "node_distribution":{
            "distribution_type":"cross_city",
            "master_city":{
                "city_name":"cname_11",
                "idcs":[
                    {
                        "idc":"name_22",
                        "node_num":"2"
                    },
                    {
                        "idc":"name_33",
                        "node_num":"2"
                    }
                ]
            },
            "slave_city":{
                "city_name":"cname_22",
                "idcs":[
                    {
                        "idc":"name_44",
                        "node_num":"2"
                    },
                    {
                        "idc":"name_55",
                        "node_num":"2"
                    }
                ]
            }
        },
        "comps":"1",
        "comp_distribution":[
            {
                "idc":"name_44",
                "node_num":"2"
            },
            {
                "idc":"name_55",
                "node_num":"2"
            }
        ],
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"128",
        "dbcfg":"1"
    }
}

同城情况,指定master_idc/slave_idc情况

{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"rbr",
        "shards":"1",
        "nodes":"3",
        "node_distribution":{
            "distribution_type":"same_city",
            "master_idc":{
                "idc":"name_11",
                "node_num":"2"
            },
            "slave_idc":[
                {
                    "idc":"name_22",
                    "node_num":"2"
                },
                {
                    "idc":"name_33",
                    "node_num":"2"
                }
            ]
        },
        "comps":"1",
        "comp_distribution":[
            {
                "idc":"name_44",
                "node_num":"2"
            },
            {
                "idc":"name_55",
                "node_num":"2"
            }
        ],
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"128",
        "dbcfg":"1"
    }
}

同城情况,不指定master_idc/slave_idc情况

{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"rbr",
        "shards":"1",
        "nodes":"3",
        "node_distribution":{
            "distribution_type":"same_city",
            "idcs":[
                {
                    "idc":"name_22",
                    "node_num":"2"
                },
                {
                    "idc":"name_33",
                    "node_num":"2"
                }
            ]
        },
        "comps":"1",
        "comp_distribution":[
            {
                "idc":"name_44",
                "node_num":"2"
            },
            {
                "idc":"name_55",
                "node_num":"2"
            }
        ],
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"128",
        "dbcfg":"1"
    }
}

不传SN和CN节点分布参数,则和原先接口一致

特别说明: 如果用户输入了storage_iplists和computer_lists,则不允许传node_distribution和comp_distribution nodes数量要等于node_distribution中node_num数量和,comps数量等comp_distribution中node_num数量和 跨城购买时,必须指定主城和备城信息

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "nick_name":"my_nick_name",
        "ha_mode":"mgr",
        "shards":"1",
        "nodes":"3",
        "comps":"1",
        "max_storage_size":"20",
        "max_connections":"6",
        "cpu_cores":"8",
        "innodb_size":"1024",
        "dbcfg":"1",
        "fullsync_level":"1",
        "install_proxysql":"0",
        "storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ],
        "computer_iplists":[
            "192.168.0.1"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"create cluster successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"3",
        "cluster_name":"cluster_1651903646_000001",
        "shards":"1",
        "comps":"1"
    }
}

2.2  集群内新增分片

接口说明

按照指定的参数配置,在现有集群上,新增分片,可以增加多个。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_shards
cluster_idstring1集群 id
shardsstring1新增分片个数
nodesstring1新增分片中,每个分片的节点个数
storage_iplistsJson array1为指定安装存储节点机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_shards",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shards":"2",
  "nodes":"3",

"storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add shards successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"2",
        "cluster_name":"cluster_1651836141_000001",
        "shards":"2",
        "comps":"1",
        "list_shard":[
            {
                "shard_id":"3",
                "shard_name":"shard2"
            }
        ]
    }
}

2.3  集群内删除现有分片

接口说明

按照指定的参数配置,在现有集群上,删除分片,只能一个一个删。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_shards
cluster_idstring1集群 id
shard_idstring1待删除分片 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_shard",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete shard successfully",
    "status":"done",
    "attachment":{

}
}

2.4 集群内新增计算节点

接口说明

按照指定的参数配置,在现有集群上,新增分片,可以增加多个。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_comps
cluster_idstring1集群 id
compsstring1新增的计算节点的个数
computer_iplistsJson array1为指定安装计算节点的机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_comps",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "comps":"2",
        "computer_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add comps successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"3",
        "cluster_name":"cluster_1651903646_000001",
        "shards":"1",
        "comps":"2",
        "list_comp":[
            {
                "comp_id":"3",
                "comp_name":"comp2"
            }
        ]
    }
}

2.5  集群内删除计算节点

接口说明

按照指定的参数配置,在现有集群上,删除计算节点,只能一个一个删。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_shards
cluster_idstring1集群 id
comp_idstring1待删除计算节点 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_comp",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "comp_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete comp successfully",
    "status":"done",
    "attachment":{

}
}

2.6  指定集群增加 node 节点

接口说明

按照指定的参数配置,为集群所有分片增加node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1add_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
nodesstring1增加节点的个数
storage_iplistsJson array1为指定安装存储节点机器

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"add_nodes",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1",
        "nodes":"2",
        "storage_iplists":[
            "192.168.0.2",
            "192.168.0.3"
        ]
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"add new nodes successfully",
    "status":"done",
    "attachment":{
        "cluster_id":"1",
        "cluster_name":"cluster_1651907758_000001",
        "shards":"1",
        "comps":"1",
        "list_shard":[
            {
                "shard_id":"1",
                "shard_name":"shard1",
                "nodes":"5",
                "list_node":[
                    {
                        "hostaddr":"192.168.0.127",
                        "node_id":"4",
                        "port":"58509"
                    },
                    {
                        "hostaddr":"192.168.0.127",
                        "node_id":"5",
                        "port":"58512"
                    }
                ]
            }
        ]
    }
}

2.7  指定集群删除 node 节点

接口说明

按照指定的参数配置,为集群指定分片删除指定 node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
hostaddrstring1待删除 node 所在的机器 IP
portstring1端口号

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_node",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "shard_id":"1",
        "hostaddr":"127.0.0.1",
        "port":"57338"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete node successfully",
    "status":"done",
    "attachment":{

}
}

2.8  重做备机

接口说明

指定重做某个 shard 的备机。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_nodes
cluster_idstring1集群 id
shard_idstring0若指定该字段,则只在该 shard 上增加 node
hostaddrstring1待删除 node 所在的机器 IP
portstring1端口号
need_backupstring1是否需要在重做前进行备份
hdfs_hoststring1冷备位置
pv_limitstring1冷备传输限速 单位是 MB
allow_pull_from_masterstring1是否在备机不可用的情况下,使用主机的数据重做备机
allow_replica_delaystring1备机延迟的最大值,如果备机延迟超过这个值,则认为该备机不适合作为数据源

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"rebuild_node",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "shard_id":"1",
        "cluster_id":"1",
        "rb_nodes":[
            {
                "hostaddr":"192.168.0.125",
                "port":"57001",
                "need_backup":"0",
                "hdfs_host":"hdfs",
                "pv_limit":"10"
            }
        ],
        "allow_pull_from_master":"1",
        "allow_replica_delay":"15"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
    "version":"1.0",
    "error_code":"0",
    "error_info":"delete node successfully",
    "status":"done",
    "attachment":{

}
}

2.9 删除指定集群

接口说明

按照指定的参数配置,为集群指定分片删除指定 node, 异步,需要查询。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1delete_cluster
cluster_idstring1集群 id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

#查询接口get_status返回
{
"attachment":  {
"cluster_id": "43" ,
"cluster_name": "cluster_1665971623_000043" ,
"computer_id": "776" ,
"computer_state": "done" ,
"computer_step":  [
 {
"cluster_id": "43" ,
"computer_hosts": "192.168.0.132_53704;" ,
"computer_id": "778" ,
"computer_state": "done" ,
"error_code": 0 ,
"error_info": "OK" ,
"rollback_flag": "1"
}
],
"job_steps": "shard,computer" ,
"shard_id": "775" ,
"shard_step":  [
 {
"cluster_id": "43" ,
"error_code": 0 ,
"error_info": "OK" ,
"rollback_flag": "1" ,
"shard_ids": "83," ,
"storage_hosts": "192.168.0.132_53407;192.168.0.132_53411;" ,
"storage_id": "777" ,
"storage_state": "done"
}
],
"storage_state": "done"
},
"error_code": "0" ,
"error_info": "OK" ,
"job_id": "" ,
"job_type": "" ,
"status": "done" ,
"version": "1.0"
}

2.10 修改实例资源隔离参数

接口说明

按照指定的参数配置,修改 MySQL 或者 PostgreSQL 实例的资源隔离参数,当前只支持 cpu 隔离。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1update_instance_cgroup
ipstring1实例 ip
Portstring1实例监听端口
typestring1mysql 标识存储节点实例,pg 标识计算节点实例
cpu_coresstring1分配的 cpu 核数
cgroup_modestring1cpu 资源限制的模式,默认是quota,可以设置quota或者share,其中 share 标识软隔离,quota 标识硬隔离。

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"update_instance_cgroup",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "ip":"192.168.0.135",
        "port":"57001",
        "type":"mysql",
        "cpu_cores":"5",
        "cgroup_mode":"quota"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

2.11 重做集群计算节点

接口说明

按照指定的参数,将该集群中所有计算节点重做,即将计算节点中数据清空。

应答模式

异步。通过 get_status 接口来获取状态。

请求参数

参数名称参数类型是否必填备注
job_typestring1rebuild_comps
cluster_idstring1需要重做该集群的所有计算节点

示例

    #请求
    curl -d '
    {
        "version":"1.0",
        "job_id":"",
        "job_type":"rebuild_comps",
        "timestamp":"1435749309",
        "user_name":"kunlun_test",
        "paras":{
            "cluster_id":"1"
        }
    }
    ' -X POST http://192.168.0.135:35001/HttpService/Emit

    #应答
    {
        "attachment":null,
        "error_code":"0",
        "error_info":"",
        "job_id":"35",
        "status":"accept",
        "version":"1.0"
    }

特别说明:

该接口将该集群中所有计算节点中数据清理了。一般再rcr关系断开后,重新建立rcr关系时才需要。

3.集群备份

3.1 手动发起集群备份

接口说明

调用该接口手动发起一次全量备份。cluster_id 为 -1 时,表示备份元数据集群。

应答模式

同步接口。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1集群 ID

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"manual_backup_cluster",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

4.集群恢复

4.1 集群回档(按时间点恢复集群)

接口说明

按时间点对指定集群进行回档。

应答模式

异步。通过 get_status 接口获取任务进度。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1回档操作的源集群 ID
dst_cluster_idstring1回档操作的目标集群 ID。该集群必须是新买的空集群
restore_timestring1回档时间点

示例

#请求
{
    "version":"1.0",
    "job_id":"",
    "job_type":"cluster_restore",
    "timestamp":"1435749309",
    "paras":{
      "src_cluster_id":"1",
    	"dst_cluster_id":"2",
    	"restore_time":"restore_time"
    }
} -X POST http://192.168.0.135:35001/HttpService/Emit


#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

5.集群扩容

5.1 自动获取表搬迁列表

接口说明

获取系统自动选择出来的待搬迁的表列表。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1集群 ID
shard_idstring1当前集群内待迁出表的源 shard id
policystring1top_hit:选择访问频率最高的表。 top_size:选择数据量最大的表

应答参数

参数名称参数类型是否必填备注
attachment->table_liststring待迁移表列表

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_expand_table_list",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"3",
        "shard_id":"2",
        "policy":"top_size"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "table_list":"kunlundb_super_dba.kunlundb_super_dba_$$_public.test1"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

5.2 发起表搬迁任务

接口说明

发起表搬迁任务。

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
job_typestring1expand_cluster
cluster_idstring1集群 ID
src_shard_idstring1当前集群内待迁出表的源 shard id
dst_shard_idstring1当前集群内待迁出表的目标 shard id
table_listjson_array1待迁移表列表
drop_old_tablestring0是否保留源表

示例

#请求
curl -d '
{
  "version": "1.0",
  "job_id":"",
  "job_type": "expand_cluster",
  "timestamp" : "1435749309",
  "user_name":"kunlun_test",
  "paras": {
    "cluster_id": "1",
    "dst_shard_id": "5",
    "src_shard_id": "6",
    "table_list": [
      "postgres.public.test2"
    ]
  }
} ' -X POST http://192.168.0.135:8010/HttpService/Emit

#应答
    {
        "attachment":null,
        "error_code":"0",
        "error_info":"",
        "job_id":"35",
        "status":"accept",
        "version":"1.0"
    }

6. 元数据管理

6.1 获取元数据集群同步模式

接口说明

查询元数据集群同步模式。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_meta_summary

应答参数

参数名称参数类型是否必填备注
attachment->modestring元数据集群同步模式 no_rep, mgr, rbr 三种类型的结果

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_meta_mode",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "mode":"mgr"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.2 获取冷备存储服务信息

接口说明

查询冷备存储服务的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_backup_storage

应答参数

参数名称参数类型是否必填备注
hostaddrstring备份服务 IP
namestring备份服务名称
portstring备份服务端口
stypestring备份服务类型

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_backup_storage",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_backup_storage":[
            {
                "hostaddr":"192.168.0.135",
                "name":"hdfs_backup1",
                "port":"9000",
                "stype":"HDFS"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.3 获取机器状态信息

接口说明

查询所有机器状态的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_machine_summary

应答参数

参数名称参数类型是否必填备注
hostaddrstring服务器地址
statusstring服务器状态

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_machine_summary",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_machine":[
            {
                "hostaddr":"192.168.0.135",
                "status":"online"
            },
            {
                "hostaddr":"192.168.0.125",
                "status":"online"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.4 获取集群列表

接口说明

查询所有 Klustron 集群列表。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_cluster_summary

应答参数

参数名称参数类型是否必填备注
namestring集群名称
nick_namestring业务名称
shardsstring分片个数
compsstring计算节点个数

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_machine_summary",
    "timestamp":"1435749309",
    "paras":{

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "list_machine":[
            {
                "hostaddr":"192.168.0.135",
                "status":"online"
            },
            {
                "hostaddr":"192.168.0.125",
                "status":"online"
            }
        ]
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.5 获取集群详细信息

接口说明

获取指定集群的详细信息。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_cluster_detail
cluster_namestring1集群名称

应答参数

参数名称参数类型是否必填备注
namestring集群名称
nick_namestring业务名称
shardsstring分片个数
compsstring计算节点个数
comp_namestring计算节点名称
hostaddrstring计算节点或者存储节点 IP
portstring计算节点或者存储节点端口
statusstring当前节点状态
masterstring当前存储节点是否为主节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_cluster_detail",
    "timestamp":"1435749309",
    "paras":{
        "cluster_name":"cluster_1659333382_000001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "cluster_name":"cluster_1659333382_000001",
        "comps":"1",
        "list_comp":[
            {
                "comp_name":"comp_1",
                "hostaddr":"192.168.0.135",
                "port":"45001",
                "status":"online"
            }
        ],
        "list_shard":[
            {
                "list_node":[
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"true",
                        "port":"55001",
                        "status":"online"
                    },
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"false",
                        "port":"55002",
                        "status":"online"
                    },
                    {
                        "hostaddr":"192.168.0.135",
                        "master":"false",
                        "port":"55003",
                        "status":"online"
                    }
                ],
                "nodes":"3",
                "shard_name":"shard_1"
            }
        ],
        "nick_name":"my_nick_name",
        "shards":"1"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

6.6 获取存储节点系统变量信息

接口说明

查询 Klustron-storage 的某个变量值(如 innodb_buffer_pool_size)。

应答模式

同步。

请求参数

参数名称参数类型是否必填备注
job_typestring1get_variable
hostaddrstring1Klustron-storage ip
portstring1Klustron-storage port
variablestring1变量名

应答参数

参数名称参数类型是否必填备注
resultstring查询是否成功
valuestring查询结果

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"get_variable",
    "timestamp":"1435749309",
    "paras":{
        "hostaddr":"192.168.0.135",
        "port":"55001",
        "variable":"innodb_buffer_pool_size"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":{
        "result":"true",
        "value":"5242880"
    },
    "error_code":"0",
    "error_info":"",
    "job_id":"",
    "job_type":"",
    "status":"done",
    "version":"1.0"
}

7.表重分布

接口说明

根据用户输入表,将表中数据dump出来导入新表中

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1原表所在cluster_id
dst_shard_idstring1目标表重分布到目标的cluster_id
repartition_tablesstring1目标表重分布到目标的cluster_id
rename_tablesstring0表重分布完是否需要将目标表reanme成源表名
del_src_tablestring0表重分布成功后,是否需要自动删除源表
del_resv_daystring0del_src_table=0,则需要设置保留多少天,默认为7天

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"repartition_tables",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "src_cluster_id":"3",
        "dst_cluster_id":"2",
        "repartition_tables":"test_

$$ public.t=>test1 $$

private.t2,test

$$ priv.ta=>test1 $$

_priv1.tb"     } } ' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别说明:

1.需要预先在目标cluster下建立好database,schema,和table,并且原和目标表表结构一致,这个cluster_mgr会自动校验
2.重分布表任务一次要求做的表必须下同一个database下,原和目标database可以不同

8.表逻辑备份

接口说明

用户发起对某个表逻辑备份,以及设置定时逻辑备份

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1逻辑备份表所在cluster_id
backup_typestring0逻辑备份类型,目前支持db,schema,table。如果输入db,则备份该db下所有表
db_tablestring1要逻辑备份的表
backup_timestring1定时备份时间段

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"logical_backup",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
	"backup_type":"table",
    	"backup":[
          {
            "db_table":"postgres_

$$ public.t1", "backup_time":"01:00:00-02:00:00" }, { "db_table":"postgres $$

_puinblic.t2", "backup_time":"01:00:00-02:00:00" } ]

}
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

9.表逻辑恢复

接口说明

用户发起对某个逻辑备份表恢复到指定历史时间点

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
src_cluster_idstring1备份表所在cluster_id
dst_cluster_idstring1逻辑恢复表到的cluster_id
restore_typestring0逻辑恢复类型,目前支持db,schema,table,如果输入db,则从源cluster中将该db下所有表恢复到目标cluster
db_tablestring1要逻辑恢复的表
restore_timestring1要恢复到的历史时间点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"logical_restore",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "src_cluster_id":"1",
    	"dst_cluster_id":"2",
	"restore_type":"table",
	"restore":[{
		"db_table":"postgres_

$$ public.t1", "restore_time":"2022-10-20 19:20:15" },{ "db_table":"postgres $$

_publgic.t2", "restore_time":"2022-10-20 19:20:15" }] } } ' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

10. 手动触发cluster_mgr主备切换

接口说明

用户发起对当前cluster_mgr集群触发主备切换操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为transfer_leader
target_leaderstring1要切换的目标新主

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"transfer_leader",
    	"target_leader":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

11. 为cluster_mgr添加节点

接口说明

用户发起对当前cluster_mgr集群添加节点操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为add_peer
peerstring1要添加cluster_mgr节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"add_peer",
    	"peer":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

12. 为cluster_mgr删除节点

接口说明

用户发起对当前cluster_mgr集群删除节点操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
task_typestring1任务类型,这个地方为remove_peer
peerstring1要删除的cluster_mgr节点

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"raft_mission",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "task_type":"remove_peer",
    	"peer":"127.0.0.1:25001"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别强调

为cluster_mgr集群添加/删除节点,需要手动更新cluster_mgr配置文件中raft_group_member_init_config配置项,将添加/删除节点配置更新

13. 手动跨idc主备切换

接口说明

用户发起对某个cluster进行跨idc切换操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1要切换的集群id
target_idcstring1要切换到的目标idc
need_rollbackstring0切换失败是否回滚切换成功的shard

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"manual_idcsw",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "cluster_id":"1",
       "target_idc":"abc"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

14. 强制跨城切换

接口说明

用户发起对某个cluster进行跨城切换操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1要切换的集群id
target_citystring1要切换到的目标city

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"force_citysw",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
        "cluster_id":"1",
        "target_city":"abc"
    }
}
' -X POST http://192.168.0.135:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

特别强调

该操作为强制切换,不能保证数据一致性。

15. 建立rcr数据同步

接口说明

用户发起对两个cluster建立rcr数据同步

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
master_infoJson_Array1主rcr参数,meta_db和cluster_id
cluster_idstring1备rcr cluster的id
ignore_dbstring0默认值为0, 如果传入1,备集群中数据将会清理重新从主集群拉取,存储节点和计算节点数据都被清理

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"create_rcr",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "master_info":{
			"meta_db":"127.0.0.1:57001,127.0.0.2:57001,127.0.0.3:57001",
            "cluster_id":"1"
		},
       "cluster_id":"2",
       "ignore_db":"0"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

16. 删除rcr数据同步

接口说明

用户发起取消两个cluster rcr数据同步

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
master_infoJson_Array1主rcr参数,meta_db和cluster_id
cluster_idstring1备rcr cluster的id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"delete_rcr",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "master_info":{
            "meta_db":127.0.0.1:57001,127.0.0.2:57002",
            "cluster_id":"1"
        },
       "cluster_id":"2"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

17. 手动rcr切换

接口说明

用户发起对手动切换rcr同步

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
master_infoJson_Array1主rcr参数,meta_db和cluster_id
cluster_idstring1备rcr cluster的id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"manualsw_rcr",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "master_info":{
            "meta_db":127.0.0.1:57001,127.0.0.2:57002",
            "cluster_id":"1"
        },
       "cluster_id":"2"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

17. 配置rcr数据同步参数

接口说明

用户发起对rcr数据同步参数调整

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
master_infoJson_Array1主rcr参数,meta_db和cluster_id
work_modestring1修改参数类型,目前支持modify_sync_delay
sync_delaystring0当work_mode=modify_sync_delay时,设置延迟时间,单位为s
cluster_idstring1备rcr cluster的id

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"modify_rcr",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "master_info":{
            "meta_db":127.0.0.1:57001,127.0.0.2:57002",
            "cluster_id":"1"
        },
        "work_mode":"start_rcr",
       "cluster_id":"2"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

18. 设置自动物理备份时间段

接口说明

用户发起对物理自动备份时间段调整

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
cluster_idstring1cluster的id
time_period_strstring1备份时间段,格式为“08:00:00-24:00:00”

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"update_cluster_coldback_time_period",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "cluster_id":"2",
       "time_period_str":"08:00:00-24:00:00"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

19. 对集群中存储节点或计算节点操作

接口说明

用户发起对集群中存储节点或者计算节点操作

应答模式

异步。

请求参数

参数名称参数类型是否必填备注
controlstring1操作类型,start
hostaddrstring1要操作实例的机器ip
portstring1要操作实例的机器端口
machine_typestring1要操作实例类型,storage

示例

#请求
curl -d '
{
    "version":"1.0",
    "job_id":"",
    "job_type":"control_instance",
    "timestamp":"1435749309",
    "user_name":"kunlun_test",
    "paras":{
       "control":"start",
       "hostaddr":"127.0.0.1",
       "port":"27001",
       "machine_type":"storage"
    }
}
' -X POST http://127.0.0.1:35001/HttpService/Emit

#应答
{
    "attachment":null,
    "error_code":"0",
    "error_info":"",
    "job_id":"35",
    "status":"accept",
    "version":"1.0"
}

20. 获取当前元数据集群主节点

接口说明

用户同发起任务,获取当前元数据集群主节点

应答模式

同步。

请求参数

| 参数名称    | 参数类型   | 是否必填 | 备注                                                   |
| ----------- | ---------- | -------- | ------------------------------------------------------ |

示例

    #请求
    curl -d '
    {
        "version":"1.0",
        "job_id":"",
        "job_type":"get_meta_master",
        "timestamp":"1435749309",
        "user_name":"kunlun_test",
        "paras":{
        }
    }
    ' -X POST http://127.0.0.1:35001/HttpService/Emit

    #应答
    {
        "attachment":{"master_host":"127.0.0.1:23301"},
        "error_code":"0",
        "error_info":"",
        "job_id":"35",
        "status":"accept",
        "version":"1.0"
    }

END

33542df8d527d8698510020e4f1eed55588fb013:cluster_mgr_api.md