Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: do Banco de Dados SQL do Azure
A ferramenta de mesclagem dividida permite mover dados entre bancos de dados fragmentados. Consulte Movendo dados entre bancos de dados em nuvem expandidos.
Observação
A ferramenta de divisão e mesclagem destina-se às Aplicações Web do Azure. O fim da vida útil dos Serviços em Nuvem (Clássico) é 31 de agosto de 2024. Se você estava usando a ferramenta de mesclagem dividida nos Serviços de Nuvem (Clássico), migre para os Aplicativos Web do Azure antes de 31 de agosto de 2024.
Pré-requisitos
Crie um banco de dados SQL para ser usado como banco de dados de status de divisão-mesclagem. Vá para o portal Azure . Crie um novo banco de dados SQL . Nomeie o banco de dados e crie um novo administrador e senha. Certifique-se de registrar o nome e a senha para uso posterior.
Certifique-se de que seu servidor lógico no Azure permita que os Serviços do Azure se conectem a ele. No portal do Azure, no Configurações de Firewall do para seu servidor lógico, verifique se a configuração Permitir acesso aos Serviços do Azure está definida como On. Selecione o ícone Salvar.
Crie uma conta de Armazenamento do Azure para output de diagnósticos.
Use as imagens públicas do docker de mesclagem dividida ou envie imagens do docker de mesclagem dividida para o Serviço de Contêiner do Azure ou para o registro do docker de sua escolha.
Criar dois Aplicativos Web do Azure para seu serviço
Crie duas aplicações Web - uma aplicação Web worker
e uma aplicação Web UI
.
Aplicativo Web do trabalhador
Crie um Web App no portal do Azure.
No campo Publicar, selecione Contêiner .
Para Sistema Operacional, selecione Windows.
Vá para o separador Docker.
Preencha as seguintes informações:
Fonte da imagem:Docker hub
Tipo de acesso:Public
Imagem e tag:mcr.microsoft.com/splitmerge/splitmergeworker:20240812.1
Use Rever e criar para criar a aplicação web.
Aplicação Web de Interface do Utilizador
Para criar o aplicativo Web da interface do usuário, siga as mesmas etapas usadas para criar o aplicativo Web do Worker com uma diferença:
- Uma imagem Docker diferente no campo de imagem e tag:
mcr.microsoft.com/splitmerge/splitmergeweb:20240812.1
Configure seus aplicativos Web Split-Merge
Configurar a segurança
Para obter instruções detalhadas para configurar a segurança do serviço, consulte a configuração de segurança Split-Merge.
Para fins de uma implantação de teste simples para este tutorial, um conjunto mínimo de etapas de configuração é executado para colocar o serviço em funcionamento. Essas etapas permitem que apenas uma máquina/conta que as executa se comunique com o serviço.
Criar um certificado autoassinado e um arquivo PFX
Use o PowerShell para criar um certificado autoassinado e um arquivo PFX.
Primeiro, crie um novo diretório. Em seguida, substitua os valores embutidos de acordo e execute os seguintes comandos do PowerShell a partir do novo diretório. Substitua <password>
por uma senha válida.
$cert = New-SelfSignedCertificate -Subject "CN=*.cloudapp.net" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
$mypwd = ConvertTo-SecureString -String "<password>" -Force -AsPlainText ## Replace <password>
Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd ## Specify your preferred location
Carregue o arquivo PFX para os aplicativos Web e habilite o uso do certificado
Repita as etapas a seguir para as worker
e UI
Web Apps.
- Aceda ao portal do Azure.
- Selecione Serviços de Aplicativo.
- Selecione a aplicação Web que criou acima para a ferramenta de divisão e mesclagem.
- Selecione Certificados no menu.
- Selecione Traga seus próprios certificados (.pfx).
- Selecione Adicionar certificado na barra.
- Selecione o arquivo PFX e digite a mesma senha acima.
- Uma vez concluído, copie a impressão digital do certificado da nova entrada na lista.
- No menu Aplicativo Web, abra Configurações / Configuração.
- Defina modo de certificado de cliente como
Require
.
Configuração do aplicativo Web
Repita as etapas a seguir para aplicativos Web worker
e UI
.
Abra o Aplicativo Web implantado e vá para Configurações >Variáveis de ambiente>Configurações do aplicativo. Selecione Adicionar.
Adicione uma variável com o nome ElasticScaleMetadata e o valor com a cadeia de conexão para o banco de dados de status já implantado.
Importante
Neste momento, o banco de dados de status deve usar o agrupamento latino (
SQL\_Latin1\_General\_CP1\_CI\_AS
). Para obter mais informações, consulte Nome de agrupamento do Windows.Com o Banco de Dados SQL do Azure, a cadeia de conexão normalmente está no formato:
Server=<serverName>.database.windows.net; Database=<databaseName>;User ID=<userId>; Password=<password>; Encrypt=True; Connection Timeout=30
Adicione variáveis adicionais:
Nome Valor CadeiaDeConexãoParaArmazenamentoDeSincronizaçãoDoWorkerRole Cadeia de conexão válida para o armazenamento do Azure criado anteriormente. DataEncryptionPrimaryCertificateImpressão digital Impressão digital do certificado gerada anteriormente. PeríodoDeExpiraçãoDeMetadadosEmMinutos 20160 MaxRetryCount 5 CARREGAR_CERTIFICADOS_DO_SITE * WEBSITE_PULL_IMAGEM_SOBRE_VNET 0 Selecione Aplicar e reinicie o aplicativo.
Repita as mesmas etapas para ambas as aplicações web
worker
eUI
.
Solucionar os problemas da implantação
Se a sua função Web não ficar online, é provável que seja um problema com a configuração de segurança. Verifique se o TLS/SSL está configurado conforme descrito anteriormente.
Se sua função de trabalho não ficar online, mas sua função Web for bem-sucedida, é mais provável que seja um problema de conexão com o banco de dados de status que você criou anteriormente.
Verifique se a cadeia de conexão está correta.
Verifique se o servidor e o banco de dados existem e se o ID de usuário e a senha estão corretos.
Para o Banco de Dados SQL do Azure, a cadeia de conexão deve estar no formato:
Server=<serverName>.database.windows.net; Database=<databaseName>;User ID=<user>; Password=<password>; Encrypt=True; Connection Timeout=30
Certifique-se de que o nome do servidor não comece com
https://
.Certifique-se de que seu servidor permite que os Serviços do Azure se conectem a ele. Para fazer isso, abra seu banco de dados no portal e verifique se a configuração Permitir acesso aos Serviços do Azure está definida como On.
Testar a implantação do serviço
Conecte-se com um navegador da Web
Vá para a Visão Geral do seu UI
Web App e selecione Procurar. Escolha o certificado correto, se solicitado.
Teste com scripts do PowerShell
A implantação e seu ambiente podem ser testados executando os scripts PowerShell de exemplo incluídos.
Importante
Os scripts de exemplo são executados no PowerShell 5.1. Atualmente, eles não são executados no PowerShell 6 ou posterior.
Os arquivos de script incluídos são:
SetupSampleSplitMergeEnvironment.ps1
- Configura uma camada de dados de teste para divisão e fusão.- Cria uma base de dados do gestor de mapas de fragmentos.
- Cria dois bancos de dados de fragmentos.
- Cria um mapa de estilhaços para esses bancos de dados (exclui quaisquer mapas de estilhaços existentes nesses bancos de dados).
- Cria uma pequena tabela de exemplo em ambos os fragmentos e preenche a tabela em um dos fragmentos.
- Declara o SchemaInfo para a tabela fragmentada.
ExecuteSampleSplitMerge.ps1
- executa operações de teste na camada de dados de teste.- Envia uma solicitação dividida para o front-end da Web do Split-Merge Service, que divide metade dos dados do primeiro fragmento para o segundo fragmento.
- Sonda o frontend da Web para o status da solicitação dividida e aguarda até que a solicitação seja concluída.
- Envia uma solicitação de mesclagem para o front-end da Web do Split-Merge Service, que move os dados do segundo fragmento de volta para o primeiro fragmento.
- Sonda o front-end da Web quanto ao status da solicitação de mesclagem e aguarda até que a solicitação seja concluída.
GetMappings.ps1
- script de exemplo de alto nível que imprime o estado atual dos mapeamentos de fragmentos.ShardManagement.psm1
- script auxiliar que encapsula a API ShardManagement.SqlDatabaseHelpers.psm1
- script auxiliar para criação e gestão de bases de dados na Base de Dados SQL.
Usar o PowerShell para verificar sua implantação
Abra uma nova janela do PowerShell, navegue até o diretório onde você baixou o pacote Split-Merge e navegue até o diretório "PowerShell".
Crie um servidor (ou escolha um servidor existente) onde o gestor de mapas de fragmentação e as partições serão estabelecidas.
Observação
O script
SetupSampleSplitMergeEnvironment.ps1
cria todos esses bancos de dados no mesmo servidor por padrão para manter o script simples. Esta não é uma restrição do Serviço Split-Merge em si.Um logon de autenticação SQL com acesso de leitura/gravação aos bancos de dados é necessário para o movimento de dados pelo serviço Split-Merge, e para atualizar o mapa de fragmentos. Como o Split-Merge Service é executado na nuvem, ele atualmente não oferece suporte à Autenticação Integrada.
Verifique se o servidor está configurado para permitir o acesso a partir do endereço IP da máquina que executa esses scripts. Você pode encontrar essa configuração em SQL Server / Firewalls e redes virtuais / Endereços IP do cliente.
Execute o script
SetupSampleSplitMergeEnvironment.ps1
para criar o ambiente de exemplo.A execução desse script elimina todas as estruturas de dados de gerenciamento de mapa de estilhaços existentes no banco de dados do gerenciador de mapas de estilhaços e nos fragmentos. Pode ser útil executar novamente o script se desejar reinicializar o mapa de estilhaços ou fragmentos.
Exemplo de linha de comando. Substitua
<password>
por uma senha válida..\SetupSampleSplitMergeEnvironment.ps1 ^ -UserName 'mysqluser' -Password '<password>' -ShardMapManagerServerName 'abcdefghij.database.windows.net'
Execute o script Getmappings.ps1 para exibir os mapeamentos que existem atualmente no ambiente de exemplo. Substitua
<password>
por uma senha válida..\GetMappings.ps1 ^ -UserName 'mysqluser' -Password '<password>' -ShardMapManagerServerName 'abcdefghij.database.windows.net'
Execute o script
ExecuteSampleSplitMerge.ps1
para executar uma operação de divisão (movendo metade dos dados no primeiro fragmento para o segundo fragmento) e, em seguida, uma operação de mesclagem (movendo os dados de volta para o primeiro fragmento). Se você configurou o TLS e deixou o ponto de extremidade http desativado, certifique-se de usar o ponto de extremidade https://.Exemplo de linha de comando. Substitua
<password>
por uma senha válida..\ExecuteSampleSplitMerge.ps1 ^ -UserName 'mysqluser' -Password '<password>' ^ -ShardMapManagerServerName 'abcdefghij.database.windows.net' ^ -SplitMergeServiceEndpoint 'https://mysplitmergeservice.cloudapp.net' ^ -CertificateThumbprint '0123456789abcdef0123456789abcdef01234567'
Se receber o seguinte erro, é mais provável que seja um problema relacionado ao certificado do seu endpoint da Web. Tente ligar-se ao endpoint Web com o seu navegador Web favorito e verifique se há um erro de certificado.
Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLSsecure channel.
Se for bem-sucedida, a saída deverá ser semelhante à saída a seguir. Substitua
<password>
por uma senha válida..\ExecuteSampleSplitMerge.ps1 -UserName 'mysqluser' -Password '<password>' -ShardMapManagerServerName 'abcdefghij.database.windows.net' -SplitMergeServiceEndpoint 'http://mysplitmergeservice.cloudapp.net' -CertificateThumbprint 0123456789abcdef0123456789abcdef01234567 Sending split request Began split operation with id dc68dfa0-e22b-4823-886a-9bdc903c80f3 Polling split-merge request status. Press Ctrl-C to end Progress: 0% | Status: Queued | Details: [Informational] Queued request Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request. Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target shards. Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from source to target shard. Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Waiting for reference tables copy completion. Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from source to target shard. Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of Sharded tables Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range [100:110) for table [dbo].[MyShardedTable] ... ... Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table [dbo].[MyShardedTable]. Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created while processing the request. Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request. Sending merge request Began merge operation with id 6ffc308f-d006-466b-b24e-857242ec5f66 Polling request status. Press Ctrl-C to end Progress: 0% | Status: Queued | Details: [Informational] Queued request Progress: 5% | Status: Starting | Details: [Informational] Starting split-merge state machine for request. Progress: 5% | Status: Starting | Details: [Informational] Performing data consistency checks on target shards. Progress: 20% | Status: CopyingReferenceTables | Details: [Informational] Moving reference tables from source to target shard. Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Moving key range [100:110) of Sharded tables Progress: 44% | Status: CopyingShardedTables | Details: [Informational] Successfully copied key range [100:110) for table [dbo].[MyShardedTable] ... ... Progress: 90% | Status: Completing | Details: [Informational] Successfully deleted shardlets in table [dbo].[MyShardedTable]. Progress: 90% | Status: Completing | Details: [Informational] Deleting any temp tables that were created while processing the request. Progress: 100% | Status: Succeeded | Details: [Informational] Successfully processed request.
Experimente outros tipos de dados. Todos esses scripts usam um parâmetro -ShardKeyType opcional que permite especificar o tipo de chave. O padrão é Int32, mas você também pode especificar Int64, Guid ou Binary.
Criar pedidos
O serviço pode ser usado usando a interface do usuário da Web ou importando e usando o módulo SplitMerge.psm1
PowerShell, que envia suas solicitações por meio da função Web.
O serviço pode mover dados em tabelas fragmentadas e tabelas de referência. Uma tabela fragmentada tem uma coluna de chave de fragmentação e tem dados de linha diferentes em cada fragmento. Uma tabela de referência não é fragmentada, portanto, contém os mesmos dados de linha em cada fragmento. As tabelas de referência são úteis para dados que não mudam com frequência e são usados para JOIN com tabelas fragmentadas em consultas.
Para executar uma operação de mesclagem dividida, você deve declarar as tabelas fragmentadas e as tabelas de referência que deseja mover. Isso é feito com o SchemaInfo API. Essa API está no namespace Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.Schema
.
- Para cada tabela fragmentada, crie um objeto ShardedTableInfo descrevendo o nome do esquema pai da tabela (opcional, o padrão é "dbo"), o nome da tabela e o nome da coluna nessa tabela que contém a chave de fragmentação.
- Para cada tabela de referência, crie um objeto ReferenceTableInfo descrevendo o nome do esquema pai da tabela (opcional, o padrão é "dbo") e o nome da tabela.
- Adicione os objetos TableInfo anteriores a um novo objeto SchemaInfo.
- Obtenha uma referência ao objeto ShardMapManager e faça uma chamada para GetSchemaInfoCollection.
- Adicione o SchemaInfo ao SchemaInfoCollection, fornecendo o nome do mapa de fragmentos.
Um exemplo disso pode ser visto no script SetupSampleSplitMergeEnvironment.ps1.
O serviço Split-Merge não cria o banco de dados de destino (ou esquema para quaisquer tabelas no banco de dados) para você. Eles devem ser pré-criados antes de enviar uma solicitação para o serviço.
Erros conhecidos
Você pode ver a seguinte mensagem ao executar os scripts PowerShell de exemplo:
Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
Este erro significa que o seu certificado TLS/SSL não está configurado corretamente. Siga as instruções na seção Conecte-se com um navegador da Web.
Se não conseguir enviar pedidos, poderá ver o seguinte:
[Exception] System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'dbo.InsertRequest'.
Nesse caso, verifique seu arquivo de configuração, em particular a configuração para WorkerRoleSynchronizationStorageAccountConnectionString
. Esse erro geralmente indica que a função de trabalho não pôde inicializar com êxito o banco de dados de metadados na primeira utilização.
Conteúdo relacionado
Ainda não está usando ferramentas de banco de dados elástico? Consulte o nosso Guia de Introdução . Em caso de dúvidas, entre em contato conosco na página de perguntas do Microsoft Q&A para do 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 .