Mover dados entre bases de dados de cloud aumentadas horizontalmente

Aplica-se a:Banco de Dados SQL do Azure

Se você é um desenvolvedor de Software as a Service e, de repente, seu aplicativo sofre uma tremenda demanda, você precisa acomodar o crescimento. Assim, você adiciona mais bancos de dados (fragmentos). Como redistribuir os dados para os novos bancos de dados sem interromper a integridade dos dados? Use a ferramenta de mesclagem dividida para mover dados de bancos de dados restritos para os novos bancos de dados.

A ferramenta de mesclagem dividida é executada como um serviço Web do Azure. Um administrador ou desenvolvedor usa a ferramenta para mover shardlets (dados de um fragmento) entre diferentes bancos de dados (fragmentos). A ferramenta usa o gerenciamento de mapa de estilhaços para manter o banco de dados de metadados do serviço e garantir mapeamentos consistentes.

Overview

Transferir

Microsoft.Azure.SqlDatabase.ElasticScale.Service.SplitMerge

Documentação

  1. Tutorial da ferramenta de divisão de mesclagem de banco de dados elástico
  2. Configuração de segurança de mesclagem dividida
  3. Considerações de segurança de mesclagem dividida
  4. Gestão de mapas de partições horizontais
  5. Migrar bases de dados existentes para aumentar horizontalmente
  6. Ferramentas de banco de dados elástico
  7. Glossário das ferramentas das bases de dados elásticas

Por que usar a ferramenta de mesclagem dividida

  • Flexibilidade

    Os aplicativos precisam se estender de forma flexível além dos limites de um único banco de dados no Banco de Dados SQL do Azure. Use a ferramenta para mover dados, conforme necessário, para novos bancos de dados, mantendo a integridade.

  • Dividir para crescer

    Para aumentar a capacidade geral de lidar com o crescimento explosivo, crie capacidade adicional fragmentando os dados e distribuindo-os por mais bancos de dados incrementalmente até que as necessidades de capacidade sejam atendidas. Este é um excelente exemplo do recurso de divisão .

  • Mesclar para reduzir

    As necessidades de capacidade diminuem devido à natureza sazonal de um negócio. A ferramenta permite reduzir para menos unidades de escala quando os negócios ficam mais lentos. O recurso de mesclagem no Elastic Scale Split-Merge Service cobre esse requisito.

  • Gerencie hotspots movendo shardlets

    Com vários locatários por banco de dados, a alocação de shardlets para fragmentos pode levar a gargalos de capacidade em alguns fragmentos. Isso requer a realocação de shardlets ou a movimentação de shardlets ocupados para fragmentos novos ou menos utilizados.

