Orchestrator-client
orchestrator 支持两种方式通过命令行操作:
一种是 通过命令
orchestrator:
需要在服务器上安装 orchestrator,但是可以不作为服务启动。
需要配置orchestrator的文件,以便能够连接后端数据库
一种是通过 命令orchestrator-client
需要在服务器上安装orchestrator-client 脚本
不需要配置文件,但是需要指定ORCHESTRATOR_API 环境变量
orchestrator命令
./orchestrator -c help 查看帮助
./orchestrator -c find help 查看子命令的帮助
需要指定配置文件
需要添加参数 --ignore-raft-setup
查看信息
打印所有匹配到的实例
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c find -pattern "ehr-db-mysql-test-s0*"
打印根据名字 ,端口,版本匹配到的实例
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c search -pattern "5.7.28"
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c search -pattern "5306"
打印所有被orc管控的集群
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c clusters
打印所有被orc管控的集群的别名
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c clusters-alias
所有集群的所有可写的主库
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c all-clusters-masters
根据集群中某个实例的名称打印集群拓扑
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c topology -i ehr-db-mysql-test-s03.zjy:5306
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c topology-tabulated -i ehr-db-mysql-test-s03.zjy:5306
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c topology-tags -i ehr-db-mysql-test-s03.zjy:5306
这两种只是格式不同
打印所有的实例
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c all-instances
根据实例返回实例所在的集群别名
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster -i
根据实例返回实例所在的集群别名
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-alias -i ehr-db-mysql-test-s03.zjy:5306
根据实例返回实例所在的集群域名
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-domain -i ehr-db-mysql-test-s03.zjy:5306
根据实例返回实例所在的集群主库
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-master -i ehr-db-mysql-test-s03.zjy:5306
根据实例返回实例所在的集群中所有实例
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-instances -i ehr-db-mysql-test-s03.zjy:5306
返回实例状态
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c instance-status -i ehr-db-mysql-test-s03.zjy:5306
输出集群中的副本列表,可以作为 pt-online-schema-change 操作控制副本
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-osc-replicas -i ehr-db-mysql-test-s03.zjy:5306
输出集群中的副本列表,可以作为 gh-ost 工作服务器
./orchestrator -config orchestrator-sample.conf.json --ignore-raft-setup -c which-cluster-gh-ost-replicas -i ehr-db-mysql-test-s03.zjy:5306
Orchestrator-client是一个包装 API 调用的脚本,使用起来更方便。
它可以自动确定orchestrator的Leader角色
,并在这种情况下将所有请求转发给Leader。
有了orchestrator-client
,您:
- 不需要到处安装
orchestrator的
二进制文件;仅在运行该服务的主机上安装即可 - 不需要到处部署配置
orchestrator
;仅在服务主机上即可。 - 不需要访问后端数据库
- 需要访问 HTTP api
- 需要设置
ORCHESTRATOR_API
环境变量。- 要么为代理提供单个端点,例如
export ORCHESTRATOR_API=https://orchestrator.myservice.com:3000/api
- 或者提供所有
orchestrator
端点,并orchestrator-client
自动选择领导者(不需要代理),例如
export ORCHESTRATOR_API="https://orchestrator.host1:3000/api https://orchestrator.host2:3000/api https://orchestrator.host3:3000/api"
- 您可以在 中设置环境
/etc/profile.d/orchestrator-client.sh
。如果该文件存在,它将被内联orchestrator-client
。
使用示例
显示当前已知的集群(复制拓扑):
<span style="background-color:var(--color-canvas-subtle)"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>orchestrator-client -c clusters
</code></span></span></span></span>
发现、忘记一个例子:
<span style="background-color:var(--color-canvas-subtle)"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>orchestrator-client -c discover -i 127.0.0.1:22987
orchestrator-client -c forget -i 127.0.0.1:22987
</code></span></span></span></span>
打印拓扑实例的 ASCII 树。通过以下方式传递集群名称-i
(参见clusters
上面的命令):
<span style="background-color:var(--color-canvas-subtle)"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>orchestrator-client -c topology -i 127.0.0.1:22987
</code></span></span></span></span>
示例输出:
<span style="background-color:var(--color-canvas-subtle)"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>127.0.0.1:22987 + 127.0.0.1:22989 + 127.0.0.1:22988 + 127.0.0.1:22990 </code></span></span></span>
在拓扑中移动副本:
<span style="background-color:var(--color-canvas-subtle)"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>orchestrator-client -c relocate -i 127.0.0.1:22988 -d 127.0.0.1:22987
</code></span></span></span></span>
结果拓扑:
<span style="background-color:var(--color-canvas-subtle)"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>127.0.0.1:22987 + 127.0.0.1:22989 + 127.0.0.1:22988 + 127.0.0.1:22990 </code></span></span></span>
ETC。
幕后花絮
命令行界面为 API 调用提供了一个很好的包装器,然后其输出从 JSON 格式转换为文本格式。
例如,命令:
orchestrator-client -c discover -i 127.0.0.1:22987
翻译为(为了方便起见,此处进行了简化):
curl "$ORCHESTRATOR_API/discover/127.0.0.1/22987" | jq '.Details | .Key'
元命令
orchestrator-client -c help
:列出所有可用的命令orchestrator-client -c which-api
:API 端点orchestrator-client
将用于调用命令的输出。当通过 提供多个端点时,这非常有用$ORCHESTRATOR_API
。orchestrator-client -c api -path clusters
:调用通用 HTTP API 调用(在本例中clusters
)并返回原始 JSON 响应。