Resolva problemas de erros de migração
O processo da tarefa de migração pode incorrer em erros durante o tempo de execução.
- Alguns erros, como uma palavra-passe incorreta na base de dados de origem, são recuperáveis, o que significa que podem ser corrigidos e a tarefa de migração é retomada automaticamente.
- Alguns são irrecuperáveis, como erros na replicação de dados, o que significa que a tarefa de migração tem de ser reiniciada desde o início.
Quando ocorre um erro, o estado da tarefa de migração muda para Failed
e o subestado reflete o último estado antes da falha.
Para resolver um erro, navegue para a tarefa de migração com falha para ver o erro e siga os passos descritos na mensagem de erro.
Para ver mais detalhes sobre o erro, navegue para o Cloud Monitoring através do link na tarefa de migração. Os registos são filtrados para a tarefa de migração específica.
Na tabela seguinte, pode encontrar alguns exemplos de problemas e como podem ser resolvidos:
Sintoma | Causas possíveis | Coisas a experimentar |
---|---|---|
Falha ao estabelecer ligação à instância da base de dados de origem. | Ocorreu um problema de conetividade entre a instância da base de dados de origem e a instância de destino. | Siga os passos em Depurar a conetividade. |
Falha na execução da tarefa de migração devido a versões de base de dados de origem e de destino incompatíveis. | As versões da base de dados de origem e de destino não são uma combinação suportada. Especificamente, a versão da base de dados de origem fornecida é incompatível com a versão da base de dados de destino. | Certifique-se de que a versão da base de dados de destino é igual ou uma versão principal superior à versão da base de dados de origem. Em seguida, crie uma nova tarefa de migração. |
As linguagens de definição de dados (LDDs) ou as linguagens de manipulação de dados (LMDs) estão bloqueadas na origem. | As DDLs que requerem o ACCESS EXCLUSIVE bloqueio e estão em execução durante a fase de descarga completa são bloqueadas. |
Durante o processo de sincronização inicial (transferência completa), deve evitar DDLs ou programas que exijam Por exemplo, se uma tabela ainda estiver no processo de sincronização inicial e for executado um comando |
Mensagem de erro: No pglogical extension installed on databases (X)
|
Uma ou mais bases de dados de origem não têm o pglogical instalado. |
Siga estas diretrizes para instalar o pglogical nas bases de dados na instância de origem. |
Mensagem de erro: Replication user 'x' doesn't have sufficient privileges.
|
O utilizador que está a usar o serviço de migração de bases de dados não tem os privilégios necessários para realizar a operação designada. | Siga estas diretrizes para garantir que este utilizador tem os privilégios necessários. |
Mensagem de erro: Unable to connect to source database server.
|
O serviço de migração de bases de dados não consegue estabelecer uma ligação ao servidor da base de dados de origem. | Certifique-se de que as instâncias da base de dados de origem e de destino conseguem comunicar entre si e que concluiu todos os pré-requisitos necessários que apareceram quando definiu as suas definições para a tarefa de migração. |
Mensagem de erro: The source database 'wal_level' configuration must be equal to 'logical'.
|
O wal_level da base de dados de origem está definido para um valor diferente de logical . |
Definir o wal_level para logical . |
Mensagem de erro: The source database 'max_replication_slots' configuration is not sufficient.
|
O parâmetro max_replication_slots não foi configurado corretamente. |
Siga estas diretrizes para definir este parâmetro corretamente. |
Mensagem de erro: The source database 'max_wal_senders' configuration is not sufficient.
|
O parâmetro max_wal_senders não foi configurado corretamente. |
Siga estas diretrizes para definir este parâmetro corretamente. |
Mensagem de erro: The source database 'max_worker_processes' configuration is not sufficient.
|
O parâmetro max_worker_processes não foi configurado corretamente. |
Siga estas diretrizes para definir este parâmetro corretamente. |
Mensagem de erro: OU
Mensagem de erro: |
Não é possível limpar as definições necessárias para a replicação durante a promoção de uma tarefa de migração. | Para cada base de dados, execute comandos como um utilizador com o privilégio Para mais informações sobre os comandos a executar, consulte o artigo Limpe as posições de replicação. |
Mensagem de erro: |
O certificado da AC de origem fornecido ao serviço de migração de base de dados pode conter apenas o certificado de raiz. No entanto, o certificado de origem requer o certificado de raiz e todos os certificados intermédios. Por exemplo, para o Amazon Relational Database Service, a utilização do certificado rds-ca-2019-root.pem pode resultar neste problema. |
Crie um certificado de CA de origem combinado que contenha o certificado de raiz e todos os certificados intermédios necessários. Para o exemplo de utilização do Amazon Relational Database Service, em vez do certificado rds-ca-2019-root.pem, use o certificado rds-combined-ca-bundle.pem. |
Mensagem de erro: |
O valor definido para o parâmetro max_locks_per_transaction não é suficiente. |
Defina o valor deste parâmetro para, pelo menos, {max_number_of_tables_per_database }/(max_connections + max_prepared_transactions ). |
Mensagem de erro: |
O pacote pglogical não está instalado corretamente na instância de origem. | Para mais informações sobre como instalar corretamente este pacote, consulte o artigo Instale o pacote pglogical na instância de origem. |
Mensagem de erro: |
A origem configurada está no modo de recuperação. | Configure uma origem que não esteja no modo de recuperação. |
O despejo completo é lento. | O destino do AlloyDB pode ser lento na importação de grandes quantidades de dados da base de dados de origem. |
|
Mensagem de erro: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again |
A tarefa de migração falhou durante a fase de descarga completa e não é possível recuperar a tarefa. A instância da base de dados de origem foi reiniciada ou está no modo de recuperação, ou as ligações de replicação terminaram devido a um valor insuficiente definido para o parâmetro Para encontrar a causa principal do problema:
|
|
Mensagem de erro: ERROR: unknown column name {column_name} |
Foi adicionada uma coluna a uma tabela replicada no nó principal, mas não no nó de réplica. |
Apenas as alterações da linguagem de manipulação de dados (DML) são atualizadas automaticamente durante as migrações contínuas. A gestão das alterações da linguagem de definição de dados (DDL) para que as bases de dados de origem e de destino permaneçam compatíveis é da responsabilidade do utilizador e pode ser alcançada de duas formas:
Consulte Migração contínua para encontrar exemplos de utilização do |
Mensagem de erro: ERROR: cannot truncate a table referenced in a foreign key constraint |
O utilizador tentou truncar uma tabela que tem uma restrição de chave externa. |
Remova primeiro a restrição de chave externa e, em seguida, corte a tabela. |
Mensagem de erro: ERROR: connection to other side has died |
A ligação de replicação terminou devido a um valor insuficiente definido para o elemento |
Considere aumentar o valor do parâmetro |
Quando migra bases de dados selecionadas e a tarefa de migração não consegue replicar dados para uma ou mais bases de dados, é apresentado o estado Falhou na lista de bases de dados. | Vários erros de tarefas de migração. | Na coluna Erros, clique em Ver erros e corrija-os. Também pode remover as bases de dados com falhas da tarefa de migração. Para mais informações sobre como remover uma base de dados com falhas de uma tarefa de migração, consulte o artigo Gerir tarefas de migração. |
Limpe as posições de replicação
É apresentada uma das seguintes mensagens:
Cleanup may have failed on source due to error: generic::unknown: failed to connect to on-premises database.
Error promoting EM replica: finished drop replication with errors.
Causas possíveis
Quando promove uma instância do AlloyDB, se a instância de origem não estiver acessível a partir da instância do AlloyDB (por exemplo, a instância de origem não estiver em execução ou tiver removido a instância do AlloyDB da lista de autorizações de instâncias de origem), não é possível limpar as definições necessárias para a replicação durante a promoção de uma tarefa de migração. Tem de limpar manualmente os espaços de replicação.
Coisas a experimentar
Para cada base de dados, execute os seguintes comandos como um utilizador com o privilégio superuser
:
Obtenha os nomes dos slots de replicação a partir da mensagem de erro e, em seguida, execute o seguinte comando para eliminar os slots, um a um:
select pg_drop_replication_slot({slot_name});
-
Se os nomes dos slots de replicação não estiverem disponíveis na mensagem de erro, execute o seguinte comando para consultar os slots de replicação existentes:
select pg_drop_replication_slot(slot_name) from pg_replication_slots where slot_name like '%alloydb%' and active = 'f';
-
Se não existirem réplicas do AlloyDB a usar a instância de origem, execute o seguinte comando para limpar as definições de
pglogical
:select pglogical.drop_node(node_name) from pglogical.node where node_name like
'alloydb';
-
Se já não precisar da extensão
pglogical
, execute o seguinte comando para a desinstalar:DROP EXTENSION IF EXISTS pglogical;
Elimine clusters do AlloyDB órfãos no modo de arranque
Em casos extremos raros, pode verificar que a tarefa de migração foi eliminada, mas o cluster do AlloyDB associado não foi e ainda está no modo de arranque. É possível eliminar o cluster através do comando gcloud do AlloyDB para eliminar um cluster, combinado com a opção --force
.
Tenha em atenção que a eliminação de um cluster de arranque enquanto está a ser usado por uma tarefa de migração resulta num comportamento indefinido.
Faça a gestão de utilizadores e funções
Migre utilizadores existentes
Atualmente, o serviço de migração de bases de dados não suporta a migração de utilizadores existentes de uma instância de origem para uma instância de destino do AlloyDB. Pode gerir esta migração criando os utilizadores no AlloyDB manualmente.
Acerca do utilizador do alloydbexternalsync
Durante a migração, todos os objetos no AlloyDB principal são propriedade do utilizador alloydbexternalsync
. Após a migração dos dados, pode modificar a propriedade dos objetos para outros utilizadores seguindo estes passos:
- Execute o comando
GRANT alloydbexternalsync to {USER}
. - Em cada base de dados, execute o comando
reassign owned by alloydbexternalsync to {USER};
. - Para remover o utilizador
alloydbexternalsync
, execute o comandodrop role alloydbexternalsync
.