Conceitos e principais características

  • Serviços hospedados pelo cliente

    A mesclagem dividida é fornecida como um serviço hospedado pelo cliente. Você deve implantar e hospedar o serviço em sua assinatura do Microsoft Azure. O pacote baixado do NuGet contém um modelo de configuração para completar com as informações para sua implantação específica. Consulte o tutorial de mesclagem dividida para obter detalhes. Como o serviço é executado em sua assinatura do Azure, você pode controlar e configurar a maioria dos aspetos de segurança do serviço. O modelo padrão inclui as opções para configurar TLS, autenticação de cliente baseada em certificado, criptografia para credenciais armazenadas, proteção DoS e restrições de IP. Você pode encontrar mais informações sobre os aspetos de segurança no seguinte documento de configuração de segurança de mesclagem dividida.

    O serviço implantado padrão é executado com um trabalhador e uma função Web. Cada um usa o tamanho da VM A1 nos Serviços de Nuvem do Azure. Embora não seja possível modificar essas configurações ao implantar o pacote, você pode alterá-las após uma implantação bem-sucedida no serviço de nuvem em execução (por meio do portal do Azure). Observe que a função de trabalho não deve ser configurada para mais de uma única instância por motivos técnicos.

  • Integração de mapas de estilhaços

    O serviço de mesclagem dividida interage com o mapa de estilhaços do aplicativo. Ao usar o serviço de mesclagem dividida para dividir ou mesclar intervalos ou para mover fragmentos entre fragmentos, o serviço mantém automaticamente o mapa de estilhaços atualizado. Para fazer isso, o serviço se conecta ao banco de dados do gerenciador de mapas de fragmentos do aplicativo e mantém intervalos e mapeamentos à medida que as solicitações de divisão/mesclagem/movimentação progridem. Isso garante que o mapa de estilhaços sempre apresente uma exibição atualizada quando as operações de mesclagem dividida estão acontecendo. As operações de movimento de divisão, mesclagem e shardlet são implementadas movendo um lote de shardlets do fragmento de origem para o fragmento de destino. Durante a operação de movimento de shardlet, os shardlets sujeitos ao lote atual são marcados como offline no mapa de estilhaços e não estão disponíveis para conexões de roteamento dependentes de dados usando a API OpenConnectionForKey .

  • Conexões de shardlet consistentes

    Quando a movimentação de dados é iniciada para um novo lote de shardlets, qualquer mapeamento de fragmentos fornecido conexões de roteamento dependentes de dados para o fragmento que armazena o shardlet são eliminadas e as conexões subsequentes das APIs do mapa de estilhaços para os shardlets são bloqueadas enquanto a movimentação de dados está em andamento, a fim de evitar inconsistências. Conexões com outros shardlets no mesmo fragmento também serão mortas, mas terão sucesso novamente imediatamente na nova tentativa. Depois que o lote é movido, os shardlets são marcados online novamente para o fragmento de destino e os dados de origem são removidos do fragmento de origem. O serviço passa por essas etapas para cada lote até que todos os fragmentos tenham sido movidos. Isso levará a várias operações de eliminação de conexão durante o curso da operação completa de divisão/mesclagem/movimentação.

  • Gerenciando a disponibilidade do shardlet

    Limitar a eliminação de conexão ao lote atual de shardlets, conforme discutido acima, restringe o escopo da indisponibilidade a um lote de shardlets de cada vez. Isso é preferível a uma abordagem em que o fragmento completo permaneceria offline para todos os seus shardlets durante o curso de uma operação de divisão ou fusão. O tamanho de um lote, definido como o número de shardlets distintos para mover de cada vez, é um parâmetro de configuração. Ele pode ser definido para cada operação de divisão e mesclagem, dependendo da disponibilidade e das necessidades de desempenho do aplicativo. Observe que o intervalo que está sendo bloqueado no mapa de estilhaços pode ser maior do que o tamanho do lote especificado. Isso ocorre porque o serviço seleciona o tamanho do intervalo de forma que o número real de valores de chave de fragmentação nos dados corresponda aproximadamente ao tamanho do lote. Isso é importante lembrar, em particular, para chaves de fragmentação escassamente preenchidas.

  • Armazenamento de metadados

    O serviço de mesclagem dividida usa um banco de dados para manter seu status e manter logs durante o processamento da solicitação. O usuário cria esse banco de dados em sua assinatura e fornece a cadeia de conexão para ele no arquivo de configuração para a implantação do serviço. Os administradores da organização do usuário também podem se conectar a esse banco de dados para revisar o progresso da solicitação e investigar informações detalhadas sobre possíveis falhas.

  • Consciência de partilha

    O serviço de mesclagem dividida diferencia entre (1) tabelas fragmentadas, (2) tabelas de referência e (3) tabelas normais. A semântica de uma operação de divisão/mesclagem/movimentação depende do tipo de tabela usada e é definida da seguinte forma:

    • Mesas fragmentadas

      As operações de divisão, mesclagem e movimentação movem shardlets da origem para o fragmento de destino. Após a conclusão bem-sucedida da solicitação geral, esses shardlets não estão mais presentes na fonte. Observe que as tabelas de destino precisam existir no fragmento de destino e não devem conter dados no intervalo de destino antes do processamento da operação.

    • Quadros de referência

      Para tabelas de referência, as operações de divisão, mesclagem e movimentação copiam os dados da origem para o fragmento de destino. Observe, no entanto, que nenhuma alteração ocorre no fragmento de destino para uma determinada tabela se alguma linha já estiver presente nesta tabela no destino. A tabela deve estar vazia para que qualquer operação de cópia da tabela de referência seja processada.

    • Outros quadros

      Outras tabelas podem estar presentes na origem ou no destino de uma operação de divisão e mesclagem. O serviço de mesclagem dividida desconsidera essas tabelas para qualquer movimentação de dados ou operações de cópia. Note-se, no entanto, que podem interferir com estas operações em caso de restrições.

      As informações sobre tabelas de referência versus fragmentadas são fornecidas pelas SchemaInfo APIs no mapa de estilhaços. O exemplo a seguir ilustra o uso dessas APIs em um determinado objeto do gerenciador de mapas de estilhaços:

      // Create the schema annotations
      SchemaInfo schemaInfo = new SchemaInfo();
      
      // reference tables
      schemaInfo.Add(new ReferenceTableInfo("dbo", "region"));
      schemaInfo.Add(new ReferenceTableInfo("dbo", "nation"));
      
      // sharded tables
      schemaInfo.Add(new ShardedTableInfo("dbo", "customer", "C_CUSTKEY"));
      schemaInfo.Add(new ShardedTableInfo("dbo", "orders", "O_CUSTKEY"));
      
      // publish
      smm.GetSchemaInfoCollection().Add(Configuration.ShardMapName, schemaInfo);
      

      As tabelas e são definidas como tabelas region de referência e nation serão copiadas com operações de divisão/mesclagem/movimentação. customer e orders , por sua vez, são definidas como mesas fragmentadas. C_CUSTKEY e O_CUSTKEY servir como a chave de fragmentação.

  • Integridade referencial

    O serviço de mesclagem dividida analisa dependências entre tabelas e usa relações de chave primária estrangeira para preparar as operações para mover tabelas de referência e shardlets. Em geral, as tabelas de referência são copiadas primeiro em ordem de dependência, depois os shardlets são copiados na ordem de suas dependências dentro de cada lote. Isso é necessário para que as restrições FK-PK no fragmento de destino sejam honradas à medida que os novos dados chegam.

  • Consistência do mapa de estilhaços e eventual conclusão

    Na presença de falhas, o serviço de mesclagem dividida retoma as operações após qualquer interrupção e tem como objetivo concluir todas as solicitações em andamento. No entanto, pode haver situações irrecuperáveis, por exemplo, quando o fragmento alvo é perdido ou comprometido além do reparo. Nessas circunstâncias, alguns fragmentos que deveriam ser movidos podem continuar a residir no fragmento de origem. O serviço garante que os mapeamentos de shardlet só sejam atualizados depois que os dados necessários tiverem sido copiados com êxito para o destino. Os shardlets só são excluídos na origem depois que todos os seus dados tiverem sido copiados para o destino e os mapeamentos correspondentes tiverem sido atualizados com êxito. A operação de exclusão acontece em segundo plano enquanto o intervalo já está online no fragmento de destino. O serviço de mesclagem dividida sempre garante a correção dos mapeamentos armazenados no mapa de estilhaços.

