Usar a migração gerenciada para migrar um metastore autogerenciado do MySQL para o metastore do Dataproc

A migração gerenciada é um recurso automatizado que ajuda a migrar dados de um Metastore do Hive autogerenciado para um serviço Metastore do Dataproc, sem nenhum tempo de inatividade considerável (também conhecido como dia de sinalização).

Como funciona a migração gerenciada

Para concluir uma migração gerenciada, o serviço precisa passar por dois processos: iniciar migração e concluir a migração. É possível fazer isso a qualquer momento com o processo de cancelamento da migração. Há também vários comandos operacionais que você pode executar, que não são necessários para concluir uma migração. Por exemplo, listar migração ou excluir migração.

À medida que o serviço avança no processo, ele também passa por vários estados e fases de migração. Esses estados e fases representam os processos que ocorrem em segundo plano. Por exemplo, o estado MIGRATING indica que o serviço está transferindo dados ativamente do banco de dados do Cloud SQL para o metastore do Dataproc.

A migração gerenciada requer três sub-redes para executar uma migração: proxy_subnet, nat_subnet e reverse_proxy_subnet. Para evitar problemas de latência, configure o seguinte:

  • proxy_subnet e nat_subnet na mesma região que o Cloud SQL.
  • reverse_proxy_subnet está na mesma região do serviço Metastore do Dataproc.

Para mais informações sobre os diferentes tipos de sub-redes, consulte Finalidades das sub-redes.

Fluxo de migração gerenciado

Iniciar migração

  1. Você executa um processo de iniciar migração em um serviço do Dataproc Metastore.
  2. O serviço Metastore do Dataproc se conecta ao banco de dados do Cloud SQL, que atua como o banco de dados de back-end para seu metastore Hive autogerenciado. Nesta etapa, o banco de dados do Cloud SQL ainda é a fonte da verdade para seus dados.

  3. O metastore do Dataproc executa um fluxo de captura de dados alterados (CDC, na sigla em inglês) que copia dados do banco de dados do Cloud SQL para o banco de dados do metastore do Dataproc (Cloud Spanner).

    Depois que a migração inicial for bem-sucedida, será possível começar a rotear cargas de trabalho para o Metastore do Dataproc. Neste ponto, o Cloud SQL ainda é a fonte da verdade para seus dados.

Concluir a migração

Depois de concluir a migração das cargas de trabalho para o metastore do Dataproc, será possível concluir a migração. Quando um processo de migração completa é chamado, ocorre o seguinte:

  • O metastore do Dataproc faz a transição para um modo somente leitura até que o processo completo de migração seja concluído.
  • O fluxo do CDC transfere todos os dados em trânsito para o metastore do Dataproc.
  • O metastore do Dataproc se conecta ao Spanner e desconecta do Cloud SQL. O metastore do Dataproc agora atua como a fonte da verdade para seus dados.

Antes de começar

Para iniciar uma migração, você precisa configurar ou ter acesso aos seguintes serviços:

  • Um Metastore do Dataproc configurado com o tipo de banco de dados do Spanner.
  • Uma instância de banco de dados do Cloud SQL para MySQL configurada com o IP particular.

    • A rede VPC da instância do Cloud SQL tem as sub-redes necessárias.

    • O Cloud SQL usa um banco de dados com um esquema compatível com a versão do metastore do Hive em execução no serviço do metastore do Dataproc para o qual os dados são copiados.

    • Configure o Cloud SQL para ser usado como uma fonte do Datastream. Crie um nome de usuário e uma senha para conectar o Datastream ao Cloud SQL.

Papéis necessários

Para receber as permissões necessárias para criar um metastore do Dataproc e iniciar uma migração gerenciada, peça ao administrador para conceder a você os seguintes papéis do IAM:

  • Para conceder acesso total a todos os recursos do metastore do Dataproc, incluindo a definição de permissões do IAM: Administrador do metastore do Dataproc (roles/metastore.admin) na conta de usuário ou na conta de serviço do metastore do Dataproc
  • Para conceder controle total dos recursos do metastore do Dataproc: Editor do metastore do Dataproc (roles/metastore.editor) na conta de usuário ou na conta de serviço do metastore do Dataproc:
  • Para criar uma migração gerenciada: Administrador de migração (roles/metastore.migrationAdmin) no [agente de serviço do Dataproc Metastore][7]
  • Para usar o objeto do Cloud Storage com o Datastream:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Configurar uma migração gerenciada

É possível configurar uma migração usando as APIs Dataproc Metastore.

Um serviço Metastore do Dataproc só pode executar uma migração por vez.

Iniciar migração

Quando você inicia uma migração, o metastore do Dataproc se conecta ao Cloud SQL e usa o Cloud SQL como banco de dados de back-end. Durante esse processo, o metastore do Dataproc executa um pipeline que copia dados do Cloud SQL para seu próprio banco de dados (Spanner).

O metastore do Dataproc continua usando o Cloud SQL como back-end e replica dados até que todo o processo de migração seja chamado.

