Eu tenho um banco de dados de produção que me disseram que está "nomeado incorretamente". Existe uma maneira de alterar o nome sem interrupção?
O banco de dados em questão tem um nome semelhante prod_api_db
e deve ser nomeado api_db
.
Eu esperava que houvesse uma maneira de criar um "alias", por assim dizer, de modo que ambos os nomes sejam válidos e apontem para o mesmo banco de dados por um período de tempo enquanto todas as configurações do aplicativo são atualizadas com o novo nome. Depois que tudo estiver atualizado, o nome antigo poderá ser removido.
-- Stage 1, create alias "api_db":
apps ==> prod_api_db
> actual_database
api_db
-- Stage 2, Update app configs:
prod_api_db
> actual_database
apps ==> api_db
-- Stage 3, Remove old name:
apps ==> api_db > actual_database
Esse tipo de funcionalidade existe no postgres?
Apenas como pano de fundo, este é o postgres 11. Eu tenho servidores dev, qa e produção para trabalhar, para que eu possa testar antes de aplicar uma alteração.
Perdoe-me se estou sendo muito ignorante sobre isso. Eu não sou um DBA... apenas um SRE trabalhando para uma pequena empresa que foi encarregada de algum banco de dados, e ainda não encontrei uma boa resposta.
Não, um banco de dados pode ter apenas um único nome.
Você terá que desconectar todas as sessões antes de renomear o banco de dados.
Você terá que atualizar o nome do banco de dados em todas as cadeias de conexão. O último pode ser evitado se você usar a pesquisa de cadeia de conexão LDAP , mas acho que você não deseja executar um servidor LDAP em uma organização pequena.
Dependendo do tamanho e das necessidades do seu aplicativo: você pode considerar tornar o banco de dados somente leitura, despejá-lo e restaurá-lo com um novo nome. Por exemplo, se seu aplicativo for uma loja virtual, ele ainda poderá ser veiculado, mas nenhum novo artigo ou pedido poderá ser publicado.
Reconfigure seu aplicativo para apontar para o novo banco de dados e elimine o banco de dados antigo:
Você pode espremer um proxy (por exemplo: pg_bouncer) entre seu aplicativo e o postgres. em seguida, defina os dois nomes no proxy
Em seguida, reconfigure seu aplicativo para usar o novo nome e, finalmente, renomeie o banco de dados e remova o proxy.
Como alternativa, você pode falsificá-lo usando wrappers de dados estrangeiros para permitir que consultas no nome do banco de dados antigo acessem o novo nome.