Лучший способ проверить состояние репликации - сначала выдать db.collection.count()
, а затем более точный db.collection.checksum()
. Они также могут быть выданы с помощью этих локон вызовов:
Количество:
curl http://127.0.0.1:8529/_db/_system/_api/collection/test/count
{"id":"26724522","name":"test","isSystem":false,"doCompact":true,
"isVolatile":false,"journalSize":33554432,
"keyOptions":{
"type":"traditional","allowUserKeys":true},
"waitForSync":false,"indexBuckets":8,"count":40000,"status":3,
"type":2,"error":false,"code":200}
Контрольная сумма:
curl http://127.0.0.1:8529/_db/_system/_api/collection/test/checksum
{"id":"26724522","name":"test","isSystem":false,
"status":3,"type":2,"checksum":1808041899,"revision":"7926623225",
"error":false,"code":200}
Что касается export
-API, они на зависимого от состояния сервера. Документы постоянно записываются в WAL-файлы при создании. Файлы WAL используются, поэтому у вас нет распределенных записей на ваших дисках, что может нанести ущерб производительности. Затем документы будут перенесены в их файлы коллекции. Чтобы гарантировать, что экспорт не повредит производительности сервера, экспортируются только документы внутри файлов коллекции. Таким образом, количество документов может быть различным в зависимости от состояния объекта коллектора.
Самый надежный способ получить синхронизацию в состоянии async - это вставить документы в ведомое устройство. Если уж сложилось, что вы можете вернуться в нормальное состояние путем выдачи:
r.applier.stop()
r.syncCollection("myCollection", {endpoint: "tcp://127.0.0.1:8529"})
r.applier.start()
Однако изменения в раба будут потеряны.
Эта версия ArangoDB вы используете? Вероятно, вы знаете, что последовательность документов не гарантируется, поэтому вы не сможете напрямую сравнивать дампы мастера и его реплики. – dothebart
2.8.11 - Я согласен, что заказ не может быть гарантирован, но не должен совпадать? @dothebart – Fiala