Visão geral
Nesta página, você vai aprender a usar a API 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 (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
A seguir, mostramos uma solicitação para criar um perfil de conexão para 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 este campo for usado, o campo
clientCertificateserá 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
clientKeyserá obrigatório. - ca-certificate: obrigatório. O certificado x509 codificado por PEM da CA que assinou o certificado do servidor de banco de dados de origem. A réplica 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 ver informações gerais sobre como usar o gcloud para criar perfis de conexão do Database Migration Service, clique aqui.
Depois da 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
A seguir, mostramos 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. Para encontrar o valor do ID da instância, use 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 ver 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
A seguir, mostramos 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 neste pedido 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 completo e o nome 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 em 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 rigorosos e criptografam dados do usuário em repouso usando padrões de criptografia AES-256. Nenhuma configuração ou gerenciamento é necessário.A criptografia padrão em repouso do Google Cloudé 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 Database Migration Service oferece a capacidade de proteger seus dados usando chaves de criptografia gerenciadas por você no Cloud Key Management Service (KMS). Essas chaves de criptografia 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 uma CMEK que o Database Migration Service pode usar para criptografar dados migrados da origem para o destino. A CMEK é representada pelo marcador de posição customer-managed-encryption-key.
O marcador de posição ring representa o keyring da sua CMEK. Um keyring organiza chaves em um Google Cloud local específico e permite gerenciar o controle de acesso em grupos de chaves. O nome de um keyring não precisa ser exclusivo em um projeto Google Cloud , mas precisa ser exclusivo em um determinado local. Para mais informações sobre keyrings, consulte Recursos do Cloud KMS.
Ao criar o perfil de conexão, o Database Migration Service verifica se a CMEK existe e se o serviço 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 interno de gerenciamento de chaves do Google Cloudem vez de uma CMEK
para criptografar seus dados, não inclua o parâmetro e o valor cmek_key_name na solicitação de 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 ver 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 exemplo 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=nameretorna todos os perfis de conexão em ordem alfabética por nome.-
pageSize:Use este filtro para especificar o número máximo de perfis de conexão que o Database Migration Service recupera e mostra 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 de 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 existente. Usando o parâmetro updateMask na solicitação, apenas 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 saber 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 associada do Cloud SQL.
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 seu perfil de conexão e a instância associada do Cloud SQL, clique aqui.