Esta página descreve a exportação e a importação de dados para instâncias do Cloud SQL através de ficheiros BAK e a importação de dados para instâncias do Cloud SQL através de ficheiros de registo de transações.
Antes de começar
As exportações usam recursos da base de dados, mas não interferem com as operações normais da base de dados, a menos que a instância tenha um aprovisionamento insuficiente.
Para ver as práticas recomendadas, consulte o artigo Práticas recomendadas para importar e exportar dados.
Após concluir uma operação de importação, valide os resultados.
Exporte dados do Cloud SQL para SQL Server
O Cloud SQL suporta a exportação de ficheiros BAK incorporados.
Se quiser criar uma nova instância a partir de um ficheiro exportado, considere restaurar a partir de uma cópia de segurança para uma instância diferente ou clonar a instância.
O Cloud SQL faz uma cópia de segurança completa da base de dados selecionada durante uma operação de exportação.
Funções e autorizações necessárias para exportar do Cloud SQL para SQL Server
Para exportar dados do Cloud SQL para o Cloud Storage, o utilizador que inicia a exportação tem de ter uma das seguintes funções:
- A função Editor do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.export
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A
storage.objectAdmin
função de gestão de identidade e de acesso (IAM) - Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.create
storage.objects.list
(para exportação dividida e exportação do registo de transações)storage.objects.delete
(para exportação dividida e exportação do registo de transações)storage.buckets.get
(apenas para exportação de registos de transações)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Exporte dados para um ficheiro BAK do Cloud SQL para SQL Server
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Exportar.
- Na secção Formato de ficheiro, clique em BAK.
- Na secção Dados a exportar, use o menu pendente para selecionar a base de dados a partir da qual quer exportar.
- Na secção Destino, selecione Procurar para pesquisar um contentor ou uma pasta do Cloud Storage para a sua exportação.
- Clique em Exportar para iniciar a exportação.
gcloud
- Crie um contentor do Cloud Storage.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função IAM à conta de serviço. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a base de dados:
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \ --database=DATABASE_NAME
Para obter informações sobre a utilização do comando
gcloud sql export bak
, consulte a página de referência de comandos. - Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST v1
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
- DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
- DATABASE_NAME_2: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
REST v1beta4
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
storage.objectAdmin
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_DUMP_FILE: o caminho para o ficheiro de captura SQL
- DATABASE_NAME_1: o nome de uma base de dados na instância do Cloud SQL
- DATABASE_NAME_2: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Exporte cópias de segurança diferenciais da base de dados
Antes de exportar uma cópia de segurança da base de dados diferencial, tem de exportar uma base diferencial.
Se outros serviços ou funcionalidades, como a recuperação num ponto específico no tempo e a réplica de leitura, acionarem uma cópia de segurança completa entre a exportação de cópia de segurança completa e a exportação de cópia de segurança diferencial, tem de acionar novamente uma exportação de cópia de segurança completa.
Para compreender melhor, considere o seguinte exemplo:
- Envia um pedido de cópia de segurança completa às 07:00.
- Ativa a recuperação num ponto específico no tempo às 09:00. Isto aciona uma cópia de segurança completa na sua instância.
- Tenta fazer uma cópia de segurança diferencial às 17:00. Este pedido de exportação falha com uma mensagem de erro porque a última cópia de segurança completa foi acionada pela recuperação num ponto específico no tempo.
O Cloud SQL não suporta pedidos de exportação de bases de dados com --differential-base
ou --bak-type=DIFF
em instâncias de réplica.
gcloud
- Crie um contentor do Cloud Storage.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a exportar.
Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função IAM à conta de serviço. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. Exporte a base de dados como base diferencial.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --differential-base
Para obter informações sobre a utilização do comando
gcloud sql export bak
, consulte a página de referência de comandos.Exporte uma cópia de segurança diferencial.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF
Para obter informações sobre a utilização do comando
gcloud sql export bak
, consulte a página de referência de comandos.- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST v1
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a cópia de segurança completa da base de dados como base diferencial.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK SQL
- DATABASE_NAME: o nome da base de dados na instância do Cloud SQL
offload
: para ativar e usar a exportação sem servidor, defina este valor como TRUE
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "databases": ["DATABASE_NAME"] "offload": TRUE | FALSE "bakExportOptions": { "differentialBase":true } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Exporte uma cópia de segurança diferencial.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_dump_file: O caminho para o ficheiro de captura SQL
- database_name_1: o nome de uma base de dados na instância do Cloud SQL
- database_name_2: o nome de uma base de dados na instância do Cloud SQL
- offload: ativa a exportação sem servidor. Defina como
true
para usar a exportação sem servidor.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
REST v1beta4
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
storage.objectAdmin
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a cópia de segurança completa da base de dados como base diferencial.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_dump_file: o caminho para o ficheiro de captura SQL
- database_name_1: o nome de uma base de dados na instância do Cloud SQL
- database_name_2: o nome de uma base de dados na instância do Cloud SQL
- offload: para ativar e usar a exportação sem servidor, defina o respetivo valor como
true
.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Exporte uma cópia de segurança diferencial:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_dump_file: o caminho para o ficheiro de captura SQL
- database_name_1: o nome de uma base de dados na instância do Cloud SQL
- database_name_2: o nome de uma base de dados na instância do Cloud SQL
- offload: para ativar e usar exportações sem servidor, defina este valor como
true
.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
Exporte registos de transações
Pode exportar os registos de transações de todas as instâncias do Cloud SQL para SQL Server que tenham a recuperação num determinado momento (PITR) ativada e os respetivos registos armazenados no Cloud Storage.
gcloud
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a exportar.
Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.Admin
função IAM à conta de serviço. Para mais informações sobre como definir autorizações de IAM, consulte o artigo Defina e faça a gestão de políticas de IAM em contentores. Exporte os registos de transações.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH --export-log-start-time=START_DATE_AND_TIME / --export-log-end-time=END_DATE_AND_TIME / --database=DATABASE_NAME --bak-type=TLOG
Para obter informações sobre a utilização do comando
gcloud sql export bak
, consulte a página de referência de comandos.- Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST
Crie um contentor do Cloud Storage.
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
storage.Admin
função de IAM para o seu contentor. Para mais informações sobre como definir autorizações de IAM, consulte o artigo Defina e faça a gestão de políticas de IAM em contentores. - Exporte os registos de transações.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- FOLDER_PATH: o caminho para a pasta no contentor do Cloud Storage. O Cloud SQL exporta os registos de transações para esta pasta.
- DATABASE_NAME: o nome da base de dados na instância do Cloud SQL.
exportLogStartTime
: a data e a hora de início dos registos de transações a exportar.exportLogEndTime
: a data e a hora de fim dos registos de transações a exportar.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/FOLDER_PATH", "databases": ["DATABASE_NAME"] "bakExportOptions": { bakType:"TLOG" exportLogStartTime: START_DATE_AND_TIME exportLogEndTime: END_DATE_AND_TIME } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Use a exportação com faixas
Seguem-se as vantagens da exportação com faixas:
- Reduções no tempo necessário para a conclusão das operações
- É possível exportar bases de dados com mais de 5 TB
Uma potencial desvantagem da utilização da exportação dividida é que a cópia de segurança, em vez de consistir num ficheiro, é dividida num conjunto de ficheiros. Este conjunto chama-se "conjunto de faixas"; consulte o artigo Faça uma cópia de segurança dos dispositivos num conjunto de suportes com faixas (um conjunto de faixas). No Cloud SQL, exporta para uma pasta vazia no Cloud Storage em vez de gerar um único ficheiro. Para mais informações, consulte o artigo Como usar a exportação dividida.
Planear as suas operações
A exportação dividida pode melhorar o desempenho das exportações. No entanto, se o seu exemplo de utilização exigir um único ficheiro de saída, ou se a sua base de dados tiver um tamanho inferior a 5 TB e se o desempenho mais rápido não for crítico, é recomendável usar uma exportação não segmentada.
Se decidir usar a exportação dividida em faixas, considere o número de faixas. Pode especificar este valor no comando da CLI gcloud ou na chamada da API REST. No entanto, se quiser um número ideal de riscas para o desempenho ou se não souber um número, omita-o. É definido automaticamente um número ideal de faixas.
O número máximo de faixas atualmente suportado pelo Cloud SQL para SQL Server é 64.
Como usar a exportação com faixas
gcloud
- Crie um contentor do Cloud Storage.
- Encontre a conta de serviço da instância do Cloud SQL a partir da qual está a fazer a exportação. Pode fazê-lo executando o comando
gcloud sql instances describe
. Procure o camposerviceAccountEmailAddress
no resultado.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectAdmin
função IAM à conta de serviço. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Para exportar a base de dados, especifique o parâmetro
--striped
e/ou especifique um valor para--stripe_count
. A definição de um valor para--stripe_count
implica que o parâmetro--striped
se destina a ser usado. Ocorre um erro se especificar--no-striped
, mas especificar um valor para--stripe_count
:gcloud beta sql export bak INSTANCE_NAME \ gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \ --database=DATABASE_NAME --striped --stripe_count=NUMBER
Para obter informações sobre a utilização do comando
gcloud beta sql export bak
, consulte a página de referência de comandos. - Se não precisar de manter a função do IAM que definiu anteriormente, revogue-a agora.
REST v1
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_folder: o caminho para a pasta (no contentor do Cloud Storage) para a qual exportar o conjunto dividido
- database_name: o nome de uma base de dados na sua instância do Cloud SQL
- true | false: definido como
true
para usar a exportação com faixas. Se especificartrue
sem especificar uma contagem de faixas, é definido automaticamente um número ideal de faixas - number_of_stripes: o número de riscas a usar. Se especificado,
striped
é implícito comotrue
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
REST v1beta4
-
Crie um contentor do Cloud Storage para a exportação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Disponibilize à sua instância a
legacyBucketWriter
função de IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Exporte a sua base de dados:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_folder: O caminho para a pasta (no contentor do Cloud Storage) para a qual exportar o conjunto dividido
- database_name: o nome de uma base de dados na sua instância do Cloud SQL
- true | false: definido como
true
para usar a exportação com faixas. Se especificartrue
sem especificar uma contagem de faixas, é definido automaticamente um número ideal de faixas - number_of_stripes: o número de riscas a usar. Se especificado,
striped
é implícito comotrue
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON do pedido:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter a função do IAM que definiu anteriormente, remova-a agora.
Importe para o Cloud SQL para SQL Server
Funções e autorizações necessárias para a importação para o Cloud SQL para SQL Server
Para importar dados do Cloud Storage para o Cloud SQL, o utilizador que inicia a importação tem de ter uma das seguintes funções:
- A função Administrador do Cloud SQL
- Uma função personalizada,
incluindo as seguintes autorizações:
cloudsql.instances.get
cloudsql.instances.import
Além disso, a conta de serviço da instância do Cloud SQL tem de ter uma das seguintes funções:
- A função de IAM
storage.objectAdmin
- Uma função personalizada, incluindo as seguintes autorizações:
storage.objects.get
storage.objects.list
(apenas para importação com faixas)
Para obter ajuda com as funções de IAM, consulte o Identity and Access Management.
Importe dados de um ficheiro BAK para o Cloud SQL para SQL Server
Para usar a importação com faixas, consulte o artigo Use a importação com faixas.
Estão disponíveis várias estruturas de importação. Por exemplo, o Cloud SQL para SQL Server suporta a captura de dados de alterações (CDC) para as seguintes versões de base de dados:
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
Quando importa uma base de dados com CDC ativado, a flag KEEP_CDC é mantida.
Se a versão da sua instância for uma Microsoft SQL Server Enterprise Edition, pode importar ficheiros BAK encriptados.
As instâncias do Microsoft SQL Server Standard Edition também importam ficheiros BAK encriptados, mas apenas através da CLI gcloud.
As únicas extensões BAK suportadas são .bak
e .bak.gz
. Atualmente, as cópias de segurança encriptadas com GPG não são suportadas.
Para as instruções abaixo, prepare-se para especificar uma nova base de dados. Não crie uma base de dados antes de iniciar a importação do ficheiro BAK.
Para importar dados para uma instância do Cloud SQL através de um ficheiro BAK:
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Importar.
- No campo Escolha um ficheiro a partir do qual importar,
introduza o caminho para o contentor e o ficheiro BAK a usar para a importação.
Pode importar um ficheiro comprimido (
.gz
) ou não comprimido. Na secção Formato de ficheiro, selecione BAK.
- Na secção Destino, especifique a base de dados na instância do Cloud SQL onde quer importar o ficheiro BAK.
- Para iniciar a importação, clique em Importar.
gcloud
Crie um contentor do Cloud Storage para a importação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Certifique-se de que configurou as funções e as autorizações necessárias.
- Carregue os dados do ficheiro BAK para o contentor.
- Descreva a instância para a qual está a importar:
gcloud sql instances describe INSTANCE_NAME
- Copie o campo
serviceAccountEmailAddress
. - Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectViewer
função do IAM à conta de serviço do contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados do ficheiro:
Para importações encriptadas, use o seguinte comando:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
- Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados do ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_bak_file: o caminho para o ficheiro BAK
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
REST v1beta4
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados do ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_bak_file: o caminho para o ficheiro BAK
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
Se receber um erro, como ERROR_RDBMS
, certifique-se de que o ficheiro BAK existe no contentor e que tem as autorizações corretas no contentor. Para obter ajuda na configuração do controlo de acesso no Cloud Storage, consulte o artigo
Crie e faça a gestão de listas de controlo de acesso.
Importe cópias de segurança diferenciais de bases de dados
Antes de importar uma cópia de segurança diferencial da base de dados, precisa de uma importação de cópia de segurança completa e a base de dados tem de estar no estado RESTORING
após a importação de cópia de segurança completa.
O Cloud SQL não suporta a importação de cópias de segurança diferenciais de bases de dados em instâncias com a recuperação num determinado momento ativada. Isto deve-se ao facto de a importação de uma cópia de segurança da base de dados com --no-recovery
ser um pré-requisito para a importação de cópias de segurança diferenciais da base de dados. Além disso, não pode ativar a recuperação num ponto específico no tempo numa instância se a base de dados estiver no estado RESTORING
.
Em caso de falha da importação, faça uma das seguintes ações para ativar a recuperação num ponto específico no tempo:
Coloque online a base de dados que se encontra no estado
RESTORING
usando a flag--recovery-only
.Remova a base de dados.
Para importar dados para uma instância do Cloud SQL através de uma cópia de segurança diferencial da base de dados, siga estes passos:
gcloud
Crie um contentor do Cloud Storage para a importação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas recomendamos vivamente que o execute para não abrir o acesso a outros dados.
- Certifique-se de que configurou as funções e as autorizações necessárias.
- Carregue os dados do ficheiro BAK para o contentor.
- Descreva a instância para a qual está a importar:
gcloud sql instances describe INSTANCE_NAME
- Copie o campo
serviceAccountEmailAddress
. - Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectViewer
função do IAM à conta de serviço do contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. Importe uma cópia de segurança completa com o
--no-recovery
.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
-
Importe uma cópia de segurança diferencial da base de dados.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF --no-recovery
-
Depois de restaurar todos os ficheiros de cópia de segurança, use a flag
--recovery-only
para colocar a base de dados importada online a partir de um estadoRESTORING
. Recomendamos vivamente que os utilizadores não usem comandos T-SQL para colocar a base de dados importada online.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. -
Importe uma cópia de segurança completa com o
noRecovery
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Importe uma cópia de segurança diferencial da base de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_bak_file: o caminho para o ficheiro BAK
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
Depois de restaurar todos os ficheiros de cópia de segurança, use a flag
recoveryOnly
para colocar a base de dados importada online a partir de um estadoRESTORING
. Recomendamos vivamente que os utilizadores não usem comandos T-SQL para colocar a base de dados importada online.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
REST v1beta4
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. -
Importe uma cópia de segurança completa com o
noRecovery
.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT-ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Importe uma cópia de segurança diferencial da base de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_bak_file: o caminho para o ficheiro BAK
- database_name: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
Depois de restaurar todos os ficheiros de cópia de segurança, use a flag
recoveryOnly
para colocar a base de dados importada online a partir de um estadoRESTORING
. Recomendamos vivamente que os utilizadores não usem comandos T-SQL para colocar a base de dados importada online.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
Se receber um erro, como ERROR_RDBMS
, certifique-se de que o ficheiro BAK existe no contentor e que tem as autorizações corretas no contentor. Para obter ajuda na configuração do controlo de acesso no Cloud Storage, consulte o artigo
Crie e faça a gestão de listas de controlo de acesso.
Importe cópias de segurança do registo de transações
Um registo de transações é um registo das transações da sua base de dados e das modificações feitas por cada transação. Pode usá-lo para restabelecer a consistência da base de dados em caso de falha do sistema.
Para importar dados para uma instância do Cloud SQL através de uma cópia de segurança do registo de transações, siga estes passos:
gcloud
Opcional: crie um contentor do Cloud Storage para a importação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
- Carregue os ficheiros de cópia de segurança para o contentor.
- Descreva a instância para a qual está a importar:
gcloud sql instances describe INSTANCE_NAME
- Copie o campo
serviceAccountEmailAddress
. - Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectViewer
função do IAM à conta de serviço do contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. Importe uma cópia de segurança completa através do parâmetro
--no-recovery
. Certifique-se de que a base de dados está no estadoRESTORING
após a importação da cópia de segurança completa.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
- Opcional: importe uma cópia de segurança diferencial.
-
Importe uma cópia de segurança do registo de transações.
Substitua o seguinte:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=TLOG --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME --no-recovery
- INSTANCE_NAME: o nome da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- BACKUP_FILENAME: o nome do ficheiro de cópia de segurança.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
- STOP_AT_TIMESTAMP: a data/hora em que a importação do registo de transações tem de parar. Este é um campo opcional e o valor tem de usar o formato RFC 3339.
- STOP_AT_MARK_NAME: a
transação marcada
na qual a importação do registo de transações tem de parar. Este é um campo opcional e pode aceitar qualquer cadeia como valor. Se o valor estiver no formato
lsn:log-sequence-number
, a importação do registo de transações para no número de sequência do registo indicado.
-
Depois de restaurar todos os ficheiros de cópia de segurança, use a flag
--recovery-only
para colocar a base de dados importada online a partir de um estadoRESTORING
. Recomendamos vivamente que os utilizadores não usem comandos T-SQL para colocar a base de dados importada online.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM.
Para ver a lista completa de parâmetros do pedido, consulte a página
instances:import.
-
Importe uma cópia de segurança completa com o
noRecovery
. Certifique-se de que a base de dados está no estadoRESTORING
após a importação da cópia de segurança completa.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Opcional: importe uma cópia de segurança diferencial.
- Importe uma cópia de segurança do registo de transações.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_TLOG_FILE: o caminho para o ficheiro de registo de transações.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
- STOP_AT_TIMESTAMP: a data/hora em que a importação do registo de transações tem de parar. Este é um campo opcional e o valor tem de usar o formato RFC 3339.
- STOP_AT_MARK_NAME: a
transação marcada
na qual a importação do registo de transações tem de parar. Este é um campo opcional e pode aceitar qualquer cadeia como valor. Se o valor estiver no formato
lsn:log-sequence-number
, a importação do registo de transações para no número de sequência do registo indicado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark": STOP_AT_MARK_NAME, "noRecovery": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
Repita este passo até importar todas as cópias de segurança do registo de transações. Depois de restaurar todos os ficheiros de cópia de segurança, use a flag
recoveryOnly
para colocar a base de dados importada online a partir de um estadoRESTORING
. Recomendamos vivamente que os utilizadores não usem comandos T-SQL para colocar a base de dados importada online.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
REST v1beta4
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. -
Importe uma cópia de segurança completa com o
noRecovery
. Certifique-se de que a base de dados está no estadoRESTORING
após a importação da cópia de segurança completa.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT-ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Opcional: importe uma cópia de segurança diferencial.
- Importe uma cópia de segurança do registo de transações. Aqui,
stopAt
estopAtMark
são campos opcionais.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- BUCKET_NAME: o nome do contentor do Cloud Storage.
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK.
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL.
- STOP_AT_TIMESTAMP: a data/hora em que a importação do registo de transações tem de parar. Este é um campo opcional e o valor tem de usar o formato RFC 3339.
- STOP_AT_MARK_NAME: a
transação marcada
na qual a importação do registo de transações tem de parar. Este é um campo opcional e pode aceitar qualquer cadeia como valor. Se o valor estiver no formato
lsn:log-sequence-number
, a importação do registo de transações para no número de sequência do registo indicado.
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark":STOP_AT_MARK_NAME, "noRecovery": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
Repita este passo até importar todas as cópias de segurança do registo de transações. Depois de restaurar todos os ficheiros de cópia de segurança, use
recoveryOnly
para colocar a base de dados importada online.Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto
- INSTANCE_ID: o ID da instância
- BUCKET_NAME: o nome do contentor do Cloud Storage
- PATH_TO_BAK_FILE: o caminho para o ficheiro BAK
- DATABASE_NAME: o nome de uma base de dados na instância do Cloud SQL
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Guarde o corpo do pedido num ficheiro com o nome
request.json
, e execute o seguinte comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDeve receber uma resposta JSON semelhante à seguinte:
- Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
Use a importação com faixas
Seguem-se as vantagens da importação segmentada:
- Reduções no tempo necessário para a conclusão das operações
- É possível importar bases de dados com mais de 5 TB
Uma potencial desvantagem da utilização da importação dividida é que todos os ficheiros no conjunto dividido (em vez de um único ficheiro) têm de ser carregados para a mesma pasta no contentor do Cloud Storage antes de realizar a importação.
Planear as suas operações
Na maioria dos exemplos de utilização, a importação dividida permite um melhor desempenho sem desvantagens. No entanto, se não conseguir fazer uma cópia de segurança para um conjunto dividido de uma determinada instância, ou se a sua base de dados tiver menos de 5 TB e se um desempenho mais rápido não for fundamental, é recomendável usar uma importação não dividida.
Como usar a importação com faixas
gcloud
Crie um contentor do Cloud Storage para a importação.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Este passo não é obrigatório, mas é vivamente recomendado para não abrir o acesso a outros dados.
- Certifique-se de que configurou as funções e as autorizações de IAM necessárias.
- Crie uma nova pasta no seu contentor.
- Para importar a base de dados, carregue os ficheiros do conjunto dividido (da base de dados) para a nova pasta. Certifique-se de que todos os ficheiros são carregados para a pasta e que a pasta não contém ficheiros adicionais.
- Descreva a instância a partir da qual está a exportar:
gcloud sql instances describe INSTANCE_NAME
- Copie o campo
serviceAccountEmailAddress
. - Use
gcloud storage buckets add-iam-policy-binding
para conceder astorage.objectViewer
função do IAM à conta de serviço do contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados da pasta. A diferença em relação a uma importação sem faixas é a seguinte: os links URI apontam para o nome da pasta para a qual o conjunto de faixas foi carregado, em vez de para um único ficheiro, e especifica o parâmetro
--striped
:gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \ --database=DATABASE_NAME --striped
- Se não precisar de manter as autorizações de IAM que
definiu anteriormente, remova-as através do comando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados do ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_folder: o caminho para a pasta (no contentor do Cloud Storage) onde se encontra o conjunto de faixas
- database_name: o nome de uma base de dados a criar na sua instância do Cloud SQL
- true | false: defina como
true
para usar a importação dividida
Método HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
REST v1beta4
- Crie um contentor do Cloud Storage.
Carregue o ficheiro para o seu contentor.
Para obter ajuda com o carregamento de ficheiros para contentores, consulte o artigo Carregar objetos.
- Faculte à sua instância a
storage.objectAdmin
função do IAM para o seu contentor. Para mais informações sobre a definição de autorizações de IAM, consulte o artigo Usar autorizações de IAM. - Importe os dados do ficheiro:
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- instance-id: o ID da instância
- bucket_name: o nome do contentor do Cloud Storage
- path_to_folder: o caminho para a pasta (no contentor do Cloud Storage) onde o conjunto de faixas se encontra
- database_name: o nome de uma base de dados a criar na sua instância do Cloud SQL
- true | false: defina como
true
para usar a importação dividida
Método HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON do pedido:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
Para usar um utilizador diferente para a importação, especifique a propriedade
Para ver a lista completa de parâmetros do pedido, consulte a página instances:import.importContext.importUser
. - Se não precisar de manter as autorizações de IAM que definiu anteriormente, remova-as.
Se receber um erro, como ERROR_RDBMS
, certifique-se de que a tabela existe. Se a tabela existir, confirme que tem as autorizações corretas no contentor. Para obter ajuda na configuração do controlo de acesso no Cloud Storage, consulte o artigo
Crie e faça a gestão de listas de controlo de acesso.
O que se segue?
- Saiba como verificar o estado das operações de importação e exportação.
- Saiba mais sobre as práticas recomendadas para importar e exportar dados.
- Problemas conhecidos para importações e exportações.