Rastreio de Operação para Cada Réplica

Em uma família de réplicas, as alterações são rastreadas para cada réplica. Isso ocorre porque uma entrada de oplog inclui a identidade da réplica em que a operação foi originada. Portanto, o histórico de uma família de réplicas pode ser visualizado como várias pilhas de entradas de oplog. Cada pilha é representada por uma seqüência linear de IDs de oplog para as operações que se originam nessa réplica.
O histórico de um banco de dados não replicado é uma seqüência linear de operações (Figura 1).
Figura 1. Histórico de Alterações em um Banco de Dados
Figura 2 mostra o estado de duas réplicas em uma família:

Uma réplica tem dados precisos apenas sobre suas próprias operações. Até que ela receba pacotes de atualização, suas informações sobre outras réplicas permanecerão desatualizadas. Por exemplo, a réplica boston_hub registra 950 operações locais, mas recebeu pacotes de atualização para apenas 504 operações de sanfran_hub. De modo semelhante, a réplica sanfran_hub registra 702 operações locais, mas recebeu pacotes de atualização para apenas 791 operações de boston_hub.

Figura 3 ilustra esse cenário, no qual cada réplica está desatualizada em relação às operações que se originam na outra réplica.
Figura 3. Réplicas Desatualizadas
A representação de uma família de réplicas como um conjunto de pilhas de oplog, mostrada em Figura 3, facilita a compreensão do processo de sincronização. Por exemplo, um pacote de atualização enviado da réplica boston_hub para a réplica sanfran_hub consiste em incrementos para a pilha da réplica boston_hub (operações 792–950). Figura 4 mostra os dois incrementos. Como sanfran_hub conhece seu próprio estado, ele precisa de atualizações somente para operações que se originam em outras réplicas. (Em determinadas situações de recuperação de erro, é necessário reconfigurar os dados de uma réplica sobre suas próprias operações. )
Figura 4. Atualizações entre Duas Réplicas
Nota: No momento em que o pacote foi importado em sanfran_hub, alterações adicionais podem ter sido feitas em boston_hub. Essas alterações não estão incluídas no pacote de atualização.

Feedback