A interface de usuário de mesclagem dividida

O pacote de serviço de mesclagem dividida inclui uma função de trabalho e uma função Web. A função Web é usada para enviar solicitações de mesclagem dividida de forma interativa. Os principais componentes da interface do usuário são os seguintes:

  • Tipo de operação

    O tipo de operação é um botão de opção que controla o tipo de operação executada pelo serviço para essa solicitação. Você pode escolher entre os cenários de divisão, mesclagem e movimentação. Você também pode cancelar uma operação enviada anteriormente. Você pode usar solicitações de divisão, mesclagem e movimentação para mapas de estilhaços de intervalo. Listar mapas de estilhaços suporta apenas operações de movimentação.

  • Mapa de estilhaços

    A próxima seção de parâmetros de solicitação cobre informações sobre o mapa de estilhaços e o banco de dados que hospeda seu mapa de estilhaços. Em particular, você precisa fornecer o nome do servidor e do banco de dados que hospeda o shardmap, credenciais para se conectar ao banco de dados do shard map e, finalmente, o nome do shard map. Atualmente, a operação só aceita um único conjunto de credenciais. Essas credenciais precisam ter permissões suficientes para executar alterações no mapa de estilhaços, bem como nos dados do usuário nos fragmentos.

  • Intervalo de origem (divisão e mesclagem)

    Uma operação de divisão e mesclagem processa um intervalo usando sua chave baixa e alta. Para especificar uma operação com um valor de chave alta não limitado, marque a caixa de seleção "Chave alta é máx" e deixe o campo de chave alta vazio. Os valores-chave do intervalo especificados não precisam corresponder com precisão a um mapeamento e seus limites no mapa de estilhaços. Se você não especificar nenhum limite de intervalo, o serviço inferirá o intervalo mais próximo para você automaticamente. Você pode usar o script GetMappings.ps1 PowerShell para recuperar os mapeamentos atuais em um determinado mapa de estilhaços.

  • Comportamento de origem dividida (divisão)

    Para operações de divisão, defina o ponto para dividir o intervalo de origem. Para fazer isso, forneça a chave de fragmentação onde deseja que a divisão ocorra. Use o botão de opção especifique se deseja que a parte inferior do intervalo (excluindo a tecla de divisão) se mova ou se deseja que a parte superior se mova (incluindo a tecla de divisão).

  • Fragmento de origem (mover)

    As operações de movimentação são diferentes das operações de divisão ou mesclagem, pois não exigem um intervalo para descrever a origem. Uma fonte para movimentação é simplesmente identificada pelo valor da chave de fragmentação que você planeja mover.

  • Fragmento alvo (divisão)

    Depois de fornecer as informações sobre a origem da operação de divisão, você precisa definir para onde deseja que os dados sejam copiados, fornecendo o nome do servidor e do banco de dados para o destino.

  • Intervalo de destino (mesclagem)

    As operações de mesclagem movem shardlets para um fragmento existente. Você identifica o fragmento existente fornecendo os limites de intervalo do intervalo existente com o qual deseja mesclar.

  • Tamanho do lote

    O tamanho do lote controla o número de shardlets que ficarão offline de cada vez durante a movimentação de dados. Este é um valor inteiro onde você pode usar valores menores quando estiver sensível a longos períodos de inatividade para shardlets. Valores maiores aumentarão o tempo que um determinado shardlet estiver offline, mas podem melhorar o desempenho.

  • ID da operação (cancelar)

    Se você tiver uma operação em andamento que não é mais necessária, poderá cancelá-la fornecendo sua ID de operação neste campo. Você pode recuperar o ID da operação na tabela de status da solicitação (consulte a Seção 8.1) ou na saída no navegador da Web onde você enviou a solicitação.

