Criando e usando a replicação geográfica ativaCreating and using active geo-replication

Replicação geográfica ativa é o recurso de Banco de Dados SQL do Azure que permite que você crie bancos de dados secundários legíveis com base em bancos de dados individuais em um servidor do Banco de Dados SQL no mesmo data center (região) ou em um data center diferente.Active geo-replication is Azure SQL Database feature that allows you to create readable secondary databases of individual databases on a SQL Database server in the same or different data center (region).

Observação

A replicação geográfica ativa não é compatível com a instância gerenciada.Active geo-replication is not supported by managed instance. Para fazer failover geográfico de instâncias gerenciadas, use grupos de failover automático.For geographic failover of managed instances, use Auto-failover groups.

A replicação geográfica ativa foi projetada como uma solução de continuidade de negócios que permite que o aplicativo execute a recuperação de desastres rápida de bancos de dados individuais no caso de um desastre regional ou de uma interrupção em grande escala.Active geo-replication is designed as a business continuity solution that allows the application to perform quick disaster recovery of individual databases in case of a regional disaster or large scale outage. Se a replicação geográfica estiver habilitada, o aplicativo poderá iniciar o failover para um banco de dados secundário em uma região do Azure diferente.If geo-replication is enabled, the application can initiate failover to a secondary database in a different Azure region. Há suporte para até quatro secundários na mesma região ou em regiões diferentes, e os secundários também podem ser usados para consultas de acesso somente leitura.Up to four secondaries are supported in the same or different regions, and the secondaries can also be used for read-only access queries. O failover deve ser iniciado manualmente pelo aplicativo ou pelo usuário.The failover must be initiated manually by the application or the user. Após o failover, o novo banco de dados primário terá um ponto de extremidade de conexão diferente.After failover, the new primary has a different connection end point. O diagrama a seguir ilustra uma configuração típica de um aplicativo de nuvem com redundância geográfica usando a replicação geográfica ativa.The following diagram illustrates a typical configuration of a geo-redundant cloud application using Active geo-replication.

replicação geográfica ativa

Importante

O Banco de Dados SQL do Azure também é compatível com grupos de failover automático.SQL Database also supports auto-failover groups. Para obter mais informações, confira Usando grupos de failover automático.For more information, see using auto-failover groups. Além disso, a replicação geográfica ativa não é compatível com bancos de dados criados dentro de uma Instância Gerenciada.Also, active geo-replication is not supported for databases created within a Managed Instance. Considere a possibilidade de usar grupos de failover com Instâncias Gerenciadas.Consider using failover groups with Managed Instances.

Se, por qualquer motivo, o seu banco de dados primário falhar ou simplesmente precisar ser colocado offline, você poderá iniciar o failover para qualquer um dos seus bancos de dados secundários.If for any reason your primary database fails, or simply needs to be taken offline, you can initiate failover to any of your secondary databases. Quando o failover é ativado para um dos bancos de dados secundários, todos os outros secundários são vinculados automaticamente ao novo primário.When failover is activated to one of the secondary databases, all other secondaries are automatically linked to the new primary.

Você pode gerenciar a replicação e o failover de um banco de dados individual ou de um conjunto de bancos de dados em um servidor ou em um pool elástico usando a replicação geográfica ativa.You can manage replication and failover of an individual database or a set of databases on a server or in an elastic pool using active geo-replication. É possível fazer isso usando:You can do that using:

A replicação geográfica ativa aproveita a tecnologia Always On do SQL Server para replicar de maneira assíncrona transações confirmadas no banco de dados primário para um banco de dados secundário usando isolamento de instantâneo.Active geo-replication leverages the Always On technology of SQL Server to asynchronously replicate committed transactions on the primary database to a secondary database using snapshot isolation. Os grupos de failover automático fornecem a semântica de grupo além da replicação geográfica ativa, mas o mesmo mecanismo de replicação assíncrona é usado.Auto-failover groups provide the group semantics on top of active geo-replication but the same asynchronous replication mechanism is used. Embora, a qualquer momento, o banco de dados secundário possa estar um pouco atrás do banco de dados primário, os dados secundários têm a garantia de nunca terem transações parciais.While at any given point, the secondary database might be slightly behind the primary database, the secondary data is guaranteed to never have partial transactions. A redundância entre regiões permite que os aplicativos se recuperem rapidamente de uma perda permanente de um datacenter inteiro ou de partes de um datacenter, causada por desastres naturais, falhas humanas catastróficas ou crimes.Cross-region redundancy enables applications to quickly recover from a permanent loss of an entire datacenter or parts of a datacenter caused by natural disasters, catastrophic human errors, or malicious acts. Os dados específicos de RPO podem ser encontrados em Visão geral da continuidade de negócios.The specific RPO data can be found at Overview of Business Continuity.

Observação

Se houver uma falha de rede entre as duas regiões, haverá uma repetição a cada 10 segundos para restabelecer as conexões.If there is a network failure between two regions, we retry every 10 seconds to re-establish connections.

Importante

