Fazer upgrade para uma nova versão principal

Databases for MongoDB oferece dois caminhos de atualização diferentes:

  • Atualização no local para uma nova versão principal (atualmente compatível com o Plano MongoDB Standard e o Plano MongoDB Enterprise).
  • Restaurando a partir do backup (suportado para o Plano MongoDB Standard e o Plano MongoDB Enterprise).

Atualizações de versões principais no local

O upgrade de versão principal no local permite que você atualize sua implementação para a próxima versão principal, eliminando a necessidade de restaurar um backup em uma nova implementação. Essa abordagem mantém as mesmas cadeias de conexão, sem a necessidade de reconfigurar a implantação. No entanto, se a nova versão principal exigir ajustes no aplicativo, esses ajustes deverão ser feitos.

Durante a janela de atualização da versão principal no local (incluindo um backup), a implantação é definida como setUserWriteBlockMode, que permite apenas operações de leitura, mas não operações de gravação na implantação para garantir uma atualização segura. Assim que a atualização da versão principal da implantação for concluída, o writeBlockMode será removido.

Há duas opções ao realizar um upgrade de versão principal no local:

  • Atualização da versão principal no local com backup: este caminho cria um backup antes de realizar a atualização propriamente dita, proporcionando uma camada adicional de segurança (a única opção para o Plano MongoDB Empresarial).

  • Upgrade de versão principal no local sem backup: Essa opção prossegue com o upgrade sem criar um backup previamente. Caso o upgrade no local não seja bem-sucedido, será necessário restaurar a implementação a partir do backup mais recente em uma nova implementação.

    O upgrade no local sem backup não é recomendado. Isso pode resultar em perda de dados se o upgrade falhar em qualquer estágio, pois não haverá backup imediato para restauração.

    [A recuperação em um ponto no tempo](/docs/databases-for-mongodb?topic=databases-for-mongodb-pitr) e [a restauração off-line por recuperação em um ponto no tempo(PITR)](/docs/databases-for-mongodb?topic=databases-for-mongodb-pitr#pitr-offline-restore) não estão disponíveis temporariamente para uma versão até que um snapshot dessa versão seja concluído e seu backup seja realizado com sucesso. Este instantâneo não aparece na sua lista de backups.
    

Antes de Iniciar

Considere os seguintes aspectos antes de iniciar o procedimento de upgrade.

  • Sua implementação deve estar em um estado saudável antes da atualização.
  • Sua implantação deve ter pelo menos 2 GB de espaço livre em disco.
  • Sua implantação não deve ter nenhum usuário com privilégio para bypassWriteBlockingMode.
  • Você só pode atualizar para a próxima versão principal, em vez de especificar a versão de sua escolha.
  • Cada versão principal contém alguns recursos que podem não ser compatíveis com as versões anteriores. Verifique as notas de versão do fornecedor do banco de dados para ver as alterações que podem afetar seus aplicativos.
  • Não há suporte para o downgrade de uma implementação para uma versão anterior.
  • O upgrade de versão principal no local não pode ser cancelado depois de iniciado.
  • Para o MongoDB Enterprise Edition, deve haver pelo menos um backup disponível antes da atualização.
  • Conforme MongoDB Enterprise Edition, a restauração e a atualização por meio do PITR com um ponto no tempo da versão anterior, após uma atualização de versão principal no local, devem ser realizadas em duas etapas distintas.

Fazendo upgrade na IU

  1. Crie um novo Databases for MongoDB para testar o processo de atualização.
    Crie a implantação restaurando um backup da sua implantação existente com a mesma versão.

  2. Direcione seu aplicativo de teste para a implantação de teste.
    Atualize seu aplicativo de teste para que ele aponte para a implantação de teste. Confirme se o aplicativo de teste pode se conectar com êxito à implantação de teste e se o aplicativo funciona conforme o esperado. Realizar todos os testes operacionais e de desempenho necessários do ambiente de preparação.

  3. Atualize a versão principal da sua implantação de teste clicando no botão “Atualizar versão principal ” na página “Visão geral ”.
    Isso colocará seu banco de dados no modo SOMENTE LEITURA enquanto o processo de atualização for concluído. Observe o tempo que o upgrade leva para ser concluído para que você possa usar a configuração de expiração do upgrade para conter os upgrades dentro da janela de manutenção.

  4. Verifique se o seu aplicativo de teste funciona com a nova versão do banco de dados.
    Se o seu aplicativo estiver funcionando, esta etapa confirma que é seguro atualizar seu banco de dados de produção.

  5. Atualize a implantação do banco de dados de produção para a nova versão.
    Depois de confirmar que seu aplicativo funciona corretamente com a nova versão do banco de dados, você pode retornar ao console de gerenciamento e iniciar o processo de atualização da sua implantação em produção. Na seção Detalhes da implantação da página Visão geral, clique no botão Atualizar versão principal e siga as etapas.

    Uma vez iniciado o processo de upgrade no local, ele não pode ser interrompido ou revertido. Portanto, no caso improvável de um erro, a implementação do banco de dados pode se tornar irrecuperável. Portanto, crie um backup que possa ser usado para restaurar em uma nova implementação. Se você selecionar 'In-place major version upgrade with backup', o backup criado poderá ser usado para restaurar em uma nova implementação.

O site expiration for starting upgrade permite que você configure um período de "tempo limite" dentro do qual o trabalho de upgrade deve ser iniciado antes de ser automaticamente cancelado. Além disso, teste o upgrade na preparação antecipadamente para garantir que o upgrade seja concluído dentro da janela de tempo desejada. Se, por exemplo, você quiser concluir o upgrade em 1 hora, testou o upgrade e sabe que ele leva 30 minutos, então o trabalho de upgrade deve ser iniciado em 30 minutos após a confirmação de que deseja fazer o upgrade. Portanto, defina a expiração para 30 minutos, para que, se não for iniciada dentro desse período, ela não ultrapasse sua janela.

Fazendo upgrade por meio da API

Use o seguinte comando para fazer upgrade no local:

curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "7.0"}'

