Esta página descreve o processo de mudança de contentores de uma localização para outra. Para obter informações sobre a mudança de contentores, consulte o artigo Mudança de contentores.
Antes de começar
Antes de poder mudar a localização dos contentores, conclua os seguintes passos:
Verifique as quotas e os limites para garantir que a nova localização tem quotas suficientes para acomodar os dados do contentor.
Determine o tipo de mudança de localização do contentor para compreender se é necessário tempo de inatividade de gravação.
Se usar relatórios de inventário, guarde as suas configurações.
Obtenha as funções necessárias, que são descritas na secção seguinte.
Obtenha as funções necessárias
Para receber as autorizações de que
precisa para mudar os contentores,
peça ao seu administrador que lhe conceda a função de
administrador de armazenamento (roles/storage.admin
)
do IAM no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para mudar a localização dos contentores. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para mudar a localização dos contentores:
-
Para mudar um contentor:
storage.buckets.relocate
-
Para ver o estado de uma operação de mudança de localização de um contentor:
storage.bucketOperations.get
-
Para ver a lista de operações de mudança de localização de contentores de um projeto:
storage.bucketOperations.list
-
Para cancelar uma operação de mudança de localização de um contentor:
storage.bucketOperations.cancel
-
Para ver os metadados de um contentor durante as fases de teste e cópia incremental de dados da mudança de localização do contentor:
storage.buckets.get
-
Para obter um objeto num contentor que quer mudar de localização:
storage.objects.get
-
Para listar os objetos num contentor que quer mudar de localização:
storage.objects.list
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Mude a localização dos contentores
Esta secção descreve o processo de mudança de localização de contentores do Cloud Storage de uma localização para outra. Quando muda um contentor de localização, inicia o processo de cópia de dados incremental, monitoriza o processo e, em seguida, inicia o passo de sincronização final. Para mais informações sobre estes passos, consulte o artigo Compreenda o processo de mudança de localização do contentor.
Faça uma execução de ensaio
Para minimizar potenciais problemas durante o processo de mudança de grupos, recomendamos que faça um teste prévio. Um teste prévio simula o processo de mudança de localização do contentor sem mover dados, o que ajuda a detetar e resolver problemas antecipadamente. O teste de simulação verifica as seguintes incompatibilidades:
- Chaves de encriptação geridas pelo cliente (CMEK) ou chaves de encriptação fornecidas pelo cliente (CSEK)
- Políticas de retenção bloqueadas
- Objetos com retenções temporárias
- Carregamentos multipartes
Embora um teste prévio não possa identificar todos os problemas possíveis, uma vez que alguns problemas podem surgir apenas durante a migração em direto devido a fatores como a disponibilidade de recursos em tempo real, reduz o risco de enfrentar problemas demorados durante a mudança real.
Linha de comandos
Simule a execução de ensaio da mudança de localização do contentor:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION --dry-run
Onde:
BUCKET_NAME
é o nome do contentor que quer mudar de localização.LOCATION
é a localização de destino do contentor.
Depois de iniciar um ensaio, é iniciada uma operação de longa duração. Vai receber um ID da operação e uma descrição da operação. Acompanhe o progresso e a conclusão do teste de execução obtendo os detalhes da operação de longa duração.
Se o teste de execução revelar problemas, resolva-os antes de avançar para o Passo de início da cópia de dados incremental.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Crie um ficheiro JSON que contenha as definições do contentor, que tem de incluir os parâmetros
destinationLocation
evalidateOnly
. Consulte aBuckets: relocate
documentação para ver uma lista completa de definições. Seguem-se as definições comuns a incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "true" }
Onde:
DESTINATION_LOCATION
é a localização de destino do contentor.LOCATIONS
é uma lista de códigos de localização a usar para a região dupla configurável.- O valor
validateOnly
está definido comotrue
para fazer um ensaio.
Use
cURL
para chamar a API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Onde:
JSON_FILE_NAME
é o nome do ficheiro JSON que criou.BUCKET_NAME
é o nome do contentor que quer mudar de localização.
Depois de iniciar um ensaio, é iniciada uma operação de longa duração. O teste de execução tem êxito quando as seguintes condições são cumpridas:
- A simulação não comunica erros.
O recurso
operations
devolve um valor do campodone
detrue
.{ "kind": "storage#operation", "name": "projects/_/buckets/bucket/operations/operation_id", "metadata": { "@type": OperationMetadataType*, metadata OperationMetadata* }, "done": "true", "response": { "@type": ResponseResourceType*, response ResponseResource* } }
Se o teste de execução revelar problemas, resolva-os antes de avançar para o Passo de início da cópia de dados incremental.
Inicie a cópia de dados incremental
Linha de comandos
Inicie a operação de mudança de localização do contentor:
gcloud storage buckets relocate gs://BUCKET_NAME --location=LOCATION
Onde:
BUCKET_NAME
é o nome do contentor que quer mudar de localização.LOCATION
é a localização de destino do contentor.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Crie um ficheiro JSON que contenha as definições do contentor. Consulte a
Buckets: relocate
documentação para ver uma lista completa de definições. Seguem-se as definições comuns a incluir:{ "destinationLocation": "DESTINATION_LOCATION", "destinationCustomPlacementConfig": { "dataLocations": [ LOCATIONS, ... ] }, "validateOnly": "false" }
Onde:
DESTINATION_LOCATION
é a localização de destino do contentor.LOCATIONS
é uma lista de códigos de localização a usar para a região dupla configurável.validateOnly
está definido comofalse
para iniciar o passo de cópia de dados incremental da mudança de localização do contentor.
Use
cURL
para chamar a API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket=BUCKET_NAME/relocate"
Onde:
JSON_FILE_NAME
é o nome do ficheiro JSON que criou.BUCKET_NAME
é o nome do contentor que quer mudar de localização.
Monitorize a cópia de dados incremental
O processo de mudança de localização do contentor é uma operação de longa duração que tem de ser monitorizada para ver o respetivo progresso. Pode verificar regularmente a lista de operações de longa duração para ver o estado do passo de cópia de dados incremental. Para obter informações sobre como aceder aos detalhes de uma operação de longa duração, listar ou cancelar operações de longa duração, consulte o artigo Use operações de longa duração no Cloud Storage.
O exemplo seguinte mostra o resultado gerado por uma operação de cópia de dados incremental:
done: false kind: storage#operation metadata: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketMetadata commonMetadata: createTime: '2024-10-21T04:26:59.666Z endTime: '2024-12-29T23:39:53.340Z' progressPercent: 99 requestedCancellation: false type: relocate-bucket updateTime: '2024-10-21T04:27:03.2892' destinationLocation: US-CENTRAL1 finalizationState: 'READY' progress: byteProgressPercent: 100 discoveredBytes: 200 remainingBytes: 0 discoveredObjectCount: 10 remainingObjectCount: 8 objectProgressPercent: 100 discoveredSyncCount: 8 remainingSyncCount: 0 syncProgressPercent: 100 relocationState: SYNCING sourceLocation: US validateOnly: false estimatedWriteDowntimeDuration: '7200s' writeDowntimeExpireTime: '2024-12-30T10:34:01.786Z' name: projects//buckets/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w response: '@type': type.googleapis.com/google.storage.control.v2.RelocateBucketResponse selfLink: https://storage.googleusercontent.com/storage/v1_ds/b/my-bucket1/operations/Bar7-1b0khdew@nhenUQRTF_R-Kk4dQ5V1f8fzezkFcPh3XMvlTqJ6xhnqJ1h_QXFIeAirrEqkjgu4zPKSRD6WSSG5UGXil6w
A tabela seguinte fornece informações sobre os campos principais no resultado gerado pela operação de cópia de dados incremental:
Nome do campo | Descrição | Valores possíveis |
---|---|---|
done |
Indica a conclusão da operação de mudança de localização do contentor. | true , false |
kind |
Indica que este recurso representa uma operação de armazenamento. | |
metadata |
Faculta informações sobre a operação. | |
metadata.@type |
Indica o tipo de operação como mudança de localização do contentor. | |
metadata.commonMetadata |
Metadados comuns a todas as operações. | |
metadata.commonMetadata.createTime |
A hora em que a operação de longa duração foi criada. | |
metadata.commonMetadata.endTime |
A hora em que a operação de longa duração terminou. | |
metadata.commonMetadata.progressPercent |
O progresso estimado da operação de longa duração, em percentagem. | Entre 0 e 100 %. Um valor de -1 significa que o progresso é desconhecido ou não aplicável. |
metadata.commonMetadata.requestedCancellation |
Indica se o utilizador pediu o cancelamento da operação de longa duração. | true , false |
metadata.commonMetadata.type |
Indica o tipo de operação de longa duração. | |
metadata.commonMetadata.updateTime |
A hora da última atualização da operação de longa duração. | |
metadata.destinationLocation |
A localização de destino do contentor. | |
metadata.finalizationState |
Indica a prontidão para iniciar o passo de sincronização final. |
|
metadata.progress |
Detalhes do progresso da operação de mudança. | |
metadata.progress.byteProgressPercent |
Progresso dos bytes copiados em percentagem. | Entre 0 e 100 %. Um valor de -1 significa que o progresso é desconhecido ou não aplicável. |
metadata.progress.discoveredBytes |
Número de bytes descobertos no contentor de origem. | |
metadata.progress.discoveredObjectCount |
Número de objetos descobertos no contentor de origem. | |
metadata.progress.discoveredSyncCount |
Número de atualizações de metadados de objetos detetadas no contentor de origem. | |
metadata.progress.objectProgressPercent |
Progresso dos objetos copiados em percentagem. | Entre 0 e 100 %. Um valor de -1 significa que o progresso é desconhecido ou não aplicável. |
metadata.progress.remainingBytes |
Número de bytes restantes a copiar do contentor de origem para o contentor de destino. | |
metadata.progress.remainingObjectCount |
Número de objetos restantes a copiar do contentor de origem para o contentor de destino. | |
metadata.progress.remainingSyncCount |
Número de atualizações de metadados de objetos restantes a sincronizar. | |
metadata.progress.syncProgressPercent |
Progresso das atualizações de metadados de objetos a sincronizar em percentagem. | Entre 0 e 100 %. Um valor de -1 significa que o progresso é desconhecido ou não aplicável. |
metadata.relocationState |
Estado geral da operação de mudança de localização do contentor. |
|
metadata.sourceLocation |
A localização de origem do contentor. | |
metadata.validateOnly |
Indica se foi iniciada uma execução de teste da mudança de localização do contentor. | true , false |
metadata.estimatedWriteDowntimeDuration |
A duração estimada do período de descanso de gravação; preenchida quando o elemento finalizationState é READY . |
O valor mínimo é 7200s . |
metadata.writeDowntimeExpireTime |
A hora em que o período de descanso de escrita expira. | |
name |
O identificador exclusivo desta operação de mudança de localização. Formato: projects/_/buckets/bucket-name/operations/operation-id |
|
response |
A resposta da operação. | |
response.@type |
O tipo de resposta. | |
selfLink |
Um link para esta operação. |
Se tiver problemas ao interagir com outras funcionalidades do Cloud Storage, consulte as Limitações.
Inicie o passo de sincronização final
O passo de sincronização final envolve um período durante o qual não pode realizar operações de escrita no contentor. Recomendamos que agende o passo de sincronização final para uma altura que minimize a interrupção das suas aplicações.
Antes de continuar, confirme que o contentor está totalmente preparado verificando o valor de finalizationState
no resultado do passo de cópia de dados
incremental. O valor finalizationState
tem de ser READY
para continuar.
Se iniciar o passo de sincronização final prematuramente, o comando devolve uma mensagem de erro The relocate bucket operation is not ready to advance to finalization running state
, mas o processo de mudança continua.
Recomendamos que aguarde até que o valor de progressPercent
seja 99
antes de iniciar o passo de sincronização final.
Linha de comandos
Inicie o passo de sincronização final da operação de mudança de localização do contentor assim que o valor de finalizationState
for READY
:
gcloud storage buckets relocate --finalize --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Onde:
BUCKET_NAME
é o nome do contentor que quer mudar de localização.OPERATION_ID
é o ID da operação de longa duração, que é devolvido na resposta dos métodos que chama. Por exemplo, a seguinte resposta é devolvida ao chamargcloud storage operations list
e o ID da operação de longa duração éAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
`name: projects/_/buckets/my-bucket/operations/AbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74`
Defina a flag ttl
para ter maior controlo sobre o processo de mudança. Por exemplo:
gcloud storage buckets relocate --finalize --ttl TTL_DURATION --operation=projects/_/buckets/BUCKET_NAME/operations/OPERATION_ID
Onde:
TTL_DURATION
é o tempo de vida (TTL) para a fase de inatividade de gravação durante um processo de mudança. É expresso como uma string, como 12h
para 12 horas. O TTL_DURATION
determina a duração máxima permitida
para a fase de inatividade de gravação. Se o tempo de inatividade de gravação exceder este limite,
o processo de mudança reverte automaticamente para o passo de cópia incremental
e as operações de gravação no contentor são reativadas. O valor tem de estar dentro do intervalo de 6h
(6 horas) a 48h
(48 horas). Se não for especificado, o valor predefinido é 12h
(12 horas).
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Crie um ficheiro JSON que contenha as definições para a mudança de localização do contentor. Consulte a
Buckets: advanceRelocateBucket
documentação para ver uma lista completa de definições. Seguem-se as definições comuns a incluir:{ "expireTime": "EXPIRE_TIME", "ttl": "TTL_DURATION" }
Onde:
EXPIRE_TIME
é a hora em que a indisponibilidade de gravação expira.TTL_DURATION
é o tempo de vida (TTL) para a fase de inatividade de gravação durante um processo de mudança. É expresso como uma string, como12h
para 12 horas. OTTL_DURATION
determina a duração máxima permitida para a fase de inatividade de gravação. Se o tempo de inatividade de gravação exceder este limite, o processo de mudança reverte automaticamente para o passo de cópia incremental e as operações de gravação no contentor são reativadas. O valor tem de estar dentro do intervalo de6h
(6 horas) a48h
(48 horas). Se não for especificado, o valor predefinido é12h
(12 horas).
Use
cURL
para chamar a API JSON:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/bucket/BUCKET_NAME/operations/OPERATION_ID/advanceRelocateBucket"
Onde:
JSON_FILE_NAME
é o nome do ficheiro JSON que criou.BUCKET_NAME
é o nome do contentor que quer mudar de localização.OPERATION_ID
é o ID da operação de longa duração, que é devolvido na resposta dos métodos que chama. Por exemplo, a seguinte resposta é devolvida ao chamarOperations: list
e o ID da operação de longa duração éAbCJYd8jKT1n-Ciw1LCNXIcubwvij_TdqO-ZFjuF2YntK0r74
.
Valide o processo de mudança de localização do contentor
Após iniciar uma mudança de localização, verifique se foi concluída com êxito. Esta secção fornece orientações sobre como confirmar a transferência bem-sucedida de dados.
Valide o sucesso do processo de mudança através dos seguintes métodos:
Verificar operações de longa duração: a mudança de localização do contentor é uma operação de longa duração. Pode sondar a operação de longa duração através do método
operation id
para monitorizar o progresso da operação e confirmar a respetiva conclusão bem-sucedida verificando o estadosuccess
. Isto envolve consultar periodicamente o estado da operação até atingir um estado terminal. Para obter informações sobre a monitorização de operações de longa duração, consulte o artigo Use operações de longa duração no Cloud Storage.Analise as entradas dos registos de auditoria do Cloud: os registos de auditoria do Cloud fornecem um registo detalhado de eventos e operações no seu Google Cloud ambiente. Pode analisar as entradas dos registos de auditoria do Google Cloud associadas à mudança para validar o êxito da mesma. Analise os registos para verificar se existem erros, avisos ou comportamentos inesperados que possam indicar problemas durante a transferência. Para ver informações sobre a visualização de registos do Cloud Audit Logs, consulte o artigo Visualizar registos de auditoria.
As seguintes entradas do registo ajudam a determinar se a mudança foi bem-sucedida ou não:
Relocação bem-sucedida:
Relocate bucket succeeded. All existing objects are now in the new placement configuration.
Falha na mudança de localização:
Relocate bucket has failed. Bucket location remains unchanged.
Através das notificações do Pub/Sub, também pode configurar alertas que enviam uma notificação quando o evento de êxito ou falha específico aparece nos registos. Para obter informações sobre a configuração de notificações do Pub/Sub, consulte o artigo Configurar notificações do Pub/Sub para o Cloud Storage.
Conclua as tarefas de mudança de localização do contentor de publicação
Depois de mudar o seu contentor com êxito, conclua os seguintes passos:
- Opcional: restaure os controlos de acesso baseados em etiquetas no seu contentor.
- As configurações do relatório de inventário existentes não são preservadas durante o processo de mudança e tem de as recriar manualmente. Para obter informações sobre como criar uma configuração de relatório de inventário, consulte o artigo Crie uma configuração de relatório de inventário.
- Atualize as configurações de infraestrutura como código, como o Terraform e o conector de configuração do Google Kubernetes Engine, para especificar a nova localização do contentor.
- Os pontos finais regionais estão associados a localizações específicas e tem de modificar o código da aplicação para refletir o novo ponto final.
Como processar operações de mudança de contentor com falhas
Considere os seguintes fatores antes de processar operações de mudança de localização de contentores com falhas:
Uma mudança de localização do contentor com falhas pode deixar recursos obsoletos, como ficheiros temporários ou cópias de dados incompletas, no destino. Tem de aguardar entre 7 e 14 dias antes de iniciar outra mudança de contentor para o mesmo destino. Pode iniciar imediatamente uma mudança de localização do contentor para um destino diferente.
Se a localização de destino não for a localização ideal para os seus dados, é recomendável reverter a mudança de localização. No entanto, não pode iniciar uma mudança de localização imediatamente. É necessário um período de espera de até 14 dias antes de poder iniciar novamente o processo de mudança de localização. Esta restrição está em vigor para garantir a estabilidade e evitar conflitos de dados.
O que se segue?
- Saiba mais acerca da mudança de contentores.