Vista geral
Nesta página, vai saber como usar a API Database Migration Service para gerir perfis de ligação para uma base de dados de origem PostgreSQL e um destino PostgreSQL.
Existem duas formas de usar a API Database Migration Service. Pode fazer chamadas à API REST ou usar a CLI (interface de linha de comandos) do Google Cloud.
Para ver informações de alto nível sobre a utilização da gcloud
para gerir perfis de ligação do serviço de migração de bases de dados, clique aqui.
Crie um perfil de associação para uma base de dados de origem do PostgreSQL
O exemplo seguinte mostra um pedido para criar um perfil de ligação para uma base de dados de origem do PostgreSQL.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
- connection-profile-display-name: o nome a apresentar do perfil de associação
- host-ip-address: O endereço IP de origem
- username: o nome de utilizador da base de dados
- password: a palavra-passe do utilizador da base de dados
- client-key: A chave privada codificada em PEM PKCS#1 ou PKCS#8 não encriptada associada
ao certificado de cliente. Se este campo for usado, o campo
clientCertificate
é obrigatório. - client-certificate: O certificado codificado em PEM x509 que vai ser usado pela réplica para autenticar no servidor da base de dados de origem.Se este campo for usado, o campo
clientKey
é obrigatório. - ca-certificate: obrigatório. O certificado codificado em PEM x509 da AC que assinou o certificado do servidor da base de dados de origem. A réplica usa este certificado para verificar se está a estabelecer ligação ao anfitrião correto.
Método HTTP e URL:
POST https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles?connectionProfileId=connection-profile-id
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 de nível elevado sobre a utilização do gcloud
para criar perfis de ligação do serviço de migração de bases de dados, clique aqui.
Após a criação, pode ver as informações sobre o seu perfil de associação
chamando o método connectionProfiles/get
.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 mais informações sobre a utilização do gcloud
para obter informações sobre o seu perfil de associação, clique aqui.
Crie um perfil de associação para uma base de dados de origem do Cloud SQL para PostgreSQL
O exemplo seguinte mostra um pedido para criar um perfil de ligação para uma base de dados de origem do Cloud SQL para PostgreSQL. Este exemplo usa um perfil de ligação do PostgreSQL porque se liga ao motor de base de dados do PostgreSQL e não à camada de gestão do Cloud SQL.
Para criar a sincronização entre a origem e a réplica através do Cloud SQL, tem de indicar o ID da instância da base de dados do Cloud SQL. Pode encontrar o valor do ID da instância através do método databases/list
da API Cloud SQL Admin.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
- connection-profile-display-name: o nome a apresentar do perfil de associação
- host-ip-address: O endereço IP de origem
- username: o nome de utilizador da base de dados
- password: a palavra-passe do utilizador da base 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 de nível elevado sobre a utilização do gcloud
para criar perfis de ligação do serviço de migração de bases de dados, clique aqui.
Para mais informações sobre como usar o gcloud
para criar um perfil de associação para uma base de dados de origem do Cloud SQL
para PostgreSQL, clique aqui.
Crie um perfil de ligação para o destino do Cloud SQL para PostgreSQL
O exemplo seguinte mostra um pedido para criar um perfil de ligação para um destino do Cloud SQL para PostgreSQL. O serviço de migração de bases de dados usa as informações neste pedido para criar uma nova instância do Cloud SQL para PostgreSQL.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
- connection-profile-display-name: o nome a apresentar do perfil de associação
- database-version: a versão da base 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 encriptação gerida 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 encriptados em repouso através dos mesmos sistemas de gestão de chaves reforçados que usamos para os nossos próprios dados encriptados. Estes sistemas de gestão de chaves oferecem controlos de acesso e auditoria de chaves rigorosos, e encriptam os dados do utilizador em repouso através de normas de encriptação AES-256. Não é necessária configuração nem gestão.A encriptação em repouso predefinida do Google Cloudé a melhor escolha para os utilizadores que não têm requisitos específicos relacionados com a conformidade ou a localidade do material criptográfico.
Se precisar de mais controlo sobre as chaves usadas para encriptar dados em repouso num Google Cloud projeto, o Database Migration Service oferece a capacidade de proteger os seus dados através de chaves de encriptação geridas por si no Cloud Key Management Service (KMS). Estas chaves de encriptação são denominadas chaves de encriptação geridas pelo cliente (CMEK). Quando protege dados no serviço de migração de bases de dados com a CMEK, a CMEK está sob o seu controlo.
O parâmetro cmek_key_name
está associado à existência de uma CMEK que o serviço de migração de bases de dados pode usar para encriptar os 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 conjunto de chaves para a sua CMEK. Um conjunto de chaves organiza as chaves num local específico e permite-lhe gerir o controlo de acesso em grupos de chaves. Google Cloud O nome de um conjunto de chaves não tem de ser exclusivo num Google Cloud projeto, mas tem de ser exclusivo numa determinada localização. Para mais informações acerca dos conjuntos de chaves, consulte Recursos do Cloud KMS.
Como parte da criação do perfil de ligação, o serviço de migração de bases de dados verifica se a CMEK existe e se o serviço de migração de bases de dados tem autorizações para usar a chave.
Se qualquer uma destas condições não for cumprida, é devolvida a seguinte mensagem de erro:
CMEK_DOES_NOT_EXIST_OR_MISSING_PERMISSIONS
Para resolver este problema, verifique se a chave que indicou existe e se a conta de serviço do
Database Migration Service tem a autorização cloudkms.cryptoKeys.get
para a chave.
Se preferir usar o sistema de gestão de chaves interno da Google Cloudem vez de uma CMEK
para encriptar os seus dados, não inclua o parâmetro cmek_key_name
nem o valor no seu pedido 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 do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 de nível elevado sobre a utilização do gcloud
para criar perfis de ligação do serviço de migração de bases de dados, clique aqui.
Receba informações sobre um perfil de associação
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 mais informações sobre a utilização do gcloud
para obter informações sobre o seu perfil de associação, clique aqui.
Apresentar perfis de ligação
O exemplo seguinte mostra um pedido para obter informações sobre todos os seus perfis de ligação.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
orderBy:
Use este filtro para obter uma lista de todos os perfis de associação de uma determinada região por ordem alfabética. Por exemplo, o filtroorderBy=name
devolve todos os perfis de ligação, por ordem alfabética, por nome.-
pageSize:
Use este filtro para especificar o número máximo de perfis de ligação que o serviço de migração de bases de dados obtém e apresenta numa página. Por exemplo, ao definirpageSize=10
, o serviço de migração de bases de dados devolve até 10 perfis de ligação para uma página.
Se existirem mais de 10 perfis de ligação, estes aparecem noutras páginas. No final de cada página, é apresentado um parâmetro nextPageToken
e um identificador exclusivo. Use o identificador para obter a ficha dos perfis de associação para a página seguinte.
Método HTTP e URL:
GET https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 mais informações sobre a utilização de gcloud
para obter informações sobre todos os seus perfis de ligação, clique aqui.
Atualize um perfil de associação
O exemplo seguinte mostra um pedido para atualizar os campos de nome de utilizador e palavra-passe de um perfil de ligação existente. Ao usar o parâmetro updateMask
no pedido, apenas estes campos têm de ser incluídos no corpo do pedido.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
- username: o nome de utilizador da base de dados
- password: a palavra-passe do utilizador da base 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 do pedido:
{ "postgres" { "username": "username", "password": "password" } }
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 o seu perfil de ligação, clique aqui.
Elimine um perfil de ligação
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associação
Método HTTP e URL:
DELETE https://datamigration.googleapis.com/v1/projects/project-id/locations/region/connectionProfiles/connection-profile-id
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 gcloud
para eliminar o seu perfil de ligação, clique aqui.
Elimine um perfil de ligação e a instância do Cloud SQL associada
O exemplo seguinte mostra um pedido para eliminar um perfil de ligação de destino, bem como a eliminação em cascata da instância do Cloud SQL associada.
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- project-id: o ID do projeto
- region: a região do projeto
- connection-profile-id: o ID do perfil de associaçã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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "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 eliminar o seu perfil de ligação e a instância do Cloud SQL associada, clique aqui.