O site expiration for starting upgrade permite que você configure um período de "tempo limite" dentro do qual o trabalho de upgrade deve ser iniciado antes de ser automaticamente cancelado. Além disso, teste o upgrade na preparação antecipadamente para garantir que o upgrade seja concluído dentro da janela de tempo desejada. Se, por exemplo, você quiser concluir o upgrade em 1 hora, testou o upgrade e sabe que ele leva 30 minutos, então o trabalho de upgrade deve ser iniciado em 30 minutos após a confirmação de que deseja fazer o upgrade. Portanto, defina a expiração para um carimbo de data/hora de 30 minutos a partir de agora, para que, se não for iniciada dentro desse período, não ultrapasse sua janela. A expiração deve estar entre 5 minutos (padrão) e 24 horas a partir de agora. Para obter mais informações, consulte a API Cloud Databases.

Fazendo upgrade por meio da CLI

Disponível na versão do plug-in CDB >= 0.20.0

Para exibir a lista de transições de upgrade e restauração permitidas para a implementação:

ibmcloud cdb deployment-capability-show <NAME|CRN> versions

Para atualizar o comando com os parâmetros necessários:

ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>

Para ver todos os detalhes dos parâmetros de comando:

ibmcloud cdb deployment-version-upgrade --help

O site expiration for starting upgrade permite que você configure um período de "tempo limite" dentro do qual o trabalho de upgrade deve ser iniciado antes de ser automaticamente cancelado. Além disso, teste o upgrade na preparação antecipadamente para garantir que o upgrade seja concluído dentro da janela de tempo desejada. Se, por exemplo, você quiser concluir o upgrade em 1 hora, testou o upgrade e sabe que ele leva 30 minutos, então o trabalho de upgrade deve ser iniciado em 30 minutos após a confirmação de que deseja fazer o upgrade. Portanto, defina a expiração para 30 minutos, para que, se não for iniciada dentro desse período, ela não ultrapasse sua janela. A expiração deve estar entre 5 minutos (padrão) e 24 horas a partir de agora. Há duas maneiras de definir a expiração usando a CLI --expire-in ou --expire-at. Para obter mais informações, consulte a ajuda do comando.

Atualização por meio do Terraform

Disponível na versão do provedor Terraform >= 1.79.2

Para atualizar, basta adicionar ou alterar o valor version em sua configuração. Há também um sinalizador bool opcional, version_upgrade_skip_backup, que você pode definir para ignorar o backup.

Não é recomendável pular um backup. Ignorar um backup antes de uma atualização de versão é perigoso e pode resultar em perda de dados se a atualização falhar em qualquer estágio - não haverá backup imediato para restauração.

O banco de dados será colocado no modo READ-ONLY durante a atualização. É altamente recomendável testar antes de fazer o upgrade.

A atualização pode exigir mais tempo do que o tempo limite padrão. Um valor de tempo limite mais longo pode ser definido com o uso do atributo timeouts.

O Terraform tem timeouts em vez de registros de data e hora de expiração. Portanto, aumente o tempo limite, pois o valor de atualização do tempo limite é usado como expiração. Por exemplo, se você definir um tempo limite de 20 minutos, a expiração será definida como 20 minutos e, se o upgrade não for iniciado nesse período, ela expirará e o upgrade não será iniciado. Observe que a expiração máxima é de 24 horas; portanto, mesmo que você defina um tempo limite de 36 horas, o upgrade expirará se não for iniciado nas primeiras 24 horas.

Se uma atualização estiver em andamento, observe que algumas tarefas podem estar na fila e não serão executadas até que a atualização da versão seja concluída.

Resolução de problemas

Usuário com bypassWriteBlockingMode

Para garantir um upgrade seguro, nenhum usuário deve ser capaz de executar uma ação de gravação durante o backup ou o upgrade. Antes de o banco de dados entrar no writeBlockMode, é feita uma verificação se algum usuário tem o privilégio de bypassWriteBlockingMode. Se esse usuário for identificado, a tarefa entrará em um estado de falha. Qualquer nova tentativa falhará e somente a remoção de um usuário com esse privilégio permite executar a atualização da versão principal no local.

Controles de saúde

