Назад | Перейти на главную страницу

репликация cassandra не 100 процентов на каждом узле

У меня был кластер Cassandra из 3 узлов. Я выполнял некоторые действия по миграции colud и для этого добавил еще два узла в существующий кластер, и результат был следующим.

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.1.5    24.07 GB   256          59.4%             804b855f-78f3-42d6-8abf-b9aec73699df  rack1
UN  192.168.1.6    24.77 GB   256          59.8%             21f2066f-1794-485c-9c4f-d6d1b286a551  rack1
UN  172.16.2.20  15.96 GB   256          60.3%             2c2f512d-5743-4632-a4b5-cd2cac967897  rack1
UN  172.16.2.21  12.76 GB   256          60.0%             657ff1b6-773a-4782-a506-c4899cdf2a4f  rack1
UN  192.168.1.7    17.69 GB   256          60.5%             c8c4bc41-4b5c-41e6-bb71-ab90c2ed5eb0  rack1

Поле OWNS ранее было 100% для всех узлов, а теперь оно показывает разные числа, так что все 100% данных не на каждом узле, и предположим, если я отключу какой-либо узел, выключив Cassandra, тогда есть риск потери данных?

Это нормальная ситуация.

Скорее всего, у вас был коэффициент репликации 3, а с 3 узлами это приводит к тому, что каждый узел имеет реплики для всех остальных узлов. Когда вы добавите еще 2 узла, каждый узел будет хранить 3/5 ваших данных - свой собственный диапазон (1/5 данных) + реплики (2/5 данных). Это не точные 60%, потому что данные могут не быть точно разделены между узлами - некоторые разделы могут быть больше других и т. Д.

Я рекомендую вам прочитать Руководство по архитектуре DataStax - это даст вам лучшее понимание того, как работает Cassandra и как реплицируются данные.