O processo de tarefa de migração pode incorrer em erros durante o tempo de execução.
- Alguns erros, como uma senha incorreta no banco de dados de origem, são recuperáveis, o que significa que podem ser corrigidos e o trabalho de migração é retomado automaticamente.
- Alguns são irrecuperáveis, como erros na replicação de dados, o que significa que o trabalho de migração precisa ser reiniciado desde o início.
Quando ocorre um erro, o status do trabalho de migração muda para Failed
e o substatus reflete o último status antes da falha.
Para solucionar um erro, navegue até o trabalho de migração com falha para visualizar o erro e siga as etapas descritas na mensagem de erro.
Para ver mais detalhes sobre o erro, navegue até Cloud Monitoring usando o link no job de migração. Os logs são filtrados para o trabalho de migração específico.
Na tabela a seguir, você encontra alguns exemplos de problemas e como eles podem ser resolvidos:
Para este problema... | O problema pode ser... | Experimente isso... |
---|---|---|
Ao migrar para uma instância de destino existente , você recebe a seguinte mensagem de erro: The destination instance contains existing data or user defined entities (for example databases, tables, or functions). You can only migrate to empty instances. Clear your destination instance and retry the migration job. | A instância de destino do Cloud SQL contém dados extras. Você só pode migrar para instâncias existentes que estejam vazias. Consulte Limitações conhecidas . | Promova sua instância de destino para torná-la uma instância de leitura/gravação, remova os dados extras e tente novamente o trabalho de migração. Consulte Limpar dados extras da sua instância de destino existente . |
Falha na conexão com a instância do banco de dados de origem. | Houve um problema de conectividade entre a instância do banco de dados de origem e a instância de destino. | Siga as etapas em Depurando conectividade . |
Falha ao executar o trabalho de migração devido a versões incompatíveis do banco de dados de origem e destino. | As versões do banco de dados de origem e destino não são uma combinação compatível. Especificamente, a versão do banco de dados de origem fornecida é incompatível com a versão do banco de dados de destino. | Certifique-se de que a versão do banco de dados de destino seja a mesma ou uma versão principal acima da versão do banco de dados de origem. Em seguida, crie um novo trabalho de migração. |
Linguagens de definição de dados (DDLs) ou linguagens de manipulação de dados (DMLs) são bloqueadas na origem. | DDLs que requerem o bloqueio ACCESS EXCLUSIVE e estão em execução durante a fase de dump completo são bloqueados. | Durante o processo de sincronização inicial (full dump), DDLs ou programas que exigem bloqueios Por exemplo, se uma tabela ainda estiver no processo de sincronização inicial e um comando |
Mensagem de erro: No pglogical extension installed on databases (X) | Um ou mais bancos de dados de origem não possuem pglogical instalado. | Siga estas diretrizes para instalar pglogical nos bancos de dados da instância de origem. |
Ao migrar para o PostgreSQL versão 15, após várias tentativas subsequentes de nova tentativa de conexão, ocorre um dos seguintes sintomas:
| Este problema é frequentemente atribuído ao problema de impasse na extensão pglogical . Para obter mais informações, consulte o rastreador de problemas pglogical no GitHub . | Tente novamente o trabalho de migração ou migre primeiro para uma versão intermediária do PostgreSQL. Para obter mais detalhes, consulte Mensagem de erro: Cannot connect to invalid database . |
Mensagem de erro: Replication user 'x' doesn't have sufficient privileges. | O usuário que está usando o Database Migration Service não tem os privilégios necessários para executar a operação designada. | Siga estas diretrizes para garantir que esse usuário tenha os privilégios necessários. |
Mensagem de erro: Unable to connect to source database server. | O Serviço de Migração de Banco de Dados não consegue estabelecer uma conexão com o servidor de banco de dados de origem. | Certifique-se de que as instâncias de banco de dados de origem e de destino possam se comunicar entre si e que você tenha atendido todos os pré-requisitos necessários que apareceram quando você definiu suas configurações para o trabalho de migração . |
Mensagem de erro: The source database 'wal_level' configuration must be equal to 'logical'. | O wal_level do banco de dados de origem está configurado com um valor diferente de logical . | Defina wal_level como 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 esse 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 esse 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 esse parâmetro corretamente. |
Mensagem de erro: OU Mensagem de erro: | As configurações necessárias para replicação não podem ser limpas durante a promoção de um trabalho de migração. | Para cada banco de dados, execute comandos como um usuário com privilégio Para obter mais informações sobre quais comandos executar, consulte Limpar slots de replicação . |
Mensagem de erro: | O certificado CA de origem fornecido ao Database Migration Service pode conter apenas o certificado raiz. No entanto, o certificado de origem requer o certificado raiz e quaisquer certificados intermediários. Por exemplo, para o Amazon Relational Database Service, o uso do certificado rds-ca-2019-root.pem pode resultar nesse problema. | Crie um certificado CA de origem combinado que contenha o certificado raiz e todos os certificados intermediários necessários. Para o caso de uso 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. | Configure o valor desse parâmetro como 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 obter mais informações sobre como instalar este pacote corretamente, consulte Instalar o pacote pglogical na instância de origem . |
Mensagem de erro: | A fonte configurada está no modo de recuperação. | Configure uma fonte que não esteja no modo de recuperação. |
O despejo completo é lento. | O destino do Cloud SQL pode demorar para importar dados grandes do banco de dados de origem. |
|
Mensagem de erro: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again | O trabalho de migração falhou durante a fase de despejo completo e o trabalho não é recuperável. A instância do banco de dados de origem foi reiniciada ou estava em modo de recuperação, ou as conexões de replicação foram encerradas devido a um valor insuficiente definido para o parâmetro Para encontrar a causa raiz do problema:
|
|
Mensagem de erro: ERROR: unknown column name {column_name} | Uma coluna foi adicionada a uma tabela replicada no nó primário, mas não no nó de réplica. | Somente alterações na linguagem de manipulação de dados (DML) são atualizadas automaticamente durante migrações contínuas. O gerenciamento de alterações na linguagem de definição de dados (DDL) para que os bancos de dados de origem e destino permaneçam compatíveis é de responsabilidade do usuário e pode ser feito de duas maneiras:
Consulte Migração contínua para encontrar exemplos de uso do |
Mensagem de erro: ERROR: cannot truncate a table referenced in a foreign key constraint | O usuário tentou truncar uma tabela que possui uma restrição de chave estrangeira. | Remova primeiro a restrição de chave estrangeira e depois trunque a tabela. |
Mensagem de erro: ERROR: connection to other side has died | A conexão de replicação foi encerrada devido a um valor insuficiente definido para o | Considere aumentar o valor do parâmetro |
Mensagem de aviso: migration job test configuration has returned the following warnings: Some table(s) have limited support. | A fonte possui tabelas com suporte limitado, por exemplo, tabelas sem chaves primárias. | Esta é uma mensagem de aviso. Você pode prosseguir com a migração, mas observe que as entidades sem suporte (por exemplo, tabelas sem chaves primárias) não são migradas. Para obter mais informações, consulte Configurar seus bancos de dados de origem . |
Quando você migra bancos de dados selecionados e o trabalho de migração não consegue replicar dados para um ou mais bancos de dados, um status Com falha é exibido na lista de bancos de dados. | Vários erros de trabalho de migração. | Na coluna Erros , clique em Visualizar erros e corrigi-los. Você também pode remover os bancos de dados com falha do trabalho de migração. Para obter mais informações sobre como remover um banco de dados com falha de um trabalho de migração, consulte Gerenciar trabalhos de migração . |
Limpe dados extras da sua instância de destino existente
Ao migrar para uma instância de destino existente , você recebe a seguinte mensagem de erro: The destination instance contains existing data or user defined entities (for example databases, tables, or functions). You can only migrate to empty instances. Clear your destination instance and retry the migration job.
Esse problema poderá ocorrer se a instância de destino contiver dados extras. Você só pode migrar para instâncias existentes que estejam vazias. Consulte Limitações conhecidas .
Coisas para tentar
Limpe os dados extras da sua instância de destino e reinicie o trabalho de migração executando as seguintes etapas:
- Pare o trabalho de migração .
- Neste ponto, sua instância de destino do Cloud SQL está no modo "somente leitura". Promova a instância de destino para obter acesso de gravação.
- Conecte-se à instância de destino do Cloud SQL .
- Remova dados extras dos bancos de dados da instância de destino. Seu destino só pode conter dados de configuração do sistema. Os bancos de dados de destino não podem conter dados do usuário (como tabelas). Existem diferentes instruções SQL que você pode executar em seus bancos de dados para localizar dados que não são do sistema, por exemplo:
Exemplo de instrução SQL para recuperar bancos de dados que não são do sistema (clique para expandir)
SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('cloudsqladmin', 'template1', 'template0', 'postgres');
Exemplo de instrução SQL para recuperar dados que não são do sistema no banco de dados
postgres
(clique para expandir)O banco de dados
postgres
é um banco de dados do sistema, mas pode conter dados que não são do sistema. Certifique-se de executar essas instruções no banco de dadospostgres
. Se você usar o clientepsql
para se conectar à instância de destino, poderá alternar para outro banco de dados sem redefinir sua conexão usando o comando\connect {database_name_here}
.SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema != 'information_schema' AND table_schema not like 'pg\_%'; SELECT routine_schema, routine_name FROM information_schema.routines WHERE routine_schema != 'information_schema' AND routine_schema not like 'pg\_%'; SELECT extname FROM pg_extension WHERE extname != 'plpgsql';
- Inicie o trabalho de migração .
Limpar slots de replicação
Você verá 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.
A questão pode ser
Ao promover uma instância do Cloud SQL, se a instância de origem não puder ser acessada pela instância do Cloud SQL (por exemplo, a instância de origem não estiver em execução ou você tiver removido a instância do Cloud SQL da lista de permissões de instâncias de origem), as configurações necessárias para a replicação não poderão ser limpas durante a promoção de um job de migração. Você deve limpar os slots de replicação manualmente.
Coisas para tentar
Para cada banco de dados, execute os seguintes comandos como um usuário com privilégio superuser
:
Obtenha os nomes dos slots de replicação na mensagem de erro e execute o seguinte comando para eliminar os slots, um por 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 '%cloudsql%' and active = 'f';
Se não houver réplicas do Cloud SQL usando a instância de origem, execute o seguinte comando para limpar as configurações
pglogical
:select pglogical.drop_node(node_name) from pglogical.node where node_name like
'cloudsql';
Se a extensão
pglogical
não for mais necessária, execute o seguinte comando para desinstalar a extensão:DROP EXTENSION IF EXISTS pglogical;
Mensagem de erro: Cannot connect to invalid database
Ao migrar para o PostgreSQL versão 15, após várias tentativas subsequentes de nova tentativa de conexão, ocorre um dos seguintes sintomas:
- Você recebe uma mensagem de erro
Cannot connect to invalid database
. - A métrica do trabalho de migração de uso de armazenamento não mostra nenhum progresso após um longo período de tempo quando o trabalho de migração está executando o dump completo do banco de dados.
A questão pode ser
Este problema é frequentemente atribuído ao problema de impasse na extensão pglogical
. Para obter mais informações, consulte o rastreador de problemas pglogical
no GitHub .
Coisas para tentar
Execute o trabalho de migração novamente com uma nova instância de destino
Tente excluir o banco de dados de destino onde você teve o problema e recrie seu trabalho de migração. Siga estas etapas:
- Exclua a instância de destino onde você teve os problemas. Consulte Excluir instâncias na documentação do Cloud SQL para PostgreSQL.
- Exclua o trabalho de migração com falha. Consulte Revisar um trabalho de migração .
- Recrie seu trabalho de migração. Consulte Criar um trabalho de migração .
Migrar para uma versão intermediária
Considere migrar para uma versão anterior do PostgreSQL, como o PostgreSQL 14. Após uma migração bem-sucedida, você pode tentar atualizar para a instância desejada do PostgreSQL 15. Consulte Atualizar a versão principal do banco de dados migrando dados na documentação do Cloud SQL para PostgreSQL.
Gerenciar usuários e funções
Migrar usuários existentes
Atualmente, o Database Migration Service não oferece suporte à migração de usuários existentes de uma instância de origem para uma instância de destino do Cloud SQL. Você pode gerenciar essa migração criando manualmente os usuários no Cloud SQL .
Sobre o usuário cloudsqlexternalsync
Durante a migração, todos os objetos na réplica do Cloud SQL pertencem ao usuário cloudsqlexternalsync
. Depois que os dados forem migrados, será possível modificar a propriedade dos objetos para outros usuários concluindo as etapas a seguir:
- Execute o comando
GRANT cloudsqlexternalsync to {USER}
. - Em cada banco de dados, execute a
reassign owned by cloudsqlexternalsync to {USER} ;
comando. - Para remover o usuário
cloudsqlexternalsync
, execute o comandodrop role cloudsqlexternalsync
.
Importe dados para uma nova instância do Cloud SQL
Se você primeiro exportar dados de uma instância do Cloud SQL que o Database Migration Service migrou para o Cloud Storage e depois importar os dados do Cloud Storage para uma instância autônoma do Cloud SQL, a importação poderá falhar porque o usuário cloudsqlexternalsync
não existe na instância de destino.
Para atenuar o problema, crie o usuário cloudsqlexternalsync
na instância de destino ou remova o usuário da instância migrada.
O processo de tarefa de migração pode incorrer em erros durante o tempo de execução.
- Alguns erros, como uma senha incorreta no banco de dados de origem, são recuperáveis, o que significa que podem ser corrigidos e o trabalho de migração é retomado automaticamente.
- Alguns são irrecuperáveis, como erros na replicação de dados, o que significa que o trabalho de migração precisa ser reiniciado desde o início.
Quando ocorre um erro, o status do trabalho de migração muda para Failed
e o substatus reflete o último status antes da falha.
Para solucionar um erro, navegue até o trabalho de migração com falha para visualizar o erro e siga as etapas descritas na mensagem de erro.
Para ver mais detalhes sobre o erro, navegue até Cloud Monitoring usando o link no job de migração. Os logs são filtrados para o trabalho de migração específico.
Na tabela a seguir, você encontra alguns exemplos de problemas e como eles podem ser resolvidos:
Para este problema... | O problema pode ser... | Experimente isso... |
---|---|---|
Ao migrar para uma instância de destino existente , você recebe a seguinte mensagem de erro: The destination instance contains existing data or user defined entities (for example databases, tables, or functions). You can only migrate to empty instances. Clear your destination instance and retry the migration job. | A instância de destino do Cloud SQL contém dados extras. Você só pode migrar para instâncias existentes que estejam vazias. Consulte Limitações conhecidas . | Promova sua instância de destino para torná-la uma instância de leitura/gravação, remova os dados extras e tente novamente o trabalho de migração. Consulte Limpar dados extras da sua instância de destino existente . |
Falha na conexão com a instância do banco de dados de origem. | Houve um problema de conectividade entre a instância do banco de dados de origem e a instância de destino. | Siga as etapas em Depurando conectividade . |
Falha ao executar o trabalho de migração devido a versões incompatíveis do banco de dados de origem e destino. | As versões do banco de dados de origem e destino não são uma combinação compatível. Especificamente, a versão do banco de dados de origem fornecida é incompatível com a versão do banco de dados de destino. | Certifique-se de que a versão do banco de dados de destino seja a mesma ou uma versão principal acima da versão do banco de dados de origem. Em seguida, crie um novo trabalho de migração. |
Linguagens de definição de dados (DDLs) ou linguagens de manipulação de dados (DMLs) são bloqueadas na origem. | DDLs que requerem o bloqueio ACCESS EXCLUSIVE e estão em execução durante a fase de dump completo são bloqueados. | Durante o processo de sincronização inicial (full dump), DDLs ou programas que exigem bloqueios Por exemplo, se uma tabela ainda estiver no processo de sincronização inicial e um comando |
Mensagem de erro: No pglogical extension installed on databases (X) | Um ou mais bancos de dados de origem não possuem pglogical instalado. | Siga estas diretrizes para instalar pglogical nos bancos de dados da instância de origem. |
Ao migrar para o PostgreSQL versão 15, após várias tentativas subsequentes de nova tentativa de conexão, ocorre um dos seguintes sintomas:
| Este problema é frequentemente atribuído ao problema de impasse na extensão pglogical . Para obter mais informações, consulte o rastreador de problemas pglogical no GitHub . | Tente novamente o trabalho de migração ou migre primeiro para uma versão intermediária do PostgreSQL. Para obter mais detalhes, consulte Mensagem de erro: Cannot connect to invalid database . |
Mensagem de erro: Replication user 'x' doesn't have sufficient privileges. | O usuário que está usando o Database Migration Service não tem os privilégios necessários para executar a operação designada. | Siga estas diretrizes para garantir que esse usuário tenha os privilégios necessários. |
Mensagem de erro: Unable to connect to source database server. | O Serviço de Migração de Banco de Dados não consegue estabelecer uma conexão com o servidor de banco de dados de origem. | Certifique-se de que as instâncias de banco de dados de origem e de destino possam se comunicar entre si e que você tenha atendido todos os pré-requisitos necessários que apareceram quando você definiu suas configurações para o trabalho de migração . |
Mensagem de erro: The source database 'wal_level' configuration must be equal to 'logical'. | O wal_level do banco de dados de origem está configurado com um valor diferente de logical . | Defina wal_level como 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 esse 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 esse 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 esse parâmetro corretamente. |
Mensagem de erro: OU Mensagem de erro: | As configurações necessárias para replicação não podem ser limpas durante a promoção de um trabalho de migração. | Para cada banco de dados, execute comandos como um usuário com privilégio Para obter mais informações sobre quais comandos executar, consulte Limpar slots de replicação . |
Mensagem de erro: | O certificado CA de origem fornecido ao Database Migration Service pode conter apenas o certificado raiz. No entanto, o certificado de origem requer o certificado raiz e quaisquer certificados intermediários. Por exemplo, para o Amazon Relational Database Service, o uso do certificado rds-ca-2019-root.pem pode resultar nesse problema. | Crie um certificado CA de origem combinado que contenha o certificado raiz e todos os certificados intermediários necessários. Para o caso de uso 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. | Configure o valor desse parâmetro como 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 obter mais informações sobre como instalar este pacote corretamente, consulte Instalar o pacote pglogical na instância de origem . |
Mensagem de erro: | A fonte configurada está no modo de recuperação. | Configure uma fonte que não esteja no modo de recuperação. |
O despejo completo é lento. | O destino do Cloud SQL pode demorar para importar dados grandes do banco de dados de origem. |
|
Mensagem de erro: subscriber {subscriber_name} initialization failed during nonrecoverable step (d), please try the setup again | O trabalho de migração falhou durante a fase de despejo completo e o trabalho não é recuperável. A instância do banco de dados de origem foi reiniciada ou estava em modo de recuperação, ou as conexões de replicação foram encerradas devido a um valor insuficiente definido para o parâmetro Para encontrar a causa raiz do problema:
|
|
Mensagem de erro: ERROR: unknown column name {column_name} | Uma coluna foi adicionada a uma tabela replicada no nó primário, mas não no nó de réplica. | Somente alterações na linguagem de manipulação de dados (DML) são atualizadas automaticamente durante migrações contínuas. O gerenciamento de alterações na linguagem de definição de dados (DDL) para que os bancos de dados de origem e destino permaneçam compatíveis é de responsabilidade do usuário e pode ser feito de duas maneiras:
Consulte Migração contínua para encontrar exemplos de uso do |
Mensagem de erro: ERROR: cannot truncate a table referenced in a foreign key constraint | O usuário tentou truncar uma tabela que possui uma restrição de chave estrangeira. | Remova primeiro a restrição de chave estrangeira e depois trunque a tabela. |
Mensagem de erro: ERROR: connection to other side has died | A conexão de replicação foi encerrada devido a um valor insuficiente definido para o | Considere aumentar o valor do parâmetro |
Mensagem de aviso: migration job test configuration has returned the following warnings: Some table(s) have limited support. | A fonte possui tabelas com suporte limitado, por exemplo, tabelas sem chaves primárias. | Esta é uma mensagem de aviso. Você pode prosseguir com a migração, mas observe que as entidades sem suporte (por exemplo, tabelas sem chaves primárias) não são migradas. Para obter mais informações, consulte Configurar seus bancos de dados de origem . |
Quando você migra bancos de dados selecionados e o trabalho de migração não consegue replicar dados para um ou mais bancos de dados, um status Com falha é exibido na lista de bancos de dados. | Vários erros de trabalho de migração. | Na coluna Erros , clique em Visualizar erros e corrigi-los. Você também pode remover os bancos de dados com falha do trabalho de migração. Para obter mais informações sobre como remover um banco de dados com falha de um trabalho de migração, consulte Gerenciar trabalhos de migração . |
Limpe dados extras da sua instância de destino existente
Ao migrar para uma instância de destino existente , você recebe a seguinte mensagem de erro: The destination instance contains existing data or user defined entities (for example databases, tables, or functions). You can only migrate to empty instances. Clear your destination instance and retry the migration job.
Esse problema poderá ocorrer se a instância de destino contiver dados extras. Você só pode migrar para instâncias existentes que estejam vazias. Consulte Limitações conhecidas .
Coisas para tentar
Limpe os dados extras da sua instância de destino e reinicie o trabalho de migração executando as seguintes etapas:
- Pare o trabalho de migração .
- Neste ponto, sua instância de destino do Cloud SQL está no modo "somente leitura". Promova a instância de destino para obter acesso de gravação.
- Conecte-se à instância de destino do Cloud SQL .
- Remova dados extras dos bancos de dados da instância de destino. Seu destino só pode conter dados de configuração do sistema. Os bancos de dados de destino não podem conter dados do usuário (como tabelas). Existem diferentes instruções SQL que você pode executar em seus bancos de dados para localizar dados que não são do sistema, por exemplo:
Exemplo de instrução SQL para recuperar bancos de dados que não são do sistema (clique para expandir)
SELECT datname FROM pg_catalog.pg_database WHERE datname NOT IN ('cloudsqladmin', 'template1', 'template0', 'postgres');
Exemplo de instrução SQL para recuperar dados que não são do sistema no banco de dados
postgres
(clique para expandir)O banco de dados
postgres
é um banco de dados do sistema, mas pode conter dados que não são do sistema. Certifique-se de executar essas instruções no banco de dadospostgres
. Se você usar o clientepsql
para se conectar à instância de destino, poderá alternar para outro banco de dados sem redefinir sua conexão usando o comando\connect {database_name_here}
.SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema != 'information_schema' AND table_schema not like 'pg\_%'; SELECT routine_schema, routine_name FROM information_schema.routines WHERE routine_schema != 'information_schema' AND routine_schema not like 'pg\_%'; SELECT extname FROM pg_extension WHERE extname != 'plpgsql';
- Inicie o trabalho de migração .
Limpar slots de replicação
Você verá 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.
A questão pode ser
Ao promover uma instância do Cloud SQL, se a instância de origem não puder ser acessada pela instância do Cloud SQL (por exemplo, a instância de origem não estiver em execução ou você tiver removido a instância do Cloud SQL da lista de permissões de instâncias de origem), as configurações necessárias para a replicação não poderão ser limpas durante a promoção de um job de migração. Você deve limpar os slots de replicação manualmente.
Coisas para tentar
Para cada banco de dados, execute os seguintes comandos como um usuário com privilégio superuser
:
Obtenha os nomes dos slots de replicação na mensagem de erro e execute o seguinte comando para eliminar os slots, um por 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 '%cloudsql%' and active = 'f';
Se não houver réplicas do Cloud SQL usando a instância de origem, execute o seguinte comando para limpar as configurações
pglogical
:select pglogical.drop_node(node_name) from pglogical.node where node_name like
'cloudsql';
Se a extensão
pglogical
não for mais necessária, execute o seguinte comando para desinstalar a extensão:DROP EXTENSION IF EXISTS pglogical;
Mensagem de erro: Cannot connect to invalid database
Ao migrar para o PostgreSQL versão 15, após várias tentativas subsequentes de nova tentativa de conexão, ocorre um dos seguintes sintomas:
- Você recebe uma mensagem de erro
Cannot connect to invalid database
. - A métrica do trabalho de migração de uso de armazenamento não mostra nenhum progresso após um longo período de tempo quando o trabalho de migração está executando o dump completo do banco de dados.
A questão pode ser
Este problema é frequentemente atribuído ao problema de impasse na extensão pglogical
. Para obter mais informações, consulte o rastreador de problemas pglogical
no GitHub .
Coisas para tentar
Execute o trabalho de migração novamente com uma nova instância de destino
Tente excluir o banco de dados de destino onde você teve o problema e recrie seu trabalho de migração. Siga estas etapas:
- Exclua a instância de destino onde você teve os problemas. Consulte Excluir instâncias na documentação do Cloud SQL para PostgreSQL.
- Exclua o trabalho de migração com falha. Consulte Revisar um trabalho de migração .
- Recrie seu trabalho de migração. Consulte Criar um trabalho de migração .
Migrar para uma versão intermediária
Considere migrar para uma versão anterior do PostGresql, como o PostGresql 14. Após uma migração bem -sucedida, você pode tentar atualizar para a instância desejada PostGresql 15. Consulte Atualizar a versão principal do banco de dados migrando dados no Cloud SQL para documentação do PostgreSQL.
Gerenciar usuários e funções
Migrar usuários existentes
Atualmente, o serviço de migração de banco de dados não suporta migrar os usuários existentes de uma instância de origem para uma instância de destino da nuvem SQL. Você pode gerenciar essa migração criando os usuários no Cloud SQL manualmente.
Sobre o usuário cloudsqlexternalsync
Durante a migração, todos os objetos na réplica do Cloud SQL são de propriedade do usuário cloudsqlexternalsync
. Depois que os dados forem migrados, você pode modificar a propriedade dos objetos para outros usuários, preenchendo as seguintes etapas:
- Execute o comando
GRANT cloudsqlexternalsync to {USER}
. - Em cada banco de dados, execute a
reassign owned by cloudsqlexternalsync to {USER} ;
comando. - Para remover o usuário
cloudsqlexternalsync
, execute o comandodrop role cloudsqlexternalsync
.
Importar dados para uma nova instância da nuvem SQL
Se você exportar os dados de uma instância SQL em nuvem que o serviço de migração de banco de dados migrou para o armazenamento em nuvem e, em seguida, importe os dados do armazenamento em nuvem para uma instância SQL de nuvem independente, a importação pode falhar porque o usuário cloudsqlexternalsync
não existe na instância de destino.
Para mitigar o problema, crie o usuário cloudsqlexternalsync
na instância de destino ou remova o usuário da instância migrada.