Para garantir que uma alteração crítica no banco de dados primário seja replicada para um secundário antes do failover, você pode forçar a sincronização para garantir a replicação das alterações críticas (por exemplo, atualizações de senha).To guarantee that a critical change on the primary database is replicated to a secondary before you failover, you can force synchronization to ensure the replication of critical changes (for example, password updates). A sincronização forçada afeta o desempenho, já que bloqueia o thread de chamada até que todas as transações confirmadas sejam replicadas.Forced synchronization impacts performance because it blocks the calling thread until all committed transactions are replicated. Para obter detalhes, veja sp_wait_for_database_copy_sync.For details, see sp_wait_for_database_copy_sync. Para monitorar o atraso de replicação entre o banco de dados primário e o geo-secundário, confira sys.dm_geo_replication_link_status.To monitor the replication lag between the primary database and geo-secondary, see sys.dm_geo_replication_link_status.

A figura a seguir mostra que um exemplo de replicação geográfica ativa configurada com um banco de dados primário na região Centro-Norte dos EUA e um secundário na região Centro-Sul dos EUA.The following figure shows an example of active geo-replication configured with a primary in the North Central US region and secondary in the South Central US region.

relacionamento de replicação geográfica

Como os bancos de dados secundários são legíveis, eles podem ser usados para descarregar cargas de trabalho somente leitura, como trabalhos de relatórios.Because the secondary databases are readable, they can be used to offload read-only workloads such as reporting jobs. Se você estiver usando replicação geográfica ativa, é possível criar o banco de dados secundário na mesma região que o primário, mas isso não aumenta a resiliência a falhas catastróficas do aplicativo.If you are using active geo-replication, it is possible to create the secondary database in the same region with the primary, but it does not increase the application's resilience to catastrophic failures. Se estiver usando grupos de failover automático, o banco de dados secundário sempre será criado em uma região diferente.If you are using auto-failover groups, your secondary database is always created in a different region.

Além da recuperação de desastres, a replicação geográfica ativa pode ser usada nos seguintes cenários:In addition to disaster recovery active geo-replication can be used in the following scenarios:

  • Migração de banco de dados: Você pode usar a replicação geográfica ativa para migrar um banco de dados de um servidor para outro online com tempo de inatividade mínimo.Database migration: You can use active geo-replication to migrate a database from one server to another online with minimum downtime.
  • Atualizações de aplicativo: Você pode criar um secundário extra como uma cópia de failback durante as atualizações de aplicativos.Application upgrades: You can create an extra secondary as a fail back copy during application upgrades.

Para garantir a continuidade de negócios real, a adição de redundância de banco de dados entre datacenters é apenas parte da solução.To achieve real business continuity, adding database redundancy between datacenters is only part of the solution. A recuperação de um aplicativo (serviço) de ponta a ponta após uma falha catastrófica exige a recuperação de todos os componentes que constituem o serviço e quaisquer serviços dependentes.Recovering an application (service) end-to-end after a catastrophic failure requires recovery of all components that constitute the service and any dependent services. O software cliente (por exemplo, um navegador com um JavaScript personalizado), front-ends da Web, armazenamento e DNS são exemplos desses componentes.Examples of these components include the client software (for example, a browser with a custom JavaScript), web front ends, storage, and DNS. É fundamental que todos os componentes sejam resilientes às mesmas falhas e fiquem disponíveis dentro do RTO (objetivo de tempo de recuperação) de seu aplicativo.It is critical that all components are resilient to the same failures and become available within the recovery time objective (RTO) of your application. Portanto, você precisa identificar todos os serviços dependentes e entender as garantias e os recursos que eles fornecem.Therefore, you need to identify all dependent services and understand the guarantees and capabilities they provide. Em seguida, você deve tomar as medidas necessárias para garantir que seu serviço funcione durante o failover dos serviços dos quais ele depende.Then, you must take adequate steps to ensure that your service functions during the failover of the services on which it depends. Para obter mais informações sobre como criar soluções para a recuperação de desastre, veja Criando soluções de nuvem para a recuperação de desastre usando a replicação geográfica ativa.For more information about designing solutions for disaster recovery, see Designing Cloud Solutions for Disaster Recovery Using active geo-replication.

