バックアップ ストレージ
TiDB は、Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage、NFS へのバックアップ データの保存をサポートしています。具体的には、 br
のコマンドの--storage
または-s
パラメーターでバックアップstorageの URL を指定できます。このドキュメントでは、さまざまな外部storageサービスのURL 形式と認証 、およびサーバー側の暗号化を紹介します。
認証情報を TiKV に送信する
CLI パラメータ | 説明 | デフォルト値 |
---|---|---|
--send-credentials-to-tikv | BRによって取得された資格情報を TiKV に送信するかどうかを制御します。 | true |
デフォルトでは、storageシステムとして Amazon S3、GCS、または Azure Blob Storage を使用する場合、 BR は各 TiKV ノードに認証情報を送信します。この動作は構成を簡素化し、パラメーター--send-credentials-to-tikv
(または略して-c
) によって制御されます。
この操作は、クラウド環境には適用されないことに注意してください。 IAMロール認証を使用する場合、各ノードには独自のロールと権限があります。この場合、資格情報の送信を無効にするには、 --send-credentials-to-tikv=false
(または略して-c=0
) を構成する必要があります。
./br backup full -c=0 -u pd-service:2379 --storage 's3://bucket-name/prefix'
BACKUP
ステートメントとRESTORE
ステートメントを使用してデータをバックアップまたは復元する場合は、 SEND_CREDENTIALS_TO_TIKV = FALSE
オプションを追加できます。
BACKUP DATABASE * TO 's3://bucket-name/prefix' SEND_CREDENTIALS_TO_TIKV = FALSE;
URL 形式
URL 形式の説明
このセクションでは、storageサービスの URL 形式について説明します。
[scheme]://[host]/[path]?[parameters]
- Amazon S3
- GCS
- Azure Blob Storage
scheme
:s3
host
:bucket name
parameters
:access-key
: アクセスキーを指定します。secret-access-key
: シークレット アクセス キーを指定します。use-accelerate-endpoint
: Amazon S3 で加速エンドポイントを使用するかどうかを指定します (デフォルトはfalse
)。endpoint
: S3 互換サービスのカスタム エンドポイントの URL を指定します (たとえば、<https://s3.example.com/>
)。force-path-style
: 仮想ホスト スタイル アクセスではなく、パス スタイル アクセスを使用します (デフォルトはtrue
)。storage-class
: アップロードされたオブジェクトのstorageクラスを指定します (たとえば、STANDARD
またはSTANDARD_IA
)。sse
: アップロードされたオブジェクトの暗号化に使用されるサーバー側の暗号化アルゴリズムを指定します (値のオプション: `、
AES256、または
aws:kms` )。sse-kms-key-id
:sse
がaws:kms
に設定されている場合、KMS ID を指定します。acl
: アップロードされたオブジェクトの既定の ACL を指定します (たとえば、private
またはauthenticated-read
)。
scheme
:gcs
またはgs
host
:bucket name
parameters
:credentials-file
: 移行ツール ノードの資格情報 JSON ファイルへのパスを指定します。storage-class
: アップロードされたオブジェクトのstorageクラスを指定します (たとえば、STANDARD
またはCOLDLINE
)predefined-acl
: アップロードされたオブジェクトの事前定義された ACL を指定します (たとえば、private
またはproject-private
)
scheme
:azure
またはazblob
host
:container name
parameters
:account-name
:storageのアカウント名を指定します。account-key
: アクセスキーを指定します。access-tier
: アップロードされたオブジェクトのアクセス層を指定します (例:Hot
、Cool
、またはArchive
)。デフォルトの値はHot
です。
URL の例
このセクションでは、 external
host
パラメーター (前のセクションではbucket name
またはcontainer name
) として使用して、いくつかの URL の例を示します。
- Amazon S3
- GCS
- Azure Blob Storage
スナップショット データを Amazon S3 にバックアップする
./br restore full -u "${PD_IP}:2379" \
--storage "s3://external/backup-20220915?access-key=${access-key}&secret-access-key=${secret-access-key}"
Amazon S3 からスナップショット データを復元する
./br restore full -u "${PD_IP}:2379" \
--storage "s3://external/backup-20220915?access-key=${access-key}&secret-access-key=${secret-access-key}"
スナップショット データを GCS にバックアップする
./br backup full --pd "${PD_IP}:2379" \
--storage "gcs://external/backup-20220915?credentials-file=${credentials-file-path}"
GCS からスナップショット データを復元する
./br restore full --pd "${PD_IP}:2379" \
--storage "gcs://external/backup-20220915?credentials-file=${credentials-file-path}"
スナップショット データを Azure Blob Storage にバックアップする
./br backup full -u "${PD_IP}:2379" \
--storage "azure://external/backup-20220915?account-name=${account-name}&account-key=${account-key}"
Azure Blob Storage のスナップショット バックアップ データからtest
データベースを復元する
./br restore db --db test -u "${PD_IP}:2379" \
--storage "azure://external/backup-20220915account-name=${account-name}&account-key=${account-key}"
認証
バックアップ データをクラウドstorageシステムに保存する場合、特定のクラウド サービス プロバイダーに応じて認証パラメーターを構成する必要があります。このセクションでは、Amazon S3、GCS、および Azure Blob Storage で使用される認証方法と、対応するstorageサービスへのアクセスに使用されるアカウントを構成する方法について説明します。
- Amazon S3
- GCS
- Azure Blob Storage
バックアップの前に、S3 のバックアップ ディレクトリにアクセスするために次の権限を設定します。
- バックアップ中にバックアップ ディレクトリにアクセスするための TiKV および Backup & Restore ( BR ) の最小権限:
s3:ListBucket
、s3:PutObject
、およびs3:AbortMultipartUpload
- 復元中に TiKV およびBR がバックアップ ディレクトリにアクセスするための最小権限:
s3:ListBucket
およびs3:GetObject
バックアップ ディレクトリをまだ作成していない場合は、 バケットを作成するを参照して、指定したリージョンに S3 バケットを作成します。必要に応じて、 フォルダを作成するを参照してバケットにフォルダーを作成することもできます。
次のいずれかの方法を使用して、S3 へのアクセスを構成することをお勧めします。
方法 1: アクセス キーを指定する
URLにアクセスキーとシークレットアクセスキーを指定すると、指定したアクセスキーとシークレットアクセスキーで認証が行われます。 URL でキーを指定する以外に、次の方法もサポートされています。
- BR は、環境変数
$AWS_ACCESS_KEY_ID
および$AWS_SECRET_ACCESS_KEY
を読み取ります。 - BR は、環境変数
$AWS_ACCESS_KEY
および$AWS_SECRET_KEY
を読み取ります。 - BR は、環境変数
$AWS_SHARED_CREDENTIALS_FILE
で指定されたパスにある共有資格情報ファイルを読み取ります。 - BR は
~/.aws/credentials
パスの共有認証情報ファイルを読み取ります。
- BR は、環境変数
方法 2: IAMロールに基づくアクセス
S3 にアクセスできるIAMロールを、TiKV およびBRノードが実行される EC2 インスタンスに関連付けます。関連付け後、 BR は追加設定なしで S3 のバックアップ ディレクトリに直接アクセスできます。
br backup full --pd "${PD_IP}:2379" \ --storage "s3://${host}/${path}"
アクセス キーを指定することで、GCS へのアクセスに使用するアカウントを構成できます。 credentials-file
パラメータを指定すると、指定されたcredentials-file
を使用して認証が実行されます。 URL でキーを指定する以外に、次の方法もサポートされています。
- BR は、環境変数
$GOOGLE_APPLICATION_CREDENTIALS
で指定されたパスにあるファイルを読み取ります - BR はファイルを読み取ります
~/.config/gcloud/application_default_credentials.json
。 - クラスターが GCE または GAE で実行されている場合、 BR はメタデータサーバーから資格情報を取得します。
方法 1: アクセス キーを指定する
URL に
account-name
とaccount-key
を指定すると、指定したアクセス キーとシークレット アクセス キーを使用して認証が行われます。 URL でキーを指定する方法の他に、 BR は環境変数$AZURE_STORAGE_KEY
からキーを読み取ることもできます。方法 2: バックアップと復元に Azure AD を使用する
BRが実行されているノードで、環境変数
$AZURE_CLIENT_ID
、$AZURE_TENANT_ID
、および$AZURE_CLIENT_SECRET
を構成します。TiUPを使用してクラスターを起動すると、TiKV は systemd サービスを使用します。次の例は、TiKV 用に前述の 3 つの環境変数を構成する方法を示しています。
ノート:
この方法を使用する場合は、手順 3 で TiKV を再起動する必要があります。クラスターを再起動できない場合は、方法 1: バックアップと復元用のアクセス キーを指定します。
このノードの TiKV ポートが
24000
、つまり systemd サービスの名前がtikv-24000
であるとします。systemctl edit tikv-24000TiKV 構成ファイルを編集して、3 つの環境変数を構成します。
[Service] Environment="AZURE_CLIENT_ID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" Environment="AZURE_TENANT_ID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" Environment="AZURE_CLIENT_SECRET=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"構成をリロードし、TiKV を再起動します。
systemctl daemon-reload systemctl restart tikv-24000
コマンド ラインで開始された TiKV およびBRの Azure AD 情報を構成するには、次のコマンドを実行して、環境変数
$AZURE_CLIENT_ID
、$AZURE_TENANT_ID
、および$AZURE_CLIENT_SECRET
が動作環境で構成されているかどうかを確認するだけで済みます。echo $AZURE_CLIENT_ID echo $AZURE_TENANT_ID echo $AZURE_CLIENT_SECRETBRを使用してデータを Azure Blob Storage にバックアップします。
./br backup full -u "${PD_IP}:2379" \ --storage "azure://external/backup-20220915?account-name=${account-name}"
サーバー側の暗号化
Amazon S3 サーバー側の暗号化
BR は、データを Amazon S3 にバックアップする際のサーバー側の暗号化をサポートしています。 BRを使用して、S3 サーバー側の暗号化用に作成した AWS KMS キーを使用することもできます。詳細については、 BR S3 サーバー側の暗号化を参照してください。
storageサービスがサポートするその他の機能
BR v6.3.0 は AWS S3 オブジェクト ロックをサポートします。この機能を有効にすると、バックアップ データの改ざんや削除を防ぐことができます。