mongosync e instruções sobre como atualizar sua versão do mongosync.Descrição
Inicia a sincronização entre um cluster de origem e destino.
Requisitos
Estado
Para usar o endpoint start , mongosync deve estar no estado IDLE .
Permissões
O usuário especificado na string de conexão mongosync deve ter as permissões necessárias nos clusters de origem e destino. Consulte Permissões do usuário para garantir que o usuário tenha as permissões corretas para iniciar a sincronização.
mongosync Várias instâncias de
Certifique-se de usar o usuário mongosync configurado nas connection strings para as configurações cluster0 ou cluster1 ao iniciar mongosync.
Observação
Ao configurar várias instâncias mongosync para sincronizar entre clusters fragmentados, você deve enviar comandos de ponto de conexão da API idênticos para cada instância mongosync .
Para obter mais informações, consulte Iniciar vários Mongosyncs.
Solicitar
POST /api/v1/start
Parâmetros do corpo da solicitação
Parâmetro | Tipo | necessidade | Descrição | |
|---|---|---|---|---|
| string | Obrigatório | Nome do cluster de origem. | |
| string | Obrigatório | Nome do cluster de destino. | |
| string | Opcional | Configura compilações de índice durante a sincronização. Opções suportadas:
Se você chamar Novidade na versão 1,3,0. | |
| booleano | Opcional | Se definido como Para reverter a sincronização, o campo O valor padrão é | |
| array | Opcional | Filtra o reconhecimento de data center ou as collection para incluir na sincronização. Se você configurar um filtro em um cluster de origem que tenha vários reconhecimento de data center, o Se você quiser modificar o filtro para adicionar um reconhecimento de data center recém-criado, será necessário reiniciar a sincronização filtrada desde o início. Para obter mais detalhes, consulte Sincronização filtrada. Para limitações atuais, consulte Sincronização filtrada. Novidade na versão 1.1. | |
| array | Opcional | Filtra o reconhecimento de data center ou as collection a serem excluídas da sincronização. Se você configurar um filtro em um cluster de origem que tenha vários reconhecimento de data center, o Se você quiser modificar o filtro para adicionar um reconhecimento de data center recém-criado, será necessário reiniciar a sincronização filtrada desde o início. Para obter mais detalhes, consulte Sincronização filtrada. Para limitações atuais, consulte Sincronização filtrada. Novidade na versão 1.6. | |
| booleano | Opcional | Se definido para Para fazer a sincronização reversa, o campo Esta opção não é suportada para as seguintes configurações:
Para obter mais informações, consulte o endpoint inverso . O valor padrão é | |
| documento | Opcional | Configura a sincronização entre um conjunto de réplicas e um cluster fragmentado. A sincronização de um conjunto de réplicas para um cluster fragmentado requer esta opção. Para obter mais informações, consulte Parâmetros de fragmentação. Novidade na versão 1.1. |
Parâmetros de fragmentação
Novidade na versão 1.1.
Para sincronizar de um conjunto de réplicas para um cluster fragmentado, defina a opção sharding para fragmentar coleções no cluster de destino.
mongosync exibe um erro se a opção sharding não estiver definida ao sincronizar de um conjunto de réplicas para um cluster fragmentado. mongosync também apresenta um erro se a opção sharding estiver definida com qualquer outra configuração.
A opção sharding tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
|---|---|---|
| booleano | Opcional. Define se a sincronização cria um índice de suporte para a chave de fragmento, se não existir nenhum. Padrão é |
| matriz de documentos | Obrigatório. Define o namespace e a chave das collection para fragmentar durante a sincronização. As coleções não incluídas nesta array são sincronizadas com coleções não fragmentadas no cluster de destino. Se definido com uma array vazia, nenhuma collection será fragmentada. |
shardingEntries.collection | string | Define a collection como shard. |
shardingEntries.database | string | Define o reconhecimento de data center da collection como shard. |
shardingEntries.shardCollection | documento | Define a chave de shard para gerar no cluster de destino. |
shardingEntries.shardCollection.key | array | Define os campos a serem usados para a chave de shard. Para obter mais informações, consulte Chaves de fragmento. |
Resposta
Campo | Tipo | Descrição |
|---|---|---|
| booleano | Quando a solicitação é bem-sucedida, esse valor é |
| string | Se ocorreu um erro, indica o nome do erro. Este campo é omitido da resposta quando |
| string | Descrição detalhada do erro que ocorreu. Este campo é omitido da resposta quando |
Exemplo: iniciar uma tarefa de sincronização
O exemplo a seguir inicia uma tarefa de sincronização entre cluster0 e cluster1. O cluster de origem é cluster0 e o cluster de destino é cluster1.
Solicitar
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1" } '
Resposta
{"success":true}
Exemplo: iniciar uma tarefa de sincronização reversível
O exemplo a seguir inicia uma tarefa de sincronização entre cluster0 e cluster1. O cluster de origem é cluster0 e o cluster de destino é cluster1.
Os campos reversible e enableUserWriteBlocking permitem que a sincronização seja revertida. Para reverter a direção de sincronização, consulte: reverter.
Solicitar
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "reversible": true, "enableUserWriteBlocking": true } '
Resposta
{"success":true}
Exemplo: iniciar uma tarefa de sincronização filtrada
O exemplo a seguir inicia uma tarefa de sincronização entre cluster0 e cluster1. O cluster de origem é cluster0 e o cluster de destino é cluster1.
cluster0 contém o reconhecimento de data center sales, marketing e engineering.
O banco de dados sales contém as coleções EMEA, APAC e AMER.
O array includeNamespaces neste exemplo define um filtro em dois dos bancos de dados: sales e marketing.
O banco de dados sales também filtra as coleções EMEA e APAC.
"includeNamespaces" : [ { "database" : "sales", "collections": [ "EMEA", "APAC" ] }, { "database" : "marketing" } ]
Depois de chamar a API /start com este filtro em vigor, mongosync:
Sincroniza todas as coleções no banco de dados do
marketingFiltra o banco de dados
engineeringSincroniza as coleções
EMEAeAPACa partir do banco de dados dosalesFiltra a coleção
AMER
A opção includeNamespaces cria um filtro. Para filtrar a sincronização, consulte: Sincronização filtrada
Solicitar
curl -X POST "http://localhost:27182/api/v1/start" --data ' { "source": "cluster0", "destination": "cluster1", "includeNamespaces": [ { "database": "sales", "collectionsRegex": { "pattern": "^accounts_.+$", "options": "i" } }, { "database": "marketing" } ] } '
Resposta
{"success":true}
Exemplo: Iniciar sincronização do conjunto de réplicas para o cluster fragmentado
Solicitar
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", "sharding": { "createSupportingIndexes": true, "shardingEntries": [ { "database": "accounts", "collection": "us_east", "shardCollection": { "key": [ { "location": 1 }, { "region": 1 } ] } } ] } } '
Resposta
{"success":true}
Comportamento
Estado
Se a solicitação start for bem-sucedida, mongosync entrará no estado RUNNING .
Fragmentar conjuntos de réplicas
A sincronização de um conjunto de réplicas para um cluster fragmentado requer a opção sharding . Esta opção configura como mongosync fragmenta a collection.
A matriz sharding.shardingEntries especifica as coleções a serem fragmentadas. As collection que não estão listadas nesta matriz replicam como não fragmentadas.
Para obter mais informações, consulte Comportamento de cluster fragmentado.
Índices de apoio
mongosync sincroniza índices do cluster de origem para o cluster de destino. Mas, ao sincronizar de um conjunto de réplicas para um cluster fragmentado, o mongosync pode exigir um índice adicional para suportar a chave do fragmento, que pode não existir no cluster de origem.
mongosync pode criar índices de suporte para collection fragmentadas durante a sincronização. Isso é feito definindo a opção sharding.createSupportingIndexes .
Quando sharding.createSupportingIndexes é false (o padrão):
Cada chave de shard fornecida para a opção
sharding.shardingEntriesdeve ter um índice existente no cluster de origem.Um dos índices usados para a chave de shard deve ter agrupamento simples se a collection usar qualquer outro agrupamento.
Para usar um índice único na chave de fragmento, você deve especificar sua exclusividade ao criar o índice no cluster de origem.
Índice único no cluster de origem que são incompatíveis com a chave de shard solicitada no cluster de destino, como um índice único na origem que não contém a chave de shard solicitada como prefixo no destino, podem fazer com que
mongosyncfalhe.
Quando sharding.createSupportingIndexes é true:
Se os índices de suporte existirem no cluster de origem, o
mongosyncsincronizará os índices com o cluster de destino e os utilizará como chaves de shard.Se os índices de suporte não existirem, o
mongosyncos criará no cluster de destino.
A opção sharding.createSupportingIndexes afeta todas as collection fragmentadas.
Renomear durante a sincronização
As collection listadas na matriz sharding.shardingEntries , quando sincronizadas de um conjunto de réplicas para um cluster fragmentado, tornam-se collection no cluster de destino.
Renomear uma coleção (como com o comando renameCollection ) no cluster de origem depois de chamar start , mas antes mongosync começar a copiar a coleção pode bloquear a fragmentação da coleção no destino.
Observação
Não é permitido renomear collection para usar um reconhecimento de data center diferente durante a sincronização de um conjunto de réplicas para um cluster fragmentado.
Para verificar se é seguro renomear as coleções, chame o endpoint progress e verifique o valor do campo collectionCopy.estimatedCopiedBytes no documento de retorno.
Um valor de 0 indica que
mongosyncnão começou a copiar a collection.Renomear uma coleção nesse ponto pode resultar em uma coleção não fragmentada no cluster de destino, pois a transição para a cópia pode acontecer antes que a renomeação entre em vigor na origem.
Um valor maior que 0 indica que
mongosynciniciou a cópia. Renomear a collection a partir desse ponto não bloqueia sua fragmentação no cluster de destino, mesmo em caso de falha.
Índices exigidos
Quando você chama /start com a opção buildIndexes definida como never, mongosync ignora a criação de índices desnecessários.
Os índices que são sempre construídos incluem:
mongosyncconstrói um índice no campo_idde cada collection que copia.mongosynccria índices fictícios para cada coleção fragmentada que não tem um índice para dar suporte à chave de shard no cluster de destino. QuandobuildIndexesestá definido comonever,mongosyncretém esse índice após o commit.
Proteção de endpoint
mongosync não protege o endpoint start . No entanto, por padrão, a API é vinculada apenas ao host local e não aceita chamadas de outras fontes. Além disso, a chamada start não expõe credenciais de conexão ou dados de usuário.