本記事では、obshell-sdk-goを使用してクラスタを停止する方法について説明します。
説明
まず、obshell-sdk-go クイックスタート を参照し、obshell-sdk-goの使用方法を確認することをお勧めします。
注意事項
obshellが正常に実行されていることを確認してください。
リクエスト元のclientが対応するノードが停止対象のクラスタ内にあることを確認してください。
サンプルコード
タスクの同期的実行
タスクの非同期実行
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
"github.com/oceanbase/obshell-sdk-go/services/v1"
)
func main() {
// clientインスタンスを作成します。ノードのアドレスは '10.10.10.1'、ポートは2886です。
// 所在クラスタのroot@sysパスワードは '****' です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "***")
if err != nil {
panic(err)
}
// クラスタ内のすべてのOBServerノードを強制的に停止します。
req := client.V1().NewStopRequest(v1.SCOPE_GLOBAL).SetForce()
if _, err = client.V1().StopSyncWithRequest(req); err != nil {
panic(err)
}
}
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
"github.com/oceanbase/obshell-sdk-go/services/v1"
)
func main() {
// クライアントインスタンスを作成します。ノードのアドレスは '10.10.10.1'、ポートは2886です。
// 所在クラスタのroot@sysパスワードは'****'です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "***")
if err != nil {
panic(err)
}
// クラスタ内のすべてのOBServerノードを強制停止します。
req := client.V1().NewStopRequest(v1.SCOPE_GLOBAL).SetForce()
dag, err := client.V1().StopWithRequest(req)
if err != nil {
panic(err)
}
// タスクが成功するまで待機します。
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
}