Requisitos e limitações

A implementação atual do serviço de mesclagem dividida está sujeita aos seguintes requisitos e limitações:

  • Os fragmentos precisam existir e ser registrados no mapa de estilhaços antes que uma operação de mesclagem dividida nesses fragmentos possa ser executada.
  • O serviço não cria tabelas ou quaisquer outros objetos de banco de dados automaticamente como parte de suas operações. Isso significa que o esquema para todas as tabelas fragmentadas e tabelas de referência precisa existir no fragmento de destino antes de qualquer operação de divisão/mesclagem/movimentação. As tabelas fragmentadas, em particular, devem estar vazias no intervalo em que novos shardlets devem ser adicionados por uma operação de divisão/mesclagem/movimentação. Caso contrário, a operação falhará na verificação de consistência inicial no fragmento de destino. Observe também que os dados de referência só são copiados se a tabela de referência estiver vazia e que não há garantias de consistência em relação a outras operações de gravação simultâneas nas tabelas de referência. Recomendamos o seguinte: ao executar operações de divisão/mesclagem, nenhuma outra operação de gravação faz alterações nas tabelas de referência.
  • O serviço depende da identidade de linha estabelecida por um índice ou chave exclusiva que inclui a chave de fragmentação para melhorar o desempenho e a confiabilidade de grandes shardlets. Isso permite que o serviço mova dados com uma granularidade ainda mais fina do que apenas o valor da chave de fragmentação. Isso ajuda a reduzir a quantidade máxima de espaço de log e bloqueios necessários durante a operação. Considere a criação de um índice exclusivo ou uma chave primária, incluindo a chave de fragmentação em uma determinada tabela, se quiser usar essa tabela com solicitações de divisão/mesclagem/movimentação. Por motivos de desempenho, a chave de fragmentação deve ser a coluna principal na chave ou no índice.
  • Durante o processamento da solicitação, alguns dados do shardlet podem estar presentes tanto no fragmento de origem quanto no de destino. Isto é necessário para proteger contra falhas durante o movimento do shardlet. A integração de split-merge com o mapa de estilhaços garante que as conexões por meio das APIs de roteamento dependentes de dados usando o método OpenConnectionForKey no mapa de estilhaços não vejam estados intermediários inconsistentes. No entanto, ao se conectar aos fragmentos de origem ou de destino sem usar o método OpenConnectionForKey , estados intermediários inconsistentes podem ser visíveis quando solicitações de divisão/mesclagem/movimentação estão acontecendo. Essas conexões podem mostrar resultados parciais ou duplicados, dependendo do tempo ou do fragmento subjacente à conexão. Atualmente, essa limitação inclui as conexões feitas pelo Elastic Scale Multi-Shard-Queries.
  • O banco de dados de metadados para o serviço de mesclagem dividida não deve ser compartilhado entre funções diferentes. Por exemplo, uma função do serviço de mesclagem dividida em execução no preparo precisa apontar para um banco de dados de metadados diferente da função de produção.