Funcionalidades e terminologia de replicação geográfica ativaActive geo-replication terminology and capabilities

  • Replicação assíncrona automáticaAutomatic Asynchronous Replication

    Você só pode criar um banco de dados secundário adicionando a um banco de dados existente.You can only create a secondary database by adding to an existing database. O banco de dados secundário só pode ser criado em qualquer servidor do Banco de Dados SQL do Azure.The secondary can be created in any Azure SQL Database server. Depois de criado, o banco de dados secundário é preenchido com os dados copiados do banco de dados primário.Once created, the secondary database is populated with the data copied from the primary database. Este processo é conhecido como propagação.This process is known as seeding. Depois que o banco de dados secundário for criado e propagado, as atualizações para o banco de dados primário serão replicadas de forma assíncrona para o banco de dados secundário automaticamente.After secondary database has been created and seeded, updates to the primary database are asynchronously replicated to the secondary database automatically. A replicação assíncrona significa que as transações são confirmadas no banco de dados primário antes de serem replicadas para o banco de dados secundário.Asynchronous replication means that transactions are committed on the primary database before they are replicated to the secondary database.

  • Bancos de dados secundários legíveisReadable secondary databases

    Um aplicativo pode acessar um banco de dados secundário para operações somente leitura usando as mesmas ou diferentes entidades de segurança usadas para acessar o banco de dados primário.An application can access a secondary database for read-only operations using the same or different security principals used for accessing the primary database. Os bancos de dados secundários operam no modo de isolamento de instantâneo para garantir que a replicação das atualizações do primário (repetição de log) não seja atrasada por consultas executadas no secundário.The secondary databases operate in snapshot isolation mode to ensure replication of the updates of the primary (log replay) is not delayed by queries executed on the secondary.

Observação

A repetição do log será atrasada no banco de dados secundário se houver atualizações de esquema no primário.The log replay is delayed on the secondary database if there are schema updates on the Primary. Este último requer um bloqueio de esquema no banco de dados secundário.The latter requires a schema lock on the secondary database.

Importante

Você pode usar a replicação geográfica para criar um banco de dados secundário na mesma região que o primário.You can use geo-replication to create a secondary database in the same region as the primary. Você pode usar esse secundário para balancear a carga de cargas de trabalho somente leitura na mesma região.You can use this secondary to load-balance a read-only workloads in the same region. No entanto, um banco de dados secundário na mesma região não fornece resiliência de falha adicional e, portanto, não é um destino de failover adequado para recuperação de desastres.However, a secondary database in the same region does not provide additional fault resilience and therefore is not a suitable failover target for disaster recovery. Ele também não garantirá o isolamento da zona de disponibilidade.It will also not guarantee availability zone isolation. Use a camada de serviço comercialmente crítica ou Premium com configuração com redundância de zona para obter isolamento de zona de disponibilidade.Use Business critical or Premium service tier with zone redundant configuration to achieve availability zone isolation.

  • Failover planejadoPlanned failover

    O failover planejado alterna as funções dos bancos de dados primário e secundário após a conclusão da sincronização completa.Planned failover switches the roles of primary and secondary databases after the full synchronization is completed. É uma operação online que não resulta em perda de dados.It is an online operation that does not result in data loss. A hora da operação depende do tamanho do log de transações no primário que precisa ser sincronizado.The time of the operation depends on the size of the transaction log on the primary that needs to be synchronized. O failover planejado foi projetado para os seguintes cenários: (a) para executar análises de DR em produção quando a perda de dados não for aceitável; (b) para realocar o banco de dados para uma região diferente; e (c) para retornar o banco de dados para a região primária após a interrupção ser mitigada (failback).Planned failover is designed for following scenarios: (a) to perform DR drills in production when the data loss is not acceptable; (b) to relocate the database to a different region; and (c) to return the database to the primary region after the outage has been mitigated (failback).

  • Failover não planejadoUnplanned failover

    Um failover forçado ou não planejado mudará imediatamente o secundário para a função primária, sem nenhuma sincronização com o primário.Unplanned or forced failover immediately switches the secondary to the primary role without any synchronization with the primary. Todas as transações confirmadas no primário, mas não replicadas no secundário, serão perdidas.Any transactions committed to the primary but not replicated to the secondary will be lost. Essa operação é projetada como um método de recuperação durante interrupções quando a primária não está acessível, mas a disponibilidade do banco de dados deve ser restaurada rapidamente.This operation is designed as a recovery method during outages when the primary is not accessible, but the database availability must be quickly restored. Quando o primário original estiver online novamente, ele será reconectado automaticamente e se tornará um novo secundário.When the original primary is back online it will automatically re-connect and become a new secondary. Todas as transações não sincronizadas antes do failover serão preservadas no arquivo de backup, mas não serão sincronizadas com o novo primário para evitar conflitos.All unsynchronized transactions before the failover will be preserved in the backup file but will not be synchronized with the new primary to avoid conflicts. Essas transações precisarão ser mescladas manualmente com a versão mais recente do banco de dados primário.These transactions will have to be manually merged with the most recent version of the primary database.

  • Vários secundários legíveisMultiple readable secondaries

    Até quatro bancos de dados secundários podem ser criado para cada primário.Up to 4 secondary databases can be created for each primary. Se houver apenas um banco de dados secundário e ele falhar, o aplicativo será exposto a um risco maior até que um novo banco de dados secundário seja criado.If there is only one secondary database, and it fails, the application is exposed to higher risk until a new secondary database is created. Se existirem vários bancos de dados secundários, o aplicativo permanecerá protegido mesmo se houver uma falha em um dos bancos de dados secundários.If multiple secondary databases exist, the application remains protected even if one of the secondary databases fails. Os secundários adicionais também podem ser usados para expandir as cargas de trabalho somente leituraThe additional secondaries can also be used to scale out the read-only workloads

    Observação

    Se você estiver usando replicação geográfica ativa para compilar um aplicativo distribuído globalmente e precisa fornecer acesso somente leitura aos dados em mais de quatro regiões, poderá criar um banco de dados secundário de outro banco de dados secundário (um processo conhecido como encadeamento).If you are using active geo-replication to build a globally distributed application and need to provide read-only access to data in more than four regions, you can create secondary of a secondary (a process known as chaining). Dessa forma, que você pode obter uma escala praticamente ilimitada de replicação de banco de dados.This way you can achieve virtually unlimited scale of database replication. Além disso, o encadeamento reduz a sobrecarga de replicação do banco de dados primário.In addition, chaining reduces the overhead of replication from the primary database. A desvantagem é uma maior latência de replicação nos bancos de dados secundários filhos.The trade-off is the increased replication lag on the leaf-most secondary databases.

  • Replicação geográfica de bancos de dados em um pool elásticoGeo-replication of databases in an elastic pool

    Cada banco de dados secundário pode participar separadamente de um pool elástico ou não estar em nenhum pool elástico.Each secondary database can separately participate in an elastic pool or not be in any elastic pool at all. A escolha de pool para cada banco de dados secundário é separada e não depende da configuração de nenhum outro banco de dados secundário (seja ele primário ou secundário).The pool choice for each secondary database is separate and does not depend upon the configuration of any other secondary database (whether primary or secondary). Cada pool elástico está dentro de uma única região, portanto, vários bancos de dados secundários na mesma topologia nunca podem compartilhar um pool elástico.Each elastic pool is contained within a single region, therefore multiple secondary databases in the same topology can never share an elastic pool.

  • Failover e failback controlados pelo usuárioUser-controlled failover and failback

    Um banco de dados secundário pode ser explicitamente alternado para a função primária a qualquer momento pelo aplicativo ou pelo usuário.A secondary database can explicitly be switched to the primary role at any time by the application or the user. Durante uma interrupção real a opção "não planejada" deve ser usada, o que promoverá imediatamente um secundário para primário.During a real outage the “unplanned” option should be used, which immediately promotes a secondary to be the primary. Quando o primário com falha se recuperar e estiver disponível novamente, o sistema o marcará automaticamente como um secundário e o atualizará de acordo com o novo primário.When the failed primary recovers and is available again, the system automatically marks the recovered primary as a secondary and bring it up-to-date with the new primary. Devido à natureza assíncrona da replicação, uma pequena quantidade de dados poderá ser perdida durante failovers não planejados se o primário falhar antes de replicar as alterações mais recentes para o secundário.Due to the asynchronous nature of replication, a small amount of data can be lost during unplanned failovers if a primary fails before it replicates the most recent changes to the secondary. Quando um primário com vários secundários passar por failover, o sistema automaticamente reconfigurará as relações de replicação e vinculará os secundários restantes para o primário recém-promovido, sem a necessidade de intervenção do usuário.When a primary with multiple secondaries fails over, the system automatically reconfigures the replication relationships and links the remaining secondaries to the newly promoted primary without requiring any user intervention. Depois que a interrupção que causou o failover for reduzida, poderá ser desejável retornar o aplicativo para a região primária.After the outage that caused the failover is mitigated, it may be desirable to return the application to the primary region. Para fazer isso, o comando de failover deve ser invocado com a opção "planejada".To do that, the failover command should be invoked with the “planned” option.

