本記事では、obshell-sdk-goを使用してクラスタ内の指定されたゾーンおよびそのゾーン内のノードを削除する方法について説明します。
説明
まずは obshell-sdk-goクイックスタート を参照して、obshell-sdk-goの使用方法を確認することを推奨します。
注意事項
クラスタのスケールダウンを行う前に、以下の要件に注意する必要があります:
リクエストのクライアントに対応するノードは、スケールダウン対象のクラスタ内に存在し、削除対象のゾーンには含まれていない必要があります。
obshellは正常に実行されている必要があります。
削除対象のゾーン上にユニットは存在しません。
サンプルコード
タスクの同期実行
タスクの非同期実行
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// クライアントインスタンスを作成します。ノードアドレスは'10.10.10.1'、ポートは2886です。
// 所属クラスタのroot@sysパスワードは'****'です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
if err != nil {
panic(err)
}
// zone3をクラスタから削除します。
req := client.V1().NewDeleteZoneRequest("zone3")
if _, err := client.V1().DeleteZoneSyncWithRequest(req); err != nil {
panic(err)
}
}
package main
import (
"github.com/oceanbase/obshell-sdk-go/services"
)
func main() {
// クライアントインスタンスを作成します。ノードアドレスは'10.10.10.1'、ポートは2886です。
// クラスタのroot@sysパスワードは'****'です。
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
if err != nil {
panic(err)
}
// zone3をクラスタから削除します。
req := client.V1().NewDeleteZoneRequest("zone3")
dag, err := client.V1().DeleteZoneWithRequest(req)
if err != nil {
panic(err)
}
// タスクが成功するまで待機します。
if dag != nil && dag.GenericDTO != nil {
if _, err = client.V1().WaitDagSucceed(dag.GenericID); err != nil {
panic(err)
}
}
}