Faturação

O serviço de mesclagem dividida é executado como um serviço de nuvem em sua assinatura do Microsoft Azure. Portanto, as taxas por serviços de nuvem se aplicam à sua instância do serviço. A menos que você execute frequentemente operações de divisão/mesclagem/movimentação, recomendamos excluir seu serviço de nuvem de mesclagem dividida. Isso economiza custos de execução ou implantação de instâncias de serviço de nuvem. Você pode reimplantar e iniciar sua configuração prontamente executável sempre que precisar executar operações de divisão ou mesclagem.

Monitorização

Tabelas de status

O Serviço de mesclagem dividida fornece a tabela RequestStatus no banco de dados de armazenamento de metadados para monitoramento de solicitações concluídas e em andamento. A tabela lista uma linha para cada solicitação de mesclagem dividida que foi enviada a esta instância do serviço de mesclagem dividida. Fornece as seguintes informações para cada pedido:

  • Carimbo de data/hora

    A hora e a data em que o pedido foi iniciado.

  • OperationId

    Um GUID que identifica exclusivamente a solicitação. Essa solicitação também pode ser usada para cancelar a operação enquanto ela ainda está em andamento.

  • Status

    O estado atual do pedido. Para solicitações em andamento, ele também lista a fase atual em que a solicitação está.

  • CancelarPedido

    Um sinalizador que indica se a solicitação foi cancelada.

  • Progressos

    Uma estimativa percentual de conclusão da operação. Um valor de 50 indica que a operação está aproximadamente 50% concluída.

  • Detalhes

    Um valor XML que fornece um relatório de progresso mais detalhado. O relatório de progresso é atualizado periodicamente à medida que conjuntos de linhas são copiados da origem para o destino. Em caso de falhas ou exceções, esta coluna também inclui informações mais detalhadas sobre a falha.

