Esta página descreve como atualizar a versão principal do banco de dados atualizando sua instância do Cloud SQL no local em vez de migrar dados .
Introdução
Os provedores de software de banco de dados lançam periodicamente novas versões principais que contêm novos recursos, melhorias de desempenho e melhorias de segurança. O Cloud SQL aceita novas versões após o lançamento. Depois que o Cloud SQL oferecer suporte para uma nova versão principal, você poderá atualizar suas instâncias para manter seu banco de dados atualizado.
Você pode atualizar a versão do banco de dados de uma instância no local ou migrando dados . Atualizações no local são uma maneira mais simples de atualizar a versão principal da sua instância. Você não precisa migrar dados nem alterar as strings de conexão do aplicativo. Com as atualizações no local, você pode manter o nome, o endereço IP e outras configurações da sua instância atual após a atualização. As atualizações no local não exigem a movimentação de arquivos de dados e podem ser concluídas mais rapidamente. Em alguns casos, o tempo de inatividade é menor do que o necessário para migrar seus dados.
A operação de atualização local do Cloud SQL para SQL Server usa o utilitário de atualização local do SQL Server .Planeje uma atualização de versão principal
- Confirme se você tem a função necessária para executar uma atualização de versão principal: Proprietário do Cloud SQL ou Administrador do Cloud SQL .
Escolha uma versão principal de destino.
gcloud
Para obter informações sobre como instalar e começar a usar a CLI do gcloud, consulte Instalar a CLI do gcloud . Para obter informações sobre como iniciar o Cloud Shell, consulte Usar o Cloud Shell .
Para verificar as versões do banco de dados que você pode direcionar para uma atualização local na sua instância, faça o seguinte:
- Execute o seguinte comando.
- Na saída do comando, localize a seção rotulada
upgradableDatabaseVersions
. - Cada subseção retorna uma versão do banco de dados disponível para atualização. Em cada subseção, revise os seguintes campos.
-
majorVersion
: a versão principal que você pode direcionar para a atualização local. -
name
: a string da versão do banco de dados que inclui a versão principal. -
displayName
: o nome de exibição da versão do banco de dados.
gcloud sql instances describe INSTANCE_NAME
Substitua INSTANCE_NAME pelo nome da instância.
REST v1
Para verificar quais versões do banco de dados de destino estão disponíveis para uma atualização local da versão principal, use o método
instances.get
da API de administração do Cloud SQL.Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- INSTANCE_NAME : O nome da instância.
Método HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
upgradableDatabaseVersions: { major_version: "SQLSERVER_2022_STANDARD" name: "SQLSERVER_2022_STANDARD" display_name: "SQL Server 2022 Standard" }
REST v1beta4
Para verificar quais versões do banco de dados de destino estão disponíveis para atualização local da versão principal de uma instância, use o método
instances.get
da API de administração do Cloud SQL.Antes de usar qualquer um dos dados solicitados, faça as seguintes substituições:
- INSTANCE_NAME : O nome da instância.
Método HTTP e URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
Para enviar sua solicitação, expanda uma destas opções:
Você deve receber uma resposta JSON semelhante à seguinte:
upgradableDatabaseVersions: { major_version: "SQLSERVER_2022_STANDARD" name: "SQLSERVER_2022_STANDARD" display_name: "SQL Server 2022 Standard" }
Para obter a lista completa das versões de banco de dados compatíveis com o Cloud SQL, consulte Versões do banco de dados e políticas de versão .
Considere os recursos oferecidos em cada versão principal do banco de dados e resolva as incompatibilidades.
Veja recursos descontinuados e alterações significativas do SQL Server.
Novas versões principais introduzem alterações incompatíveis que podem exigir a modificação do código do aplicativo, do esquema ou das configurações do banco de dados. Antes de atualizar sua instância de banco de dados, revise as notas de versão da versão principal de destino para determinar as incompatibilidades que você precisa corrigir.
Teste a atualização com uma execução de teste.
Execute um teste prático do processo de atualização de ponta a ponta em um ambiente de teste antes de atualizar o banco de dados de produção. Você pode clonar sua instância para criar uma cópia idêntica dos dados para testar o processo de atualização.
Além de validar se a atualização foi concluída com sucesso, execute testes para garantir que o aplicativo se comporte conforme esperado no banco de dados atualizado.
Decida um momento para fazer a atualização.
A atualização requer que a instância fique indisponível por um período. Planeje a atualização durante um período em que a atividade do banco de dados esteja baixa.
Executar a atualização da versão principal
Você pode atualizar a versão principal de uma única instância do Cloud SQL ou atualizar a versão principal de uma instância primária e incluir todas as suas réplicas na atualização, incluindo réplicas em cascata e réplicas entre regiões.
Atualizar a versão principal de uma única instância
Quando você inicia uma operação de atualização para uma única instância, o Cloud SQL faz o seguinte:
- Verifica a configuração da sua instância para garantir que ela seja compatível para uma atualização.
- Depois que o Cloud SQL verifica a configuração, ele torna a instância indisponível.
- Faz um backup pré-atualização.
- Executa a atualização na instância.
- Torna sua instância disponível.
- Faz um backup pós-atualização.
Console
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
- Clique em Editar .
- Na seção Informações da instância , clique no botão Atualizar e confirme que deseja ir para a página de atualização.
- Na página Escolher uma versão do banco de dados , clique na lista Versão do banco de dados para atualização e selecione uma das principais versões do banco de dados disponíveis.
- Clique em Continuar .
- Na caixa ID da instância , insira o nome da instância e clique no botão Iniciar atualização .
Verifique se a versão principal do banco de dados atualizado aparece abaixo do nome da instância na página Visão geral da instância.
gcloud
Inicie a atualização.
Use o comando
gcloud sql instances patch
com o sinalizador--database-version
.Antes de executar o comando, substitua o seguinte:
- INSTANCE_NAME : O nome da instância.
- DATABASE_VERSION : A enumeração para a versão principal do banco de dados, que deve ser posterior à versão atual. Especifique uma versão do banco de dados para uma versão principal que esteja disponível como destino de atualização para a instância. Você pode obter esta enumeração como a primeira etapa de "Plan for upgrade" . Se precisar de uma lista completa de enumerações de versão do banco de dados, consulte SqlDatabaseEnums .
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION
As atualizações de versões principais levam vários minutos para serem concluídas. Você pode ver uma mensagem indicando que a operação está demorando mais do que o esperado. Ignore esta mensagem ou execute o comando
gcloud sql operations wait
para descartar a mensagem.Obtenha o nome da operação de atualização.
Use o comando
gcloud sql operations list
com o sinalizador--instance
.Antes de executar o comando, substitua a variável INSTANCE_NAME pelo nome da instância.
gcloud sql operations list --instance=INSTANCE_NAME
Monitore o status da atualização.
Use o comando
gcloud sql operations describe
.Antes de executar o comando, substitua a variável OPERATION pelo nome da operação de atualização recuperada na etapa anterior.
gcloud sql operations describe OPERATION
REST v1
Inicie a atualização no local.
Use uma solicitação PATCH com o método
instances:patch
.Antes de usar qualquer dado solicitado, substitua estas variáveis:
- PROJECT_ID : O ID do projeto.
- INSTANCE_NAME : O nome da instância.
Método HTTP e URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Corpo JSON da solicitação:
{ "databaseVersion": DATABASE_VERSION }
Substitua DATABASE_VERSION pela enumeração da versão principal do banco de dados, que deve ser posterior à versão atual. Especifique uma versão do banco de dados para uma versão principal que esteja disponível como destino de atualização para a instância. Você pode obter essa enumeração como a primeira etapa de "Plan for upgrade" (Planejar atualização) . Se precisar de uma lista completa de enumerações de versões do banco de dados, consulte SqlDatabaseVersion .
Obtenha o nome da operação de atualização.
Use uma solicitação GET com o método
operations.list
depois de substituir PROJECT_ID pelo ID do projeto.Método HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
Monitore o status da atualização.
Use uma solicitação GET com o método
operations.get
depois de substituir as seguintes variáveis:- PROJECT_ID : O ID do projeto.
- OPERATION_NAME : O nome da operação de atualização recuperado na etapa anterior.
Método HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Terraform
Para atualizar a versão do banco de dados, use um recurso do Terraform e o provedor do Terraform para Google Cloud, versão 4.34.0 ou posterior .
Aplicar as alterações
Para aplicar sua configuração do Terraform em um Google Cloud projeto, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell .
Defina o padrão Google Cloud projeto onde você deseja aplicar suas configurações do Terraform.
Você só precisa executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform deve ter seu próprio diretório (também chamado de módulo raiz ).
- No Cloud Shell , crie um diretório e um novo arquivo dentro dele. O nome do arquivo deve ter a extensão
.tf
— por exemplo,main.tf
Neste tutorial, o arquivo será chamado demain.tf
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Se estiver seguindo um tutorial, você pode copiar o código de exemplo em cada seção ou etapa.
Copie o código de exemplo no
main.tf
recém-criado.Opcionalmente, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução completa.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve suas alterações.
- Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplicar as alterações
- Revise a configuração e verifique se os recursos que o Terraform irá criar ou atualizar correspondem às suas expectativas:
terraform plan
Faça correções na configuração conforme necessário.
- Aplique a configuração do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Aplicação concluída!".
- Abra seu Google Cloud projeto para visualizar os resultados. No Google Cloud console, navegue até seus recursos na interface do usuário para garantir que o Terraform os criou ou atualizou.
Excluir as alterações
Para excluir suas alterações, faça o seguinte:
- Para desabilitar a proteção contra exclusão, no seu arquivo de configuração do Terraform defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração atualizada do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform apply
Remova os recursos aplicados anteriormente com sua configuração do Terraform executando o seguinte comando e digitando
yes
no prompt:terraform destroy
Ao fazer uma solicitação de atualização local, o Cloud SQL primeiro realiza uma verificação pré-atualização. Se o Cloud SQL determinar que sua instância não está pronta para uma atualização, sua solicitação de atualização falhará e exibirá uma mensagem sugerindo como você pode resolver o problema. Consulte também Solucionar problemas de uma atualização de versão principal .
Backups de atualização automática
Quando você executa uma atualização de versão principal, o Cloud SQL faz automaticamente dois backups sob demanda, chamados backups de atualização:
- O primeiro backup de atualização é o backup de pré-atualização , feito imediatamente antes do início da atualização. Você pode usar esse backup para restaurar a instância do seu banco de dados ao estado da versão anterior.
- O segundo backup de atualização é o backup pós-atualização , que é feito imediatamente após novas gravações serem permitidas na instância do banco de dados atualizada.
Ao visualizar sua lista de backups , os backups de atualização são listados com o tipo On-demand
. Os backups de atualização são rotulados para que você possa identificá-los rapidamente. Por exemplo, se você estiver atualizando do SQL Server Enterprise 2017 para o SQL Server Enterprise 2019 ou SQL Server Enterprise 2022, seu backup de pré-atualização será rotulado como Pre-upgrade backup, SQLSERVER_2017_ENTERPRISE to SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE.
e seu backup de pós-atualização será rotulado como Post-upgrade backup, SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE from SQLSERVER_2017_ENTERPRISE.
Assim como acontece com outros backups sob demanda, os backups de atualização persistem até que você os exclua ou exclua a instância.
Atualizar o nível de compatibilidade do banco de dados
O nível de compatibilidade do banco de dados determina como o banco de dados se comporta em relação ao aplicativo que atende. A configuração do nível de compatibilidade do banco de dados garante a compatibilidade com versões anteriores do SQL Server e está relacionada às alterações no Transact-SQL e no Query Optimizer. Quando uma versão do banco de dados de instância do SQL Server é atualizada, os níveis de compatibilidade dos bancos de dados existentes são preservados, de modo que o aplicativo possa continuar a operar na versão mais recente do SQL Server. Atualizar o nível de compatibilidade ajuda você a se beneficiar de novos recursos, melhorias no processamento de consultas e outras alterações.
Após atualizar a versão do mecanismo de banco de dados de uma instância, quando o aplicativo que o banco de dados atende estiver pronto, atualize o nível de compatibilidade de cada banco de dados na instância. Quando o nível de compatibilidade estiver definido como o mais recente, os bancos de dados serão atualizados com os recursos mais recentes e desempenho aprimorado.
Para atualizar o nível de compatibilidade do banco de dados, execute as seguintes etapas:
Identifique o nível de compatibilidade atual do seu banco de dados.
Por exemplo, para o SQL Server 2017, o nível de compatibilidade padrão é 140. Para verificar o nível de compatibilidade atual do seu banco de dados, execute o seguinte comando no Transact-SQL, após substituir
DATABASE_NAME
com o nome do banco de dados na sua instância do SQL Server.
USE DATABASE_NAME GO SELECT compatibility_level FROM sys.databases WHERE name = 'DATABASE_NAME'
Determine o nível de compatibilidade alvo.
Identifique a designação do nível de compatibilidade padrão para a versão atualizada do seu banco de dados para determinar o nível de compatibilidade desejado para o seu banco de dados. Por exemplo, para o SQL Server 2022, o nível de compatibilidade padrão é 160. Consulte a tabela que mapeia as novas versões do SQL Server com os níveis de compatibilidade .
Avalie as diferenças entre seus níveis de compatibilidade atuais e desejados.
Antes de atualizar o nível de compatibilidade, estude as diferenças no comportamento do sistema entre o seu nível de compatibilidade atual e o seu nível de compatibilidade desejado. Veja a lista completa das diferenças entre os níveis de compatibilidade .
Colete uma linha de base de dados de carga de trabalho.
Antes de atualizar o nível de compatibilidade, colete uma linha de base de dados de carga de trabalho usando o SQL Server Query Store para que você possa identificar e lidar posteriormente com consultas regredidas. Use o Query Store para capturar consultas e planos para um ciclo de negócios típico e estabelecer uma linha de base de desempenho. Para um fluxo de trabalho guiado, use o recurso Assistente de Ajuste de Consulta no SQL Server Management Studio.
Atualize o nível de compatibilidade.
Para alterar o nível de compatibilidade do banco de dados, execute o seguinte comando no Transact-SQL, após substituir
DATABASE_NAME
com o nome do banco de dados na sua instância do SQL Server e
TARGET_COMPATIBILITY_LEVEL
com o nível de compatibilidade de destino.ALTER DATABASE DATABASE_NAME SET COMPATIBILITY_LEVEL = TARGET_COMPATIBILITY_LEVEL; GO
Colete dados de carga de trabalho atualizados.
Colete dados de carga de trabalho atualizados usando o Query Store para comparação e detecção de regressão.
Aborde consultas regredidas.
Na maioria dos casos, as alterações do Query Optimizer nos níveis de compatibilidade atualizados melhoram o desempenho. No entanto, ocasionalmente, o desempenho de determinadas consultas pode diminuir. O recurso Consultas Regressadas do Query Store ajuda a identificar as consultas que regrediram e permite forçar o último plano de consulta válido conhecido. O SQL Server também oferece correção automática de plano , que pode alternar automaticamente para o último plano válido conhecido em caso de regressão da consulta.
Conclua a atualização da versão principal
Depois de atualizar sua instância primária, execute testes de aceitação para garantir que o sistema atualizado funcione conforme o esperado.
Solucionar problemas de uma atualização de versão principal
O Cloud SQL retornará uma mensagem de erro se você tentar um comando de atualização inválido, por exemplo, se sua instância contiver sinalizadores de banco de dados inválidos para a nova versão.
Se a sua solicitação de atualização falhar, verifique a sintaxe da solicitação. Se a solicitação tiver uma estrutura válida, tente analisar as seguintes sugestões.
Exibir logs de atualização
Caso ocorra algum problema com uma solicitação de atualização válida, o Cloud SQL publica logs de erros em projects/ PROJECT_ID /logs/cloudsql.googleapis.com%2Fsqlserver.err
. Cada entrada de log contém um rótulo com o identificador da instância para ajudar a identificar a instância com o erro de atualização. Procure por esses erros de atualização e resolva-os.
Para visualizar os logs de erros, siga estas etapas:
No Google Cloud console, acesse a página Instâncias do Cloud SQL .
- Para abrir a página Visão geral de uma instância, clique no nome da instância.
No painel Operações e logs da página Visão geral da instância, clique no link Exibir logs de erros do SQL Server .
A página Logs Explorer é aberta.
Visualize os logs da seguinte forma:
- Para listar todos os logs de erros em um projeto, selecione o nome do log no filtro de log Nome do log.
Para obter mais informações sobre filtros de consulta, consulte Consultas avançadas .
- Para filtrar os logs de erro de atualização para uma única instância, insira a seguinte consulta na caixa Pesquisar todos os campos , após substituir
DATABASE_ID
com o ID do projeto seguido pelo nome da instância neste formato:
project_id:instance_name
.resource.type="cloudsql_database" resource.labels.database_id="DATABASE_ID" logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err"
Por exemplo, para filtrar os logs de erros de atualização por uma instância chamada
shopping-db
em execução no projetobuylots
, use o seguinte filtro de consulta:resource.type="cloudsql_database" resource.labels.database_id="buylots:shopping-db" logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fsqlserver.err"
Restaurar a instância primária para a versão principal anterior
Se o seu sistema de banco de dados atualizado não apresentar o desempenho esperado, talvez seja necessário restaurar a instância primária para a versão anterior. Para isso, restaure o backup anterior à atualização para uma instância de recuperação do Cloud SQL, que é uma nova instância executando a versão anterior à atualização.
Para restaurar uma instância primária para a versão anterior, execute as seguintes etapas:
Identifique seu backup de pré-atualização.
Consulte Backups de atualização automática .
Crie uma instância de recuperação.
Crie uma nova instância do Cloud SQL usando a versão principal que o Cloud SQL estava executando quando o backup de pré-atualização foi feito. Defina os mesmos sinalizadores e configurações de instância que a instância original usa.
Restaure seu backup pré-atualização.
Restaure seu backup pré-atualização para a instância de recuperação. Isso pode levar vários minutos.
Adicione suas réplicas de leitura.
Se você estiver usando réplicas de leitura, adicione-as individualmente.
Conecte seu aplicativo.
Após recuperar seu sistema de banco de dados, atualize seu aplicativo com detalhes sobre a instância de recuperação e suas réplicas de leitura. Você pode retomar o serviço de tráfego na versão anterior à atualização do seu banco de dados.
Limitações
Esta seção lista as limitações para uma atualização de versão principal no local.
- Não é possível executar uma atualização de versão principal no local em uma réplica externa .
Perguntas frequentes
As seguintes perguntas podem surgir ao atualizar a versão principal do banco de dados.
- Sim. Sua instância permanecerá indisponível por um período enquanto o Cloud SQL realiza a atualização.
- Quanto tempo demora uma atualização?
Atualizar uma única instância normalmente leva menos de 10 minutos. Se a configuração da sua instância tiver um número pequeno de vCPUs ou memória, a atualização poderá levar mais tempo.
Se a sua instância hospedar muitos bancos de dados ou tabelas, ou se os bancos de dados forem muito grandes, a atualização poderá levar horas ou até mesmo expirar, pois o tempo total de atualização corresponde ao número de objetos nos seus bancos de dados. Se você tiver várias instâncias que precisam ser atualizadas, o tempo de atualização aumentará proporcionalmente.
- Posso monitorar cada etapa do meu processo de atualização?
- Embora o Cloud SQL permita monitorar se uma operação de atualização ainda está em andamento, não é possível rastrear as etapas individuais de cada atualização.
- Posso cancelar minha atualização depois de iniciá-la?
- Não, você não pode cancelar uma atualização depois que ela tiver sido iniciada. Se a atualização falhar, o Cloud SQL recuperará automaticamente sua instância na versão anterior.
- O que acontece com minhas configurações durante uma atualização?
Ao realizar uma atualização de versão principal no local, o Cloud SQL mantém as configurações do seu banco de dados, incluindo o nome da instância, o endereço IP, os valores de sinalizador configurados explicitamente e os dados do usuário. No entanto, o valor padrão das variáveis do sistema pode mudar.
Para saber mais, consulte Configurar sinalizadores de banco de dados . Se um determinado sinalizador ou valor não for mais compatível com a versão de destino, o Cloud SQL o removerá automaticamente durante a atualização.
O que vem a seguir
- Saiba mais sobre opções para se conectar a uma instância .
- Saiba mais sobre como importar e exportar dados .
- Saiba mais sobre como definir sinalizadores de banco de dados .