Considerações

  • Uma migração permanece ativa até você concluir o processo. Não há um prazo para concluir a migração. Por exemplo, ela pode levar 1 dia, 30 dias ou um ano.

  • Os backups programados não são restritos durante uma migração. No entanto, o backup pode estar incompleto. Para evitar problemas, desative todos os backups programados enquanto a migração estiver em andamento.

O início de uma migração aciona as seguintes mudanças de estado:

  • O metastore do Dataproc é movido para o estado MIGRATING.
  • O estado de execução da migração é movido para RUNNING.
  • A fase de execução da migração passa para REPLICATION.

Console

Comece agora

  1. No console do Google Cloud, abra a página Metastore do Dataproc:

    Abrir o metastore do Dataproc

  2. Na página Metastore do Dataproc, clique no nome do serviço para o qual você quer migrar.

    A página Detalhes do serviço é aberta.

  3. Na parte de cima da página, clique em Migrar dados.

    A página Criar migração abre a guia Conectividade e mostra as definições de configuração do banco de dados do Cloud SQL para o metastore do Dataproc.

Configuração do banco de dados do Cloud SQL para DPMS

  1. Em Nome da conexão da instância, insira o nome da conexão da instância do banco de dados do Cloud SQL, no seguinte formato: PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID.

  2. No campo Endereço IP, insira o endereço IP necessário para se conectar à instância do Cloud SQL.

  3. No campo Porta, digite 3306.

  4. No campo Nome do banco de dados do Hive, insira o nome do banco de dados que está sendo usado como o back-end do metastore autogerenciado do Hive.

  5. No campo Nome de usuário, insira o nome de usuário usado para conectar o Cloud SQL ao metastore do Hive.

  6. No campo Senha, insira a senha que você usa para conectar o Cloud SQL ao metastore do Hive.

Serviço de proxy SOCKS5

  1. No campo Sub-rede do proxy, insira a sub-rede usada na rede VPC do Cloud SQL. Essa sub-rede é usada para implantar o proxy SOCKS5 intermediário.

  2. No campo Sub-rede Nat, insira a sub-rede do Private Service Connect que fornece uma conexão do serviço Metastore do Dataproc para acessar o proxy intermediário. O tamanho da sub-rede precisa ter um comprimento de prefixo de pelo menos pelo menos /29.

  3. Clique em Continuar.

    A guia Captura de dados alterados (CDC) abre e exibe as configurações do banco de dados do Cloud SQL para o Datastream.

Configuração do banco de dados do Cloud SQL para fluxo de dados

  1. No campo Nome de usuário, insira o nome de usuário que você usou para fazer login no CDC do Cloud SQL usado pelo Datastream.

  2. No campo Senha, insira a senha que você usa para fazer login no CDC do Cloud SQL usado pelo Datastream.

  3. No campo Rede VPC, insira a rede na mesma rede VPC que a instância do Cloud SQL usada pelo Datastream para estabelecer uma conexão particular com o CDC.

  4. No campo Intervalo de IP da sub-rede, insira um intervalo de IP da sub-rede de pelo menos /29. O Datastream usa esse IP para estabelecer o peering com a rede VPC.

  5. No campo Sub-rede de proxy reversa, insira a sub-rede que você criou na mesma rede VPC que o Cloud SQL. O Datastream usa essa sub-rede. A sub-rede é usada para hospedar uma conexão de proxy reversa para o CDC do Datastream. A sub-rede precisa ser configurada na mesma região do serviço Metastore do Dataproc.

Configuração do GCS

  1. Em ID do bucket, selecione o caminho do Cloud Storage para armazenar dados do CDC durante a migração.

  2. No campo Caminho raiz, insira o caminho raiz dentro do bucket do Cloud Storage. Os dados do evento de stream são gravados nesse caminho.

  3. Clique em Criar.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d \
  '{
    "migration_execution": {
      "cloud_sql_migration_config": {
        "cloud_sql_connection_config": {
          "instance_connection_name": INSTANCE_CONNECTION_NAME,
          "hive_database_name": "HIVE_DATABASE_NAME",
          "ip_address": "IP_ADDRESS",
          "port": 3306,
          "username": "CONNECTION_USERNAME",
          "password": "CONNECTION_PASSWORD",
          "proxy_subnet": "PROXY_SUBNET",
          "nat_subnet": "NAT_SUBNET"
        },
        "cdc_config": {
          "username": "CDC_USENAME",
          "password": "CDC_PASSWORD",
          "vpc_network": "VPC_NETWORK",
          "subnet_ip_range": "SUBNET_IP_RANGE",
          "reverse_proxy_subnet": "REVERSE_PROXY_SUBNET_ID",
          "bucket": "BUCKET_NAME",
          "root_path": "ROOT_PATH",
        }
      }
    }
}' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:startMigration

Substitua:

  • SERVICE: o nome ou o ID do serviço do Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.