Diagnóstico do Azure

O serviço de mesclagem dividida usa o Diagnóstico do Azure baseado no SDK do Azure 2.5 para monitoramento e diagnóstico. Você controla a configuração de diagnóstico conforme explicado aqui: Habilitando diagnósticos nos Serviços de Nuvem do Azure e Máquinas Virtuais. O pacote de download inclui duas configurações de diagnóstico - uma para a função Web e outra para a função de trabalho. Ele inclui as definições para registrar Contadores de Desempenho, logs do IIS, Logs de Eventos do Windows e logs de eventos de aplicativo de mesclagem dividida.

Implantar diagnósticos

Nota

Este artigo usa o módulo Azure Az PowerShell, que é o módulo PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Importante

O módulo PowerShell Azure Resource Manager ainda é suportado, mas todo o desenvolvimento futuro é para o módulo Az.Sql. Para esses cmdlets, consulte AzureRM.Sql. Os argumentos para os comandos no módulo Az e nos módulos AzureRm são substancialmente idênticos.

Para habilitar o monitoramento e o diagnóstico usando a configuração de diagnóstico para as funções Web e de trabalho fornecidas pelo pacote NuGet, execute os seguintes comandos usando o Azure PowerShell:

$storageName = "<azureStorageAccount>"
$key = "<azureStorageAccountKey"
$storageContext = New-AzStorageContext -StorageAccountName $storageName -StorageAccountKey $key
$configPath = "<filePath>\SplitMergeWebContent.diagnostics.xml"
$serviceName = "<cloudServiceName>"

Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext `
    -DiagnosticsConfigurationPath $configPath -ServiceName $serviceName `
    -Slot Production -Role "SplitMergeWeb"

Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext `
    -DiagnosticsConfigurationPath $configPath -ServiceName $serviceName `
    -Slot Production -Role "SplitMergeWorker"

Você pode encontrar mais informações sobre como definir e implantar configurações de diagnóstico aqui: Habilitando diagnósticos nos Serviços de Nuvem do Azure e Máquinas Virtuais.

Recuperar diagnósticos

Você pode acessar facilmente seus diagnósticos do Gerenciador de Servidores do Visual Studio na parte do Azure da árvore do Gerenciador de Servidores. Abra uma instância do Visual Studio e, na barra de menus, clique em Exibir e Gerenciador de Servidores. Clique no ícone do Azure para se conectar à sua assinatura do Azure. Em seguida, navegue até Azure - Armazenamento - - Tabelas ->>><your storage account>> WADLogsTable. Para obter mais informações, consulte Gerenciador de Servidores.

WADLogsTable

O WADLogsTable destacado na figura acima contém os eventos detalhados do log do aplicativo do serviço de mesclagem dividida. Observe que a configuração padrão do pacote baixado é voltada para uma implantação de produção. Portanto, o intervalo no qual os logs e contadores são extraídos das instâncias de serviço é grande (5 minutos). Para teste e desenvolvimento, diminua o intervalo ajustando as configurações de diagnóstico da Web ou da função de trabalho às suas necessidades. Clique com o botão direito do mouse na função no Visual Studio Server Explorer (veja acima) e, em seguida, ajuste o período de transferência na caixa de diálogo para as definições de configuração de diagnóstico:

Configuration

Desempenho

Em geral, espera-se um melhor desempenho de níveis de serviço mais altos e mais eficientes. Alocações mais altas de E/S, CPU e memória para as camadas de serviço mais altas beneficiam as operações de cópia e exclusão em massa usadas pelo serviço de mesclagem dividida. Por esse motivo, aumente a camada de serviço apenas para esses bancos de dados por um período de tempo definido e limitado.