Se uma instância de serviço estiver com poucos recursos, a tarefa falhará porque não é possível garantir uma atualização segura nessas circunstâncias. O consumo de recursos pode ser avaliado usando a integração de monitoramento. Se nem todos os componentes do banco de dados estiverem disponíveis para upgrade, a tarefa de upgrade falhará.

Para o MongoDBEnterprise EditionPITR, o suporte requer que existam instantâneos atuais sem lacunas, e nenhum instantâneo será realizado durante a atualização. Se o PITR não puder ser garantido, a atualização no local falhará.

Isso pode ocorrer devido à manutenção ou ao uso do banco de dados. As tarefas que falharam devido a falhas nos controles de integridade podem ser tentadas novamente mais tarde. Se a tarefa continuar falhando, abra um ticket de suporte com IBM Cloud o suporte.

Restaurando do backup

Antes que uma versão principal de um banco de dados chegue ao fim de sua vida útil (EOL), faça o upgrade para a próxima versão principal disponível restaurando a partir de um backup em uma nova instância do banco de dados.

Prepare-se para executar e, em seguida, migrar para a versão mais recente antes da data EOL. Para obter informações adicionais, consulte Política de versão.

O retrocesso de versões não é suportado

Atualize para a versão mais recente do MongoDB, disponível em Databases for MongoDB. Localize a versão mais recente da página de catálogos, do comando de plug-in da CLI Cloud Databases ibmcloud cdb deployables-show ou do terminal da API Cloud Databases /deployables.

A atualização é feita por meio da restauração de um backup dos seus dados em uma nova implantação. A restauração de um backup tem várias vantagens:

  • O banco de dados original permanece em execução e o trabalho de produção pode ficar sem interrupção.
  • É possível testar o novo banco de dados fora de produção e tomar ações com relação a quaisquer incompatibilidades do aplicativo.
  • O processo inteiro pode ser executado novamente em qualquer ponto.
  • Uma nova restauração reduz a probabilidade de que artefatos desnecessários da versão mais antiga do banco de dados sejam transportados para o novo banco de dados.

Caminhos de upgrade

Caminhos de atualização de versões principais
Versão atual Caminho de upgrade da versão principal
MongoDB 7 MongoDB 8

Fazendo upgrade na IU

Para novos modelos de hospedagem (computação isolada e computação compartilhada), a atualização para uma nova versão principal está disponível por meio da CLI e da API.

Você pode atualizar para uma nova versão restaurando um backup na página Backups e restauração da sua implantação no console IBM Cloud. Clique em Restaurar backup em um backup para abrir uma página em uma nova guia, na qual você pode alterar algumas opções para a nova implantação. Uma delas é a versão do banco de dados, que é preenchida automaticamente com as versões disponíveis para as quais você fará upgrade. Selecione uma versão e clique em “Restaurar backup” para iniciar o processo de provisionamento e restauração.

Fazendo upgrade por meio da CLI

Ao fazer upgrade e restauração do backup por meio da CLI da IBM Cloud, use o comando de fornecimento do controlador de recurso.

ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>

Os parâmetros instance_name, service_id, service_plan_id e region são todos obrigatórios. Você também fornece o -p com a versão e os parâmetros de ID de backup em um objeto JSON. A nova implementação é dimensionada automaticamente com o mesmo disco e a memória que a implementação de origem no momento do backup.

ibmcloud resource service-instance-create example-upgrade databases-for-mongodb standard us-south \
-p \ '{
  "backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
  "version":"7.0"
}'

Fazendo upgrade por meio da API

Assim como no provisionamento por meio da API, é necessário concluir as etapas necessárias para usar a API do controlador de recursos antes de poder utilizá-la para atualizar a partir de um backup. Em seguida, envie à API uma solicitação de POST. Os parâmetros name, target, resource_group e resource_plan_id são todos necessários. Informe também a versão e o ID do backup. A nova implementação tem a mesma alocação de memória e de disco que a implementação de origem no momento do backup.

curl -X POST   https://resource-controller.cloud.ibm.com/v2/resource_instances   -H 'Authorization: Bearer <>'   -H 'Content-Type: application/json'     -d '{
    "name": "my-instance",
    "target": "us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-mongodb-standard",
    "backup_id": "crn:v1:bluemix:public:databases-for-mongodb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
    "version":"7.0"
  }'

Atualização por meio do Terraform

Use o Terraform para restaurar um backup de uma versão mais antiga para uma nova versão.

  1. Defina seu backup_id. Para obter mais informações, consulte backup_id.
  2. Defina seu version no atributo de versão. Para obter mais informações, consulte version.

O código é parecido com o seguinte:

resource "ibm_database" "<your-instance>" {
  name                                 = "<your_database_name>"
  service                              = "<service>"
  plan                                 = "<plan>"
  location                             = "<region>"
  version                              = "<version>"
  backup_id                            = "<backup_id>"
}

Para obter mais informações, consulte o Cloud Databases Terraform Registry. Como alternativa, você pode usar o Terraform IBM Modules(TIM) para criar uma nova instância de banco de dados a partir de uma instância de backup. Para obter mais informações, consulte Exemplo de restauração a partir de backup.