Configuração de migração do Cloud SQL

  • INSTANCE_CONNECTION_NAME: o nome da conexão da instância para o banco de dados do Cloud SQL, no seguinte formato: PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID.
  • HIVE_DATABASE_NAME: o nome do banco de dados do Hive autogerenciado conectado ao Cloud SQL.
  • IP_ADDRESS: o endereço IP necessário para se conectar à instância do Cloud SQL.
  • CONNECTION_USERNAME: o nome de usuário usado para conectar o Cloud SQL ao metastore do Hive.
  • CONNECTION_PASSWORD a senha que você usa para conectar o Cloud SQL ao metastore do Hive.
  • PROXY_SUBNET: a sub-rede usada na rede VPC do Cloud SQL. Essa sub-rede hospeda um proxy intermediário para fornecer conectividade em redes transitivas.
  • NAT_SUBNET: uma sub-rede do Private Service Connect que fornece uma conexão do serviço Metastore do Dataproc para acessar o proxy intermediário. O tamanho da sub-rede precisa ter um comprimento de prefixo de pelo menos /29 e no intervalo IPv4.

Configuração do CDC

  • CDC_USERNAME: o nome de usuário que o serviço do Datastream usa para fazer login no Cloud SQL.
  • CDC_PASSWORD: a senha que o serviço do Datastream usa para fazer login no Cloud SQL.
  • VPC_NETWORK: uma rede na mesma rede VPC que a instância do Cloud SQL usada pelo Datastream para estabelecer uma conexão particular com o CDC.
  • SUBNET_IP_RANGE: um intervalo de IP de sub-rede de pelo menos /29 usado pelo Datastream para estabelecer peering com a rede VPC.
  • REVERSE_PROXY_SUBNET_ID: uma sub-rede na mesma rede VPC que a instância do Cloud SQL usada pelo Datastream. A sub-rede é usada para hospedar uma conexão de proxy reversa para o CDC do Datastream. A sub-rede precisa ser configurada na mesma região que o serviço Metastore do Dataproc.
  • BUCKET_NAME: o caminho do Cloud Storage para armazenar dados do CDC durante a migração.
  • ROOT_PATH: o caminho raiz dentro do bucket do Cloud Storage. Os dados do evento de stream são gravados nesse caminho.

Concluir a migração

Quando você conclui uma migração, o metastore do Dataproc se conecta ao Spanner e começa a usar o Spanner como banco de dados de back-end.

Uma migração completa aciona as seguintes mudanças de estado:

  • O metastore do Dataproc volta para o estado ACTIVE.
  • O estado de execução da migração é movido para SUCCEEDED.

Console

  1. No console do Google Cloud, abra a página Metastore do Dataproc.

  2. Na parte de cima da página, clique em Migrar dados.

    A página Migrar dados é aberta e exibe as migrações gerenciadas concluídas.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d '' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:completeMigration

Substitua:

  • SERVICE: o nome ou o ID do serviço Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.

Cancelar migração

Quando você cancela uma migração, o metastore do Dataproc reverte todas as alterações e começa a usar o tipo de banco de dados do Spanner como banco de dados de back-end. Todos os dados transferidos durante a migração são excluídos.

O cancelamento da migração aciona as seguintes mudanças de estado:

  • O metastore do Dataproc volta para o estado ACTIVE.
  • O estado de execução da migração é movido para CANCELLED.

Console

  1. No console do Google Cloud, abra a página Metastore do Dataproc.

  2. Na parte de cima da página, clique em Migrar dados.

    A página Migrar dados é aberta e exibe suas migrações gerenciadas canceladas.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
   -X POST -d '' \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:cancelMigration

Substitua:

  • SERVICE_NAME: o nome ou o ID do serviço Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.

Receber detalhes da migração

Veja detalhes sobre uma única migração gerenciada.

Console

  1. No console do Google Cloud, abra a página Metastore do Dataproc.

  2. Na parte de cima da página, clique em Migrar dados.

    A página Migrar dados é aberta e exibe suas migrações gerenciadas.

    Para acessar mais detalhes sobre a migração, clique no nome de uma migração gerenciada.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

Substitua:

  • SERVICE: o nome ou o ID do serviço Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.
  • MIGRATION_ID: o nome ou ID da migração do Metastore do Dataproc.

Listar migrações

Listar migrações gerenciadas.

Console

  1. No console do Google Cloud, abra a página Metastore do Dataproc.

  2. Na parte de cima da página, clique em Migrar dados.

    A página Migrar dados é aberta e exibe suas migrações gerenciadas.

  3. Verifique se o comando listou as migrações.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

Substitua:

  • SERVICE: o nome ou o ID do serviço Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.

Excluir migrações

Excluir migrações gerenciadas.

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X DELETE \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

Substitua:

  • SERVICE: o nome ou o ID do serviço do Metastore do Dataproc.
  • PROJECT_ID: o ID do projeto do Google Cloud em que o serviço Metastore do Dataproc reside.
  • LOCATION: a região do Google Cloud em que o serviço Metastore do Dataproc reside.
  • MIGRATION_ID: o nome ou o ID da migração do Metastore do Dataproc.

A seguir