Preparando banco de dados secundário para failoverPreparing secondary database for failover

Para garantir que seu aplicativo possa acessar imediatamente o novo primário após o failover, verifique se os requisitos de autenticação do servidor secundário e do banco de dados estão configurados corretamente.To ensure that your application can immediately access the new primary after failover, ensure the authentication requirements for your secondary server and database are properly configured. Para obter detalhes, consulte Segurança do Banco de Dados SQL do Azure após a recuperação de desastre.For details, see SQL Database security after disaster recovery. Para garantir a conformidade após o failover, verifique se a política de retenção de backup no banco de dados secundário corresponde à do primário.To guarantee compliance after failover, make sure that the backup retention policy on the secondary database matches that of the primary. Essas configurações não fazem parte do banco de dados e não são replicadas.These settings are not part of the database and are not replicated. Por padrão, o secundário será configurado com um período de retenção de PITR padrão de sete dias.By default, the secondary will be configured with a default PITR retention period of seven days. Para obter detalhes, consulte Backups automáticos do Banco de Dados SQL.For details, see SQL Database automated backups.

Importante

Se o banco de dados for membro de um grupo de failover, você não poderá iniciar seu failover usando o comando faiover de replicação geográfica.If your database is a member of a failover group, you cannot initiate its failover using the geo-replication faiover command. Considere o uso do comando de failover para o grupo.Consider using failover command for the group. Se precisar fazer failover de um banco de dados individual, você deverá removê-lo primeiro do grupo de failover.If you need to failover an individual database, you must remove it from the failover group first. Consulte grupos de failover para obter detalhes.See failover groups for details.

Configurando banco de dados secundárioConfiguring secondary database