O serviço também realiza consultas de validação como parte de suas operações normais. Essas consultas de validação verificam a presença inesperada de dados no intervalo de destino e garantem que qualquer operação de divisão/mesclagem/movimentação comece a partir de um estado consistente. Todas essas consultas funcionam em intervalos de chaves de fragmentação definidos pelo escopo da operação e pelo tamanho do lote fornecido como parte da definição da solicitação. Essas consultas têm melhor desempenho quando há um índice que tem a chave de fragmentação como coluna principal.

Além disso, uma propriedade de exclusividade com a chave de fragmentação como coluna principal permitirá que o serviço use uma abordagem otimizada que limita o consumo de recursos em termos de espaço de log e memória. Essa propriedade de exclusividade é necessária para mover grandes tamanhos de dados (normalmente acima de 1 GB).

Como atualizar

  1. Siga as etapas em Implantar um serviço de mesclagem dividida.
  2. Altere o arquivo de configuração do serviço de nuvem para sua implantação de mesclagem dividida para refletir os novos parâmetros de configuração. Um novo parâmetro necessário são as informações sobre o certificado usado para criptografia. Uma maneira fácil de fazer isso é comparar o novo arquivo de modelo de configuração do download com sua configuração existente. Certifique-se de adicionar as configurações para e para DataEncryptionPrimaryCertificateThumbprint a Web e DataEncryptionPrimary a função de trabalho.
  3. Antes de implantar a atualização no Azure, verifique se todas as operações de mesclagem dividida atualmente em execução foram concluídas. Você pode fazer isso facilmente consultando as tabelas RequestStatus e PendingWorkflows no banco de dados de metadados de mesclagem dividida para solicitações contínuas.
  4. Atualize sua implantação de serviço de nuvem existente para mesclagem dividida em sua assinatura do Azure com o novo pacote e seu arquivo de configuração de serviço atualizado.

Não é necessário provisionar um novo banco de dados de metadados para atualização de mesclagem dividida. A nova versão atualizará automaticamente seu banco de dados de metadados existente para a nova versão.

Práticas recomendadas e solução de problemas

  • Defina um locatário de teste e exerça suas operações mais importantes de divisão/mesclagem/movimentação com o locatário de teste em vários fragmentos. Certifique-se de que todos os metadados estão definidos corretamente no seu mapa de estilhaços e que as operações não violam restrições ou chaves estrangeiras.
  • Mantenha o tamanho dos dados do locatário de teste acima do tamanho máximo de dados do seu maior locatário para garantir que você não esteja encontrando problemas relacionados ao tamanho dos dados. Isso ajuda você a avaliar um limite superior no tempo necessário para mover um único locatário.
  • Certifique-se de que seu esquema permite exclusões. O serviço de mesclagem dividida requer a capacidade de remover dados do fragmento de origem depois que os dados tiverem sido copiados com êxito para o destino. Por exemplo, os gatilhos de exclusão podem impedir que o serviço exclua os dados na origem e podem fazer com que as operações falhem.
  • A chave de fragmentação deve ser a coluna principal na sua chave primária ou definição de índice exclusiva. Isso garante o melhor desempenho para as consultas de validação de divisão ou mesclagem e para as operações reais de movimentação e exclusão de dados que sempre operam em intervalos de chaves de fragmentação.
  • Coloque seu serviço de mesclagem dividida na região e no data center onde seus bancos de dados residem.

Recursos adicionais

Ainda não está usando ferramentas de banco de dados elástico? Consulte o nosso Guia de Introdução. Para dúvidas, entre em contato conosco na página de perguntas e respostas da Microsoft para o Banco de dados SQL e para solicitações de recursos, adicione novas ideias ou vote em ideias existentes no fórum de comentários do Banco de dados SQL.