Esta página descreve como atualizar a versão principal da base de dados atualizando a instância do Cloud SQL no local, em vez de migrar dados.
Introdução
Os fornecedores de software de base de dados lançam periodicamente novas versões principais que contêm novas funcionalidades, melhorias de desempenho e melhoramentos de segurança. O Cloud SQL aceita novas versões após o respetivo lançamento. Depois de o Cloud SQL oferecer suporte para uma nova versão principal, pode atualizar as suas instâncias para manter a base de dados atualizada.
Pode atualizar a versão da base de dados de uma instância no local ou migrando os dados. As atualizações no local são uma forma mais simples de atualizar a versão principal da sua instância. Não precisa de migrar dados nem alterar strings de ligação de aplicações. Com as atualizações no local, pode manter o nome, o endereço IP e outras definições da sua instância atual após a atualização. As atualizações no local não exigem que mova ficheiros de dados e podem ser concluídas mais rapidamente. Em alguns casos, o tempo de inatividade é inferior ao que a migração dos seus dados implica.
A operação de atualização no local do Cloud SQL para SQL Server usa o utilitário de atualização no local do SQL Server.Planeie uma atualização da versão principal
- Confirme que tem a função necessária para fazer uma atualização da versão principal: Proprietário do Cloud SQL ou Administrador do Cloud SQL.
Escolha uma versão principal de destino.
gcloud
Para informações sobre a instalação e o início da utilização da CLI gcloud, consulte o artigo Instale a CLI gcloud. Para obter informações sobre como iniciar a Cloud Shell, consulte o artigo Use a Cloud Shell.
Para verificar as versões da base de dados que pode segmentar para uma atualização no local na sua instância, faça o seguinte:
- Execute o seguinte comando.
- Na saída do comando,
localize a secção com a etiqueta
upgradableDatabaseVersions
. - Cada subsecção devolve uma versão da base de dados que está disponível para atualização. Em cada subsecção, reveja os seguintes campos.
majorVersion
: a versão principal que pode segmentar para a atualização no local.name
: a string da versão da base de dados que inclui a versão principal.displayName
: o nome a apresentar da versão da base de dados.
gcloud sql instances describe INSTANCE_NAME
Substitua INSTANCE_NAME pelo nome da instância.
REST v1
Para verificar que versões da base de dados de destino estão disponíveis para uma atualização no local de uma versão principal, use o método
instances.get
da API Cloud SQL Admin.Antes de usar qualquer um dos dados do pedido, 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 o seu pedido, expanda uma destas opções:
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 que versões da base de dados de destino estão disponíveis para a atualização no local da versão principal de uma instância, use o método
instances.get
da API Admin do Cloud SQL.Antes de usar qualquer um dos dados do pedido, 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 o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
upgradableDatabaseVersions: { major_version: "SQLSERVER_2022_STANDARD" name: "SQLSERVER_2022_STANDARD" display_name: "SQL Server 2022 Standard" }
Para ver a lista completa das versões de bases de dados suportadas pelo Cloud SQL, consulte o artigo Versões de bases de dados e políticas de versões.
Considere as funcionalidades oferecidas em cada versão principal da base de dados e resolva as incompatibilidades.
Consulte as funcionalidades descontinuadas e as alterações significativas do SQL Server.
As novas versões principais introduzem alterações incompatíveis que podem exigir que modifique o código da aplicação, o esquema ou as definições da base de dados. Antes de poder atualizar a instância da base de dados, reveja as notas de lançamento da versão principal de destino para determinar as incompatibilidades que tem de resolver.
Teste a atualização com um teste prévio.
Faça um teste do processo de atualização ponto a ponto num ambiente de teste antes de atualizar a base de dados de produção. Pode clonar a sua instância para criar uma cópia idêntica dos dados nos quais testar o processo de atualização.
Além de validar se a atualização é concluída com êxito, execute testes para garantir que a aplicação funciona como esperado na base de dados atualizada.
Decida quando fazer a atualização.
A atualização requer que a instância fique indisponível durante um período. Planeie a atualização durante um período em que a atividade da base de dados seja baixa.
Faça a atualização da versão principal
Pode atualizar a versão principal de uma única instância do Cloud SQL ou atualizar a versão principal de uma instância principal e incluir todas as respetivas réplicas na atualização, incluindo réplicas em cascata e réplicas entre regiões.
Atualize a versão principal de uma única instância
Quando 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 a instância é compatível com uma atualização.
- Depois de o Cloud SQL validar a configuração, o Cloud SQL torna a instância indisponível.
- Faz uma cópia de segurança antes da atualização.
- Realiza a atualização na instância.
- Disponibiliza a sua instância.
- Faz uma cópia de segurança após a atualização.
Consola
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
- Clique em Edit.
- Na secção Informações da instância, clique no botão Atualizar e confirme que quer aceder à página de atualização.
- Na página Escolha uma versão da base de dados, clique na lista Versão principal da base de dados para atualização e selecione uma das versões principais da base de dados disponíveis.
- Clique em Continuar.
- Na caixa ID da instância, introduza o nome da instância e, de seguida, clique no botão Iniciar atualização.
Verifique se a versão principal da base de dados atualizada é apresentada abaixo do nome da instância na página Vista geral da instância.
gcloud
Inicie a atualização.
Use o comando
gcloud sql instances patch
com a flag--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 da base de dados, que tem de ser posterior à versão atual. Especifique uma versão da base de dados para uma versão principal que esteja disponível como destino de atualização para a instância. Pode obter esta enumeração como o primeiro passo do Plan for upgrade. Se precisar de uma lista completa de enumerações de versões de bases de dados, consulte SqlDatabaseEnums.
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION
As atualizações de versões principais demoram vários minutos a serem concluídas. Pode ver uma mensagem a indicar que a operação está a demorar mais do que o esperado. Pode ignorar esta mensagem ou executar o comando
gcloud sql operations wait
para ignorar a mensagem.Obtenha o nome da operação de atualização.
Use o comando
gcloud sql operations list
com a flag--instance
.Antes de executar o comando, substitua a variável INSTANCE_NAME pelo nome da instância.
gcloud sql operations list --instance=INSTANCE_NAME
Monitorize o estado 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 obtido no passo anterior.
gcloud sql operations describe OPERATION
REST v1
Inicie a atualização no local.
Use um pedido PATCH com o método
instances:patch
.Antes de usar qualquer um dos dados do pedido, 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 do pedido:
{ "databaseVersion": DATABASE_VERSION }
Substitua DATABASE_VERSION pela enumeração da versão principal da base de dados, que tem de ser posterior à versão atual. Especifique uma versão da base de dados para uma versão principal que esteja disponível como destino de atualização para a instância. Pode obter esta enumeração como o primeiro passo do Plan for upgrade. Se precisar de uma lista completa de enumerações de versões da base de dados, consulte SqlDatabaseVersion.
Obtenha o nome da operação de atualização.
Use um pedido 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
Monitorize o estado da atualização.
Use um pedido 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 obtido no passo anterior.
Método HTTP e URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Terraform
Para atualizar a versão da base de dados, use um recurso do Terraform e o fornecedor do Terraform para Google Cloud, versão 4.34.0 ou posterior.
Aplique as alterações
Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.
Prepare o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.
Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.
Prepare o diretório
Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).
-
No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o ficheiro é denominadomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.
Copie o exemplo de código para o ficheiro
main.tf
criado recentemente.Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.
- Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
- Guarde as alterações.
-
Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Reveja a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expetativas:
terraform plan
Faça as correções necessárias à configuração.
-
Aplique a configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform apply
Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).
- Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.
Eliminar as alterações
Para eliminar as alterações, faça o seguinte:
- Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento
deletion_protection
comofalse
.deletion_protection = "false"
- Aplique a configuração do Terraform atualizada executando o seguinte comando e
introduzindo
yes
no comando:terraform apply
-
Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo
yes
no comando:terraform destroy
Quando envia um pedido de atualização no local, o Cloud SQL executa primeiro uma verificação pré-atualização. Se o Cloud SQL determinar que a sua instância não está preparada para uma atualização, o pedido de atualização falha com uma mensagem que sugere como pode resolver o problema. Consulte também o artigo Resolva problemas de uma atualização de versão principal.
Cópias de segurança de atualizações automáticas
Quando faz uma atualização da versão principal, o Cloud SQL faz automaticamente duas cópias de segurança a pedido, denominadas cópias de segurança de atualização:
- A primeira cópia de segurança da atualização é a cópia de segurança pré-atualização, que é feita imediatamente antes de iniciar a atualização. Pode usar esta cópia de segurança para restaurar a instância da base de dados para o estado em que se encontrava na versão anterior.
- A segunda cópia de segurança da atualização é a cópia de segurança pós-atualização, que é feita imediatamente após serem permitidas novas gravações na instância da base de dados atualizada.
Quando vê a sua lista de
cópias de segurança, as
cópias de segurança de atualização são apresentadas com o tipo On-demand
. As atualizações das cópias de segurança são etiquetadas para que as possa identificar rapidamente.
Por exemplo, se estiver a atualizar do SQL Server Enterprise 2017 para o SQL Server Enterprise 2019 ou o SQL Server Enterprise 2022, a cópia de segurança pré-atualização é etiquetada como Pre-upgrade backup, SQLSERVER_2017_ENTERPRISE to SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE.
e a cópia de segurança pós-atualização é etiquetada como Post-upgrade backup, SQLSERVER_2019_ENTERPRISE or SQLSERVER_2022_ENTERPRISE from SQLSERVER_2017_ENTERPRISE.
Tal como acontece com outras cópias de segurança a pedido, as cópias de segurança de atualização persistem até as eliminar ou eliminar a instância.
Atualize o nível de compatibilidade da base de dados
O nível de compatibilidade da base de dados determina o comportamento da base de dados relativamente à aplicação que serve. A definição do nível de compatibilidade da base de dados garante a compatibilidade com versões anteriores do SQL Server e está relacionada com alterações ao Transact-SQL e ao otimizador de consultas. Quando a versão da base de dados de uma instância do SQL Server é atualizada, os níveis de compatibilidade das bases de dados existentes são preservados, de modo que a aplicação possa continuar a funcionar na versão mais recente do SQL Server. A atualização do nível de compatibilidade ajuda a beneficiar de novas funcionalidades, melhorias no processamento de consultas e outras alterações.
Depois de atualizar a versão do motor da base de dados de uma instância, quando a aplicação que a base de dados serve estiver pronta, atualize o nível de compatibilidade da base de dados para cada base de dados na instância. Quando o nível de compatibilidade é definido como o mais recente, as bases de dados são atualizadas com as funcionalidades mais recentes e o desempenho melhorado.
Para atualizar o nível de compatibilidade da base de dados, siga estes passos:
Identifique o nível de compatibilidade atual da sua base de dados.
Por exemplo, para o SQL Server 2017, o nível de compatibilidade predefinido é 140. Para verificar o nível de compatibilidade atual da sua base de dados, execute o seguinte comando em Transact-SQL, depois de substituir
DATABASE_NAME
com o nome da base 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 predefinido para a versão da base de dados atualizada para determinar o nível de compatibilidade de destino da base de dados. Por exemplo, para o SQL Server 2022, o nível de compatibilidade predefinido é 160. Consulte a tabela que mapeia as novas versões do SQL Server com os níveis de compatibilidade.
Avalie as diferenças entre os níveis de compatibilidade atuais e os desejados.
Antes de atualizar o nível de compatibilidade, estude as diferenças no comportamento do sistema entre o nível de compatibilidade atual e o nível de compatibilidade de destino. Consulte a lista completa das diferenças entre os níveis de compatibilidade.
Recolha uma base de dados de cargas de trabalho.
Antes de atualizar o nível de compatibilidade, recolha uma base de dados de carga de trabalho usando o SQL Server Query Store para poder identificar e resolver consultas com regressão posteriormente. Usa o Query Store para captar consultas e planos para um ciclo empresarial típico para estabelecer uma base de referência de desempenho. Para um fluxo de trabalho guiado, use a funcionalidade Query Tuning Assistant no SQL Server Management Studio.
Atualize o nível de compatibilidade.
Para alterar o nível de compatibilidade da base de dados, execute o seguinte comando em Transact-SQL, depois de substituir
DATABASE_NAME
com o nome da base 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
Recolha dados de cargas de trabalho atualizadas.
Recolha dados de carga de trabalho atualizados através do arquivo de consultas para comparação e deteção de regressão.
Resolva as consultas com regressão.
Na maioria dos casos, as alterações do otimizador de consultas nos níveis de compatibilidade atualizados melhoram o desempenho. No entanto, ocasionalmente, o desempenho de determinadas consultas pode regredir. A funcionalidade Consultas com regressão da Query Store ajuda a identificar as consultas que sofreram regressão e permite forçar o último plano de consulta bom conhecido. O SQL Server também oferece correção automática de planos, que pode mudar automaticamente para o último plano bom conhecido em caso de regressão de consultas.
Conclua a atualização da versão principal
Após atualizar a instância principal, faça testes de aceitação para se certificar de que o sistema atualizado tem o desempenho esperado.
Resolva problemas com uma atualização da versão principal
O Cloud SQL devolve uma mensagem de erro se tentar executar um comando de atualização inválido, por exemplo, se a sua instância contiver flags de base de dados inválidas para a nova versão.
Se o seu pedido de atualização falhar, verifique a sintaxe do pedido de atualização. Se o pedido tiver uma estrutura válida, experimente as seguintes sugestões.
Veja registos de erros
Se ocorrerem problemas com um pedido de atualização válido, o Cloud SQL publica registos de erros em projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err
. Cada entrada do registo contém uma etiqueta com o identificador da instância para ajudar a identificar a instância com o erro de atualização.
Procure esses erros de atualização e resolva-os.
Para ver os registos de erros, use a Google Cloud consola::
-
Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.
- Para abrir a página Vista geral de uma instância, clique no nome da instância.
No painel Operações e registos da página Vista geral da instância, clique no link Ver registos de erros do SQL Server.
É apresentada a página Explorador de registos.
Veja os registos da seguinte forma:
- Para listar todos os registos de erros num projeto, selecione o nome do registo no filtro de registo Nome do registo.
Para mais informações sobre filtros de consultas, consulte o artigo Consultas avançadas.
- Para filtrar os registos de erros de atualização de uma única instância, introduza a seguinte consulta na caixa Pesquisar todos os campos, depois de substituir
DATABASE_ID
com o ID do projeto seguido do 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 registos de erros de atualização por uma instância denominada
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"
Pode rever todos os registos comunicados num determinado período ou filtrar os registos por gravidade. Uma opção comum para a resolução de problemas pode incluir a seleção dos seguintes filtros:
- Emergência
- Alerta
- Crítico
- Erro
Restaure a instância principal para a versão principal anterior
Se o sistema de base de dados atualizado não tiver o desempenho esperado, pode ter de restaurar a instância principal para a versão anterior. Para tal, restaure a cópia de segurança anterior à atualização para uma instância de recuperação do Cloud SQL, que é uma nova instância que executa a versão anterior à atualização.
Para restaurar uma instância principal para a versão anterior, siga estes passos:
Identifique a cópia de segurança anterior à atualização.
Consulte o artigo Cópias de segurança de atualizações automáticas.
Crie uma instância de recuperação.
Crie uma nova instância do Cloud SQLcom a versão principal que o Cloud SQL estava a executar quando foi feita a cópia de segurança pré-atualização. Defina as mesmas sinalizações e definições de instância que a instância original usa.
Restaure a cópia de segurança anterior à atualização.
Restaure a cópia de segurança anterior à atualização na instância de recuperação. Este processo pode demorar alguns minutos.
Adicione as réplicas de leitura.
Se estiver a usar réplicas de leitura, adicione-as individualmente.
Associe a sua aplicação.
Depois de recuperar o sistema de base de dados, atualize a aplicação com detalhes sobre a instância de recuperação e as respetivas réplicas de leitura. Pode retomar a publicação de tráfego na versão anterior à atualização da sua base de dados.
Limitações
Esta secção apresenta as limitações de uma atualização da versão principal no local.
- Não é possível fazer uma atualização da versão principal no local numa réplica externa.
Perguntas frequentes
As seguintes perguntas podem surgir quando atualizar a versão principal da base de dados.
- Sim. A sua instância permanece indisponível durante um período enquanto o Cloud SQL realiza a atualização.
- Quanto tempo demora uma atualização?
Normalmente, a atualização de uma única instância demora menos de 10 minutos. Se a configuração da instância tiver um número reduzido de vCPUs ou memória, a atualização pode demorar mais tempo.
Se a sua instância alojar demasiadas bases de dados ou tabelas, ou se as suas bases de dados forem muito grandes, a atualização pode demorar horas ou até expirar, uma vez que o tempo total de atualização corresponde ao número de objetos nas suas bases de dados. Se tiver várias instâncias que precisam de ser atualizadas, o tempo de atualização aumenta proporcionalmente.
- Posso monitorizar cada passo no meu processo de atualização?
- Embora o Cloud SQL lhe permita monitorizar se uma operação de atualização ainda está em curso, não pode acompanhar os passos individuais em cada atualização.
- Posso cancelar a atualização depois de a iniciar?
- Não, não pode cancelar uma atualização depois de esta ter começado. Se a atualização falhar, o Cloud SQL recupera automaticamente a sua instância na versão anterior.
- O que acontece às minhas definições durante uma atualização?
Quando faz uma atualização da versão principal no local, o Cloud SQL retém as definições da base de dados, incluindo o nome da instância, o endereço IP, os valores de flags configurados explicitamente e os dados do utilizador. No entanto, o valor predefinido das variáveis do sistema pode mudar.
Para saber mais, consulte o artigo Configure flags da base de dados. Se uma determinada flag ou valor deixar de ser suportado na versão de destino, o Cloud SQL remove automaticamente a flag durante a atualização.
O que se segue?
- Saiba mais sobre as opções de ligação a uma instância.
- Saiba como importar e exportar dados.
- Saiba como definir flags de base de dados.