Os bancos de dados primário e secundário devem ter a mesma camada de serviço.Both primary and secondary databases are required to have the same service tier. Também é altamente recomendável que o banco de dados secundário seja criado com o mesmo tamanho da computação (DTUs ou vCores) que o primário.It is also strongly recommended that secondary database is created with the same compute size (DTUs or vCores) as the primary. Se o banco de dados primário estiver com uma carga de trabalho de gravação pesada, um secundário com tamanho de computação inferior poderá não ser capaz de acompanhar o problema.If the primary database is experiencing a heavy write workload, a secondary with lower compute size may not be able to keep up with it. Isso causará o atraso de restauração no secundário e em potencial indisponibilidade.It will cause the redo lag on the secondary and potential unavailability. Um banco de dados secundário com atraso em relação ao primário também gera o risco de uma grande perda de dados caso um failover forçado seja necessário.A secondary database that is lagging behind the primary also risks a large data loss should a forced failover be required. Para atenuar esses riscos, a replicação geográfica ativa em vigor limitará a taxa de log primária para permitir que seus secundários se acompanhem.To mitigate these risks, effective active geo-replication will throttle the primary's log rate to allow its secondaries to catch up. A outra consequência de uma configuração secundária desbalanceada é que, após o failover, o desempenho do aplicativo será afetado devido à capacidade de computação insuficiente do novo primário.The other consequence of an imbalanced secondary configuration is that after failover the application’s performance will suffer due to insufficient compute capacity of the new primary. Será necessário atualizar para uma computação mais alta para o nível necessário, o que não será possível até que a interrupção seja atenuada.It will be required to upgrade to a higher compute to the necessary level, which will not be possible until the outage is mitigated.

Importante

O RPO publicado = 5 s não pode ser garantido, a menos que o banco de dados secundário esteja configurado com o mesmo tamanho de computação que o primário.The published RPO = 5 sec cannot be guaranteed unless the secondary database is configured with the same compute size as the primary.

Se você decidir criar o secundário com tamanho da computação inferior, o gráfico de percentual de E/S do log no portal do Azure fornecerá uma boa maneira de estimar o tamanho da computação mínimo do secundário necessário para sustentar a carga de replicação.If you decide to create the secondary with lower compute size, the log IO percentage chart on Azure portal provides a good way to estimate the minimal compute size of the secondary that is required to sustain the replication load. Por exemplo, se o banco de dados Primário for P6 (1000 DTUS) e seu percentual de E/S de log for 50%, o secundário precisará ser pelo menos P4 (500 DTU).For example, if your Primary database is P6 (1000 DTU) and its log IO percent is 50% the secondary needs to be at least P4 (500 DTU). Você também pode recuperar os dados de E/S de log usando as exibições de banco de dados sys.resource_stats ou sys.dm_db_resource_stats.You can also retrieve the log IO data using sys.resource_stats or sys.dm_db_resource_stats database views. A limitação é relatada como um estado de espera HADR_THROTTLE_LOG_RATE_MISMATCHED_SLO nas exibições de banco de dados Sys. dm _exec_requests e Sys. dm _os_wait_stats .The throttling is reported as a HADR_THROTTLE_LOG_RATE_MISMATCHED_SLO wait state in the sys.dm_exec_requests and sys.dm_os_wait_stats database views.

Para obter mais informações sobre os tamanhos da computação do Banco de Dados SQL, confira Quais são as Camadas de Serviço do Banco de Dados SQL.For more information on the SQL Database compute sizes, see What are SQL Database Service Tiers.

Mantendo credenciais e regras de firewall em sincroniaKeeping credentials and firewall rules in sync

É recomendável usar regras de firewall de IP de nível de banco de dados para bancos de dados replicados geograficamente para que essas regras possam ser replicadas com o banco de dados para garantir que todos os bancos de dados secundários tenham as mesmas regras de firewall IP que o primário.We recommend using database-level IP firewall rules for geo-replicated databases so these rules can be replicated with the database to ensure all secondary databases have the same IP firewall rules as the primary. Essa abordagem elimina a necessidade de os clientes configurarem manualmente e manterem as regras de firewall nos servidores que hospedam os bancos de dados primários e secundários.This approach eliminates the need for customers to manually configure and maintain firewall rules on servers hosting both the primary and secondary databases. Da mesma forma, usar usuários de banco de dados independente para o acesso a dados garante que os bancos de dados primários e secundários sempre tenham as mesmas credenciais de usuário para que, durante failovers, não haja interrupções devido à incompatibilidade nos logons e senhas.Similarly, using contained database users for data access ensures both primary and secondary databases always have the same user credentials so during a failover, there is no disruptions due to mismatches with logins and passwords. Com a adição de Azure Active Directory, os clientes podem gerenciar o acesso do usuário aos bancos de dados primários e secundários, eliminando a necessidade de gerenciamento de credenciais em todos os bancos de dados juntos.With the addition of Azure Active Directory, customers can manage user access to both primary and secondary databases and eliminating the need for managing credentials in databases altogether.

