obshellを使用して、OceanBaseデータベースのテナントレベルのバックアップを開始する方法は2種類あります:
APIを呼び出してバックアップを開始する
obshellコマンドを使用してバックアップを開始する
本記事では、3レプリカのOceanBaseクラスタを例に、obshellを使用してテナントレベルのバックアップを開始する方法について説明します。
前提条件
OceanBaseクラスタがobshellで運用管理されており、詳細な判断方法と引き継ぎ操作については、非obshellデプロイメントクラスタの引き継ぎを参照してください。
OceanBaseクラスタのすべてのOBServerノードとobshellが正常に稼働しています。
デプロイメントモード
本記事では、3台のマシンを使用する場合の状況を以下に示します(obshellはデフォルトポート2886を使用します):
| ロール | マシン | 備考 |
|---|---|---|
| OBServerノード | 10.10.10.1 | OceanBaseデータベースzone1 |
| OBServerノード | 10.10.10.2 | OceanBaseデータベースzone2 |
| OBServerノード | 10.10.10.3 | OceanBaseデータベースzone3 |
APIによるバックアップ
説明
obshellは呼び出されたAPIに対してセキュリティ検証を行います。そのため、APIを呼び出す前に、APIハイブリッド暗号化の記事を参照し、リクエストを暗号化する必要があります。また、curlコマンドに暗号化済みのリクエストヘッダー(${request_headers})とリクエストボディ(${request_body})を設定してください。
ステップ1:(オプション)テナントレベルのバックアップ設定を設定する
任意のobshellの/api/v1/tenant/:name/backup/configインターフェースを呼び出すことで、テナントレベルのバックアップ設定を行うことができます。
説明
以前にテナントレベルのバックアップが設定されている場合は、このインターフェースを複数回呼び出す必要はありません。
コマンドラインで対応するAPIインターフェースを呼び出す方法については、単一テナントのバックアップ設定を参照してください。このインターフェースは非同期タスクを作成します。タスクの進行状況を確認する方法については、タスクの詳細情報を取得するを参照してください。タスクが完了するまで待機すると、設定が完了します。
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X POST -d '${request_body}' http://10.10.10.1:2886/api/v1/tenant/tenant1/backup/config
暗号化前のリクエストボディの内容は次のとおりです:
{
"data_base_uri":"file:///data/backup/tenant/data",
"archive_base_uri":"file:///data/backup/tenant/archive",
"log_archive_concurrency":50,
"ha_low_thread_score":18,
"piece_switch_interval":"3d",
"archive_lag_target":"1h",
"delete_policy":{
"policy":"",
"recovery_window":"2d"
}
}
obshell-sdk-pythonを使用して、対応するAPIメソッドをリクエストする方法については、単一テナントのバックアップ設定を設定するを参照してください。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.post_tenant_backup_config_sync(
"file:///data/backup/tenant/data",
"file:///data/backup/tenant/archive",
log_archive_concurrency=100,
)
...
obshell-sdk-goによる対応APIメソッドのリクエスト方法については、単一テナントのバックアップ設定を設定するを参照してください。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
request := client.V1().NewTenantBackupConfigPostRequest("tenant1", "file:///data/backup/data", "file:///data/backup/archive")
request.SetLogArchiveConcurrency(100)
dag, err := client.V1().TenantBackupConfigSyncWithRequest(request)
...
ステップ2:テナントレベルのバックアップを開始する
任意のobshellの/api/v1/tenant/:name/backupインターフェースを呼び出すことで、テナントレベルのバックアップを開始できます。
コマンドラインで対応するAPIインターフェースを呼び出す方法については、単一テナントのバックアップを開始するを参照してください。このインターフェースは非同期タスクを作成します。タスクの進捗状況を確認する方法については、タスクの詳細情報を取得するを参照してください。タスクが完了するまで待機すると、バックアップが終了します。
[admin@test001 ~]$ curl -H "Content-Type: application/json" -H 'X-OCS-Header:${request_headers}' -X POST -d '${request_body}' http://10.10.10.1:2886/api/v1/tenant/tenant1/backup
暗号化前のリクエストボディの内容は次のとおりです:
{
"mode":"full"
}
obshell-sdk-pythonを使用して対応するAPIメソッドをリクエストする方法については、単一テナントのバックアップを開始するを参照してください。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.start_tenant_backup_sync("tenant1", "full")
...
obshell-sdk-goによる対応するAPIメソッドのリクエスト方法については、単一テナントバックアップを実行するを参照してください。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
request := client.V1().NewTenantBackupRequest("tenant1")
request.SetBackupMode("full")
dag, err := client.V1().TenantBackupSyncWithRequest(request)
...
ステップ3:テナントレベルのバックアップタスクを確認する
任意のobshellの/api/v1/tenant/:name/backup/overviewインターフェースを呼び出すことで、テナントレベルのバックアップタスクを確認できます。
コマンドラインで対応するAPIインターフェースを呼び出す方法については、単一テナントのバックアップタスクを表示するを参照してください。
[admin@test001 ~]$ curl
-H "Content-Type: application/json"
-X GET
http://10.10.10.1:2886/api/v1/tenant/tenant1/backup/overview
obshell-sdk-pythonを使用して対応するAPIメソッドをリクエストする方法については、単一テナントのバックアップタスクの確認を参照してください。
...
client = ClientSet("10.10.10.1", 2886, PasswordAuth("****"))
client.v1.get_tenant_backup_overview("tenant1")
...
obshell-sdk-goによる対応するAPIメソッドのリクエスト方法については、単一テナントバックアップタスクの詳細を表示するを参照してください。
...
client, err := services.NewClientWithPassword("10.10.10.1", 2886, "****")
res, err := client.V1().GetTenantBackupOverview("tenant1")
...
obshellコマンドによるバックアップ
ステップ1:バックアップの実行
任意のノードでobshell tenant backupコマンドを実行することで、バックアップ設定が完了し、1回のバックアップがトリガーされます。詳細については、obshell テナントコマンドグループのobshell tenant backupセクションを参照してください。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell tenant backup tenant1 -a 'file:///data/backup/archive' -d 'file:///data/backup/data'
ステップ2:バックアップ情報を照会する
使用するコマンドの詳細については、obshell バックアップコマンドグループのobshell backup showセクションを参照してください。
[admin@test001 ~]$ /home/admin/oceanbase/bin/obshell backup show -t tenant1