Visão geral
Nesta página, você vai aprender a usar a API do Database Migration Service para gerenciar perfis de conexão de um banco de dados de origem e um destino do PostgreSQL.
Há duas maneiras de usar a API Database Migration Service. É possível fazer chamadas da API REST ou usar a Google Cloud CLI.
Para ver informações gerais sobre como usar o gcloud
para gerenciar perfis de conexão do Database Migration Service, clique aqui.
Criar um perfil de conexão para um banco de dados de origem do PostgreSQL
O exemplo a seguir mostra uma solicitação para criar um perfil de conexão de um banco de dados de origem do PostgreSQL.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
- connection-profile-display-name: o nome de exibição do perfil de conexão
- host-ip-address: o endereço IP de origem
- username: o nome do usuário do banco de dados
- password: a senha do usuário do banco de dados
- client-key: a chave privada não criptografada PKCS#1 ou PKCS#8 codificada em PEM associada
ao certificado do cliente. Se esse campo for usado, o campo
clientCertificate
será obrigatório. - client-certificate: o certificado x509 codificado por PEM que será usado pela
réplica para autenticação no servidor de banco de dados de origem.Se esse campo for usado, o campo
clientKey
será obrigatório. - ca-certificate: obrigatório. O certificado x509 codificado por PEM da AC que assinou o certificado do servidor de banco de dados de origem. A réplica vai usar esse certificado para verificar se está se conectando ao host certo.
Método HTTP e URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
Corpo JSON da solicitação:
{ "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username", "password": "password", "ssl": { "clientKey": "client-key", "clientCertificate": "client-certificate", "caCertificate": "ca-certificate" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para conferir informações gerais sobre como usar o gcloud
para criar perfis de conexão do Database Migration Service, clique aqui.
Após a criação, é possível conferir as informações sobre o perfil de conexão
chamando o método
connectionProfiles/get
.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username" } }
gcloud
Para saber como usar o gcloud
para recuperar informações sobre o perfil de conexão, clique aqui.
Criar um perfil de conexão para um banco de dados de origem do Cloud SQL para PostgreSQL
O exemplo a seguir mostra uma solicitação para criar um perfil de conexão de um banco de dados de origem do Cloud SQL para PostgreSQL. Este exemplo usa um perfil de conexão do PostgreSQL porque ele se conecta ao mecanismo de banco de dados do PostgreSQL, e não à camada de gerenciamento do Cloud SQL.
Para criar o pareamento entre a origem e a réplica usando o Cloud SQL, forneça o ID da instância do seu banco de dados do Cloud SQL. É possível encontrar o valor do ID da instância usando o método
databases/list
da API Cloud SQL Admin.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
- connection-profile-display-name: o nome de exibição do perfil de conexão
- host-ip-address: o endereço IP de origem
- username: o nome do usuário do banco de dados
- password: a senha do usuário do banco de dados
- cloud-sql-instance-id: o ID da instância do Cloud SQL
Método HTTP e URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
Corpo JSON da solicitação:
{ "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username", "password": "password", "cloud_sql_id": "cloud-sql-instance-id" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para conferir informações gerais sobre como usar o gcloud
para criar perfis de conexão do Database Migration Service, clique aqui.
Para mais informações sobre como usar gcloud
para criar um perfil de conexão para um banco de dados de origem do Cloud SQL para PostgreSQL, clique aqui.
Criar um perfil de conexão para o destino do Cloud SQL para PostgreSQL
O exemplo a seguir mostra uma solicitação para criar um perfil de conexão de um destino do Cloud SQL para PostgreSQL. O Database Migration Service usa as informações desta solicitação para criar uma nova instância do Cloud SQL para PostgreSQL.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
- connection-profile-display-name: o nome de exibição do perfil de conexão
- database-version: a versão do banco de dados. Por exemplo, POSTGRES_12.
- tier: o tipo de máquina. Por exemplo, db-custom-1-4096.
- data-disk-type: o tipo de disco de dados. Por exemplo, PD_SSD.
- data-disk-size-gb: o tamanho do disco de dados, em GB. Por exemplo, 20.
- zone: a zona na região do projeto
- cmek_key_name: Opcional: o caminho e o nome completos de uma chave de criptografia gerenciada pelo cliente (CMEK). Por exemplo, "projects/project-id/locations/location/keyRings/ring/cryptoKeys/customer-managed-encryption-key".
Todos os dados armazenados no Google Cloud são criptografados em repouso usando os mesmos sistemas de gerenciamento de chaves protegidos que usamos para nossos próprios dados criptografados. Esses sistemas de gerenciamento de chaves fornecem controles de acesso e auditoria de chaves rigorosos e criptografam dados do usuário em repouso usando padrões de criptografia AES-256. Não é necessário fazer nenhuma configuração, configuração ou gerenciamento. A criptografia padrão do Google Cloudem repouso é a melhor opção para usuários que não têm requisitos específicos relacionados à conformidade ou à localização do material criptográfico.
Se você precisar de mais controle sobre as chaves usadas para criptografar dados em repouso em um projeto do Google Cloud , o serviço de migração de banco de dados oferece a capacidade de proteger seus dados usando chaves de criptografia gerenciadas por você no Cloud Key Management Service (KMS). Elas são chamadas de chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês). Quando você protege dados no Database Migration Service com a CMEK, ela fica sob seu controle.
O parâmetro cmek_key_name
está associado a um CMEK que o Database Migration Service pode
usar para criptografar dados migrados da origem para o destino. O CMEK é representado
pelo marcador de posição customer-managed-encryption-key.
O marcador de posição ring representa o keyring do CMEK. Um keyring organiza chaves em um local específico do Google Cloud e permite gerenciar o controle de acesso em grupos de chaves. O nome de um keyring não precisa ser exclusivo em um projeto do Google Cloud , mas precisa ser exclusivo em um determinado local. Para mais informações sobre chaveiros, consulte Recursos do Cloud KMS.
Como parte da criação do perfil de conexão, o Database Migration Service verifica se a CMEK existe e se o Database Migration Service tem permissões para usar a chave.
Se uma dessas condições não for atendida, a seguinte mensagem de erro será retornada:
CMEK_DOES_NOT_EXIST_OR_MISSING_PERMISSIONS
Para resolver esse problema, verifique se a chave fornecida existe e se a
conta de serviço do Database Migration Service tem a permissão cloudkms.cryptoKeys.get
para a chave.
Se você preferir usar o sistema de gerenciamento de chaves interno do Google Cloudem vez de um CMEK
para criptografar seus dados, não inclua o parâmetro e o valor cmek_key_name
na solicitação da API.
Método HTTP e URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
Corpo JSON da solicitação:
{ "displayName": "connection-profile-display-name", "cloudsql": { "settings": { "databaseVersion": "database-version", "tier": "machine-type", "storageAutoResizeLimit": 0, "activationPolicy": "ALWAYS", "ipConfig": { "authorizedNetworks": [], "enableIpv4": true, "privateNetwork": null }, "autoStorageIncrease": false, "dataDiskType": "data-disk-type", "dataDiskSizeGb": "data-disk-size", "zone": "zone", "sourceId": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "cmek_key_name": "projects/project-id/locations/location/keyRings/ring/cryptoKeys/customer-managed-encryption-key" } } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591975557292-5a7e4b195623c-e350e3da-713dee7d", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T15:25:57.430715421Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para conferir informações gerais sobre como usar o gcloud
para criar perfis de conexão do Database Migration Service, clique aqui.
Receber informações sobre um perfil de conexão
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "connection-profile-display-name", "postgres": { "host": "host-ip-address", "port": 5432, "username": "username" } }
gcloud
Para saber como usar o gcloud
para recuperar informações sobre o perfil de conexão, clique aqui.
Listar perfis de conexão
O código a seguir mostra uma solicitação para recuperar informações sobre todos os perfis de conexão.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
orderBy:
Use esse filtro para recuperar uma lista de todos os perfis de conexão de uma região específica em ordem alfabética. Por exemplo, o filtroorderBy=name
retorna todos os perfis de conexão, alfabeticamente, por nome.-
pageSize:
Use esse filtro para especificar o número máximo de perfis de conexão que o Database Migration Service recupera e exibe em uma página. Por exemplo, ao definirpageSize=10
, o Database Migration Service vai retornar até 10 perfis de conexão para uma página.
Se houver mais de 10 perfis de conexão, eles vão aparecer em outras páginas. No final de cada página, um parâmetro nextPageToken
e um identificador exclusivo aparecem. Use o identificador para extrair a lista dos perfis de conexão da página a seguir.
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "connectionProfiles": [ { "name": "projects/project-id/locations/region/connectionProfiles/name-of-first-connection-profile", "createTime": "2019-12-22T16:17:37.159786963Z", "updateTime": "2019-12-24T13:13:39.455857411Z", "state": "READY", "displayName": "display-name-of-first-connection-profile", "postgres": { "host": "host-ip-address-of-first-connection-profile", "port": port-number-of-first-connection-profile, "username": "username-of-first-connection-profile", "password_set": "true" } } { "name": "projects/project-id/locations/region/connectionProfiles/name-of-second-connection-profile", "createTime": "2020-11-21T19:22:25.153824963Z", "updateTime": "2020-11-11T11:15:14.451046111Z", "state": "READY", "displayName": "display-name-of-second-connection-profile", "postgres": { "host": "host-ip-address-of-second-connection-profile", "port": port-number-of-second-connection-profile, "username": "username-of-second-connection-profile", "password_set": "true" } } ] }
gcloud
Para saber como usar o gcloud
para recuperar informações sobre todos os seus perfis de conexão, clique aqui.
Atualizar um perfil de conexão
A seguir, mostramos uma solicitação para atualizar os campos de nome de usuário e senha de um perfil de conexão. Usando o parâmetro updateMask
na solicitação,
somente esses campos precisam ser incluídos no corpo da solicitação.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
- username: o nome do usuário do banco de dados
- password: a senha do usuário do banco de dados
Método HTTP e URL:
PATCH https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id?updateMask=postgres.username,postgres.password
Corpo JSON da solicitação:
{ "postgres" { "username": "username", "password": "password" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "update", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para mais informações sobre como usar o gcloud
para atualizar seu perfil de conexão, clique aqui.
Excluir um perfil de conexão
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
Método HTTP e URL:
DELETE https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "delete", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para mais informações sobre como usar o gcloud
para excluir seu perfil de conexão, clique aqui.
Excluir um perfil de conexão e a instância do Cloud SQL associada
A seguir, mostramos uma solicitação para excluir um perfil de conexão de destino e excluir em cascata a instância do Cloud SQL associada.
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de conexão
Método HTTP e URL:
DELETE https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id?force=true
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/project-id/locations/region/operations/operation-1591973161667-5a7e422cb0ba4-3004980d-2ae97165", "metadata": { "@type": "type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata", "createTime": "2020-06-12T14:46:01.744267779Z", "target": "projects/project-id/locations/region/connectionProfiles/connection-profile-id", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
gcloud
Para mais informações sobre como usar o gcloud
para excluir o perfil de conexão e a instância do Cloud SQL associada, clique aqui.