Atualizando ou fazendo downgrade do banco de dados primárioUpgrading or downgrading primary database

Você pode atualizar ou fazer downgrade de um banco de dados primário para um tamanho da computação diferente (dentro da mesma camada de serviço, não entre Uso Geral e Comercialmente Crítico) sem desconectar nenhum banco de dados secundário.You can upgrade or downgrade a primary database to a different compute size (within the same service tier, not between General Purpose and Business Critical) without disconnecting any secondary databases. Ao atualizar, recomendamos que você atualize primeiro o banco de dados secundário e, depois, atualize o primário.When upgrading, we recommend that you upgrade the secondary database first, and then upgrade the primary. Ao fazer downgrade, inverta a ordem: faça primeiro o downgrade do banco de dados primário e, depois, faça do secundário.When downgrading, reverse the order: downgrade the primary first, and then downgrade the secondary. Quando você atualiza ou faz downgrade do banco de dados para uma camada de serviço diferente essa recomendação é imposta.When you upgrade or downgrade the database to a different service tier, this recommendation is enforced.

Observação

Se você tiver criado um banco de dados secundário como parte da configuração do grupo de failover não é recomendável fazer o downgrade do banco de dados secundário.If you created secondary database as part of the failover group configuration it is not recommended to downgrade the secondary database. Isso é para garantir que sua camada de dados tenha capacidade suficiente para processar sua carga de trabalho normal após o failover ser ativado.This is to ensure your data tier has sufficient capacity to process your regular workload after failover is activated.

Importante

O banco de dados primário em um grupo de failover não pode ser dimensionado para uma camada superior, a menos que o banco de dados secundário seja dimensionado primeiro para a camada superior.The primary database in a failover group can't scale to a higher tier unless the secondary database is first scaled to the higher tier. Se você tentar dimensionar o banco de dados primário antes que o banco de dados secundário seja dimensionado, você poderá receber o seguinte erro:If you try to scale the primary database before the secondary database is scaled, you might receive the following error:

Error message: The source database 'Primaryserver.DBName' cannot have higher edition than the target database 'Secondaryserver.DBName'. Upgrade the edition on the target before upgrading the source.

Evitando a perda de dados críticosPreventing the loss of critical data

Devido à alta latência das redes de longa distância, a cópia contínua usa um mecanismo de replicação assíncrona.Due to the high latency of wide area networks, continuous copy uses an asynchronous replication mechanism. A replicação assíncrona tornará a perda de alguns dados inevitável se ocorrer uma falha.Asynchronous replication makes some data loss unavoidable if a failure occurs. No entanto, alguns aplicativos podem exigir nenhuma perda de dados.However, some applications may require no data loss. Para proteger essas atualizações críticas, um desenvolvedor de aplicativo pode chamar o procedimento de sistema sp_wait_for_database_copy_sync imediatamente após a confirmação da transação.To protect these critical updates, an application developer can call the sp_wait_for_database_copy_sync system procedure immediately after committing the transaction. Chamar sp_wait_for_database_copy_sync bloqueia o thread de chamada até que a última transação confirmada seja transmitida para o banco de dados secundário.Calling sp_wait_for_database_copy_sync blocks the calling thread until the last committed transaction has been transmitted to the secondary database. Contudo, a chamada não aguarda as transações transmitidas serem reproduzidas e confirmadas no banco de dados secundário.However, it does not wait for the transmitted transactions to be replayed and committed on the secondary. sp_wait_for_database_copy_sync é atribuído a um vínculo de cópia contínua específico.sp_wait_for_database_copy_sync is scoped to a specific continuous copy link. Qualquer usuário com os direitos de conexão para o banco de dados primário pode chamar este procedimento.Any user with the connection rights to the primary database can call this procedure.

Observação

sp_wait_for_database_copy_sync impede a perda de dados depois de um failover, mas não garante a sincronização completa para acesso de leitura.sp_wait_for_database_copy_sync prevents data loss after failover, but does not guarantee full synchronization for read access. A demora causada por uma chamada de procedimento sp_wait_for_database_copy_sync pode ser significativa e depende do tamanho do log de transações no momento da chamada.The delay caused by a sp_wait_for_database_copy_sync procedure call can be significant and depends on the size of the transaction log at the time of the call.

Monitorando o retardo da replicação geográficaMonitoring geo-replication lag

Para monitorar o atraso em relação ao RPO, use a coluna replication_lag_sec de Sys. dm _geo_replication_link_status no banco de dados primário.To monitor lag with respect to RPO, use replication_lag_sec column of sys.dm_geo_replication_link_status on the primary database. Ele mostra o retardo em segundos entre as transações confirmadas no primário e persistido no secundário.It shows lag in seconds between the transactions committed on the primary and persisted on the secondary. Por exemploE.g. Se o valor da latência for de 1 segundo, isso significará que, se o primário for afetado por uma interrupção neste momento e o failover for iniciado, 1 segundo das transições mais recentes não será salva.if the value of the lag is 1 second, it means if the primary is impacted by an outage at this moment and failover is initiated, 1 second of the most recent transitions will not be saved.

Para medir o retardo em relação às alterações no banco de dados primário que foram aplicadas no secundário, ou seja, disponíveis para leitura do secundário, compare last_commit time no banco de dados secundário com o mesmo valor no banco de dados primário.To measure lag with respect to changes on the primary database that have been applied on the secondary, i.e. available to read from the secondary, compare last_commit time on the secondary database with the same value on the primary database.

Observação

Às vezes, replication_lag_sec no banco de dados primário tem um valor nulo, o que significa que o primário atualmente não sabe o quanto o secundário é.Sometimes replication_lag_sec on the primary database has a NULL value, which means that the primary does not currently know how far the secondary is. Isso normalmente ocorre depois que o processo é reiniciado e deve ser uma condição transitória.This typically happens after process restarts and should be a transient condition. Considere o alerta do aplicativo se o replication_lag_sec retornar nulo por um longo período de tempo.Consider alerting the application if the replication_lag_sec returns NULL for an extended period of time. Isso indicaria que o banco de dados secundário não pode se comunicar com o primário devido a uma falha de conectividade permanente.It would indicate that the secondary database cannot communicate with the primary due to a permanent connectivity failure. Também há condições que podem causar a diferença entre o tempo de last_commit no secundário e o banco de dados primário se tornarem grandes.There are also conditions that could cause the difference between last_commit time on the secondary and on the primary database to become large. Por exemploE.g. se uma confirmação for feita no primário após um longo período de nenhuma alteração, a diferença saltará para um valor grande antes de retornar rapidamente para 0.if a commit is made on the primary after a long period of no changes, the difference will jump up to a large value before quickly returning to 0. Considere uma condição de erro quando a diferença entre esses dois valores permanecer grande por um longo tempo.Consider it an error condition when the difference between these two values remains large for a long time.

Gerenciando a replicação geográfica ativa programaticamenteProgrammatically managing active geo-replication

Conforme discutido anteriormente, a replicação geográfica ativa pode ser gerenciada programaticamente usando o Azure PowerShell e a API REST.As discussed previously, active geo-replication can also be managed programmatically using Azure PowerShell and the REST API. As tabelas a seguir descrevem o conjunto de comandos disponíveis.The following tables describe the set of commands available. A replicação geográfica ativa inclui um conjunto de APIs do Azure Resource Manager para gerenciamento, incluindo a API REST do Banco de Dados SQL do Azure e cmdlets do Azure PowerShell.Active geo-replication includes a set of Azure Resource Manager APIs for management, including the Azure SQL Database REST API and Azure PowerShell cmdlets. Essas APIs exigem o uso de grupos de recursos e dão suporte a RBAC (segurança baseada em funções).These APIs require the use of resource groups and support role-based security (RBAC). Para obter mais informações sobre como implementar funções de acesso, confira Controle de Acesso Baseado em Funções do Azure.For more information on how to implement access roles, see Azure Role-Based Access Control.

T-SQL: Gerenciar o failover dos bancos de dados individuais e em poolT-SQL: Manage failover of single and pooled databases

Importante

Esses comandos Transact-SQL só se aplicam à replicação geográfica ativa e não se aplicam a grupos de failover.These Transact-SQL commands only apply to active geo-replication and do not apply to failover groups. Como tal, eles também não se aplicam para instâncias gerenciadas, pois eles são compatíveis somente com grupos de failover.As such, they also do not apply to Managed Instances, as they only support failover groups.

ComandoCommand DescriçãoDescription
ALTER DATABASEALTER DATABASE Use o argumento ADD SECONDARY ON SERVER para criar um banco de dados secundário para um banco de dados existente e inicie a replicação de dadosUse ADD SECONDARY ON SERVER argument to create a secondary database for an existing database and starts data replication
ALTER DATABASEALTER DATABASE Usar o FAILOVER ou FORCE_FAILOVER_ALLOW_DATA_LOSS para alternar um banco de dados secundário para primário a fim de iniciar o failoverUse FAILOVER or FORCE_FAILOVER_ALLOW_DATA_LOSS to switch a secondary database to be primary to initiate failover
ALTER DATABASEALTER DATABASE Use REMOVE SECONDARY ON SERVER para encerrar uma replicação de dados entre um Banco de Dados SQL e o banco de dados secundário especificado.Use REMOVE SECONDARY ON SERVER to terminate a data replication between a SQL Database and the specified secondary database.
sys.geo_replication_linkssys.geo_replication_links Retorna informações sobre todos os links de replicação existentes para cada banco de dados no servidor do Banco de Dados SQL do Azure.Returns information about all existing replication links for each database on the Azure SQL Database server.
sys.dm_geo_replication_link_statussys.dm_geo_replication_link_status Obtém a hora da última replicação, latência da última replicação e outras informações sobre o link de replicação para um determinado Banco de Dados SQL.Gets the last replication time, last replication lag, and other information about the replication link for a given SQL database.
sys.dm_operation_statussys.dm_operation_status Mostra o status de todas as operações de banco de dados, incluindo o status dos links de replicação.Shows the status for all database operations including the status of the replication links.
sp_wait_for_database_copy_syncsp_wait_for_database_copy_sync faz com que o aplicativo espere até que todas as transações confirmadas sejam replicadas e reconhecidas pelo banco de dados secundário ativo.causes the application to wait until all committed transactions are replicated and acknowledged by the active secondary database.

PowerShell: Gerenciar o failover dos bancos de dados individuais e em poolPowerShell: Manage failover of single and pooled databases

Observação

Este artigo foi atualizado para usar o novo módulo Az do Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Você ainda pode usar o módulo AzureRM, que continuará a receber as correções de bugs até pelo menos dezembro de 2020.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para saber mais sobre o novo módulo Az e a compatibilidade com o AzureRM, confira Apresentação do novo módulo Az do Azure PowerShell.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obter instruções de instalação do módulo Az, confira Instalar o Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Importante

O módulo Azure Resource Manager do PowerShell ainda tem suporte do banco de dados SQL do Azure, mas todo o desenvolvimento futuro é para o módulo AZ. Sql.The PowerShell Azure Resource Manager module is still supported by Azure SQL Database, but all future development is for the Az.Sql module. Para esses cmdlets, consulte AzureRM. SQL.For these cmdlets, see AzureRM.Sql. Os argumentos para os comandos no módulo AZ e nos módulos AzureRm são substancialmente idênticos.The arguments for the commands in the Az module and in the AzureRm modules are substantially identical.

CmdletCmdlet DescriçãoDescription
Get-AzSqlDatabaseGet-AzSqlDatabase Obtém um ou mais bancos de dados.Gets one or more databases.
New-AzSqlDatabaseSecondaryNew-AzSqlDatabaseSecondary Cria um banco de dados secundário para um banco de dados existente e inicia a replicação de dados.Creates a secondary database for an existing database and starts data replication.
Set-AzSqlDatabaseSecondarySet-AzSqlDatabaseSecondary Alterna um banco de dados secundário para primário a fim de iniciar o failover.Switches a secondary database to be primary to initiate failover.
Remove-AzSqlDatabaseSecondaryRemove-AzSqlDatabaseSecondary Encerra uma replicação de dados entre um Banco de Dados SQL e o banco de dados secundário especificado.Terminates data replication between a SQL Database and the specified secondary database.
Get-AzSqlDatabaseReplicationLinkGet-AzSqlDatabaseReplicationLink Obtém os links de replicação geográfica entre um Banco de Dados SQL do Azure e um grupo de recursos ou o SQL Server.Gets the geo-replication links between an Azure SQL Database and a resource group or SQL Server.

API REST: Gerenciar o failover dos bancos de dados individuais e em poolREST API: Manage failover of single and pooled databases

APIAPI DescriçãoDescription
Criar ou atualizar banco de dados (createMode=Restore)Create or Update Database (createMode=Restore) Cria, atualiza ou restaura um banco de dados primário ou secundário.Creates, updates, or restores a primary or a secondary database.
Obter, Criar ou Atualizar o Status de um Banco de DadosGet Create or Update Database Status Retorna o status durante uma operação de criação.Returns the status during a create operation.
Definir o banco de dados secundário como primário (Failover planejado)Set Secondary Database as Primary (Planned Failover) Define qual banco de dados secundário é primário ao realizar failover do banco de dados primário atual.Sets which secondary database is primary by failing over from the current primary database. Esta opção não é compatível com a Instância Gerenciada.This option is not supported for Managed Instance.
Definir o banco de dados secundário como primário r (Failover não planejado)Set Secondary Database as Primary (Unplanned Failover) Define qual banco de dados secundário é primário ao realizar failover do banco de dados primário atual.Sets which secondary database is primary by failing over from the current primary database. Esta operação pode resultar em perda de dados.This operation might result in data loss. Esta opção não é compatível com a Instância Gerenciada.This option is not supported for Managed Instance.
Obter link de replicaçãoGet Replication Link Obtém um link de replicação específico para um determinado Banco de Dados SQL em uma parceria de replicação geográfica.Gets a specific replication link for a given SQL database in a geo-replication partnership. Recupera as informações visíveis no modo de exibição de catálogo sys.geo_replication_links.It retrieves the information visible in the sys.geo_replication_links catalog view. Esta opção não é compatível com a Instância Gerenciada.This option is not supported for Managed Instance.
Links de Replicação - Listar pelo Banco de DadosReplication Links - List By Database Obtém todos os links de replicação para um determinado Banco de Dados SQL em uma parceria de replicação geográfica.Gets all replication links for a given SQL database in a geo-replication partnership. Recupera as informações visíveis no modo de exibição de catálogo sys.geo_replication_links.It retrieves the information visible in the sys.geo_replication_links catalog view.
Excluir links de replicaçãoDelete Replication Link Exclui um link de replicação do banco de dados.Deletes a database replication link. Não pode ser feito durante o failover.Cannot be done during failover.

Próximas etapasNext steps