Как перезапустить кластер БД scylla без потери данных

#scylla

Вопрос:

Я хочу перезапустить свой кластер БД Scylla. Но я не хочу терять никаких данных.

Потеряю ли я какие-либо данные, если перезапущу один узел за другим?

Ответ №1:

Нет, вы не потеряете данные, если будете выполнять повторный перезапуск. Сцилла хранит данные, реплицированные на нескольких узлах (обычно 3 или более)

В зависимости от вашего коэффициента репликации (RF) и уровня согласованности (CL) во время перезапуска может произойти сбой операций чтения или записи. Смотрите интерактивную калькуляцию здесь https://docs.scylladb.com/getting-started/consistency/#consistency-level-calculator

Ответ №2:

Если «перезапуск узла» просто включает перезапуск Scylla или перезагрузку ядра, на котором он работает, то вы в безопасности: Scylla-это распределенная база данных, предназначенная для обеспечения долговечности и доступности, даже когда узлы временно исчезают из сети. Когда узел временно отключен, все его данные по-прежнему доступны для чтения (из двух других реплик), а также записи продолжают нормально работать и в конечном итоге будут реплицированы на отключенный узел, когда он, наконец, появится (с использованием механизмов «передачи» и/или «восстановления»).

Однако, если под «перезапуском узла» вы подразумеваете что — то более разрушительное-замену его совершенно новым узлом с пустым хранилищем, как в некоторых облачных установках, где узлы имеют временное хранилище. В этом случае вам следует быть более осторожным: если данные узла потеряны, у нас все еще есть еще две реплики, и база данных по — прежнему доступна, но вы должны сообщить кластеру, чтобы он «передал» данные, потерянные узлом, обратно узлу-прежде чем продолжить этот разрушительный перезапуск на дополнительные узлы. Если у вас RF=3 и вы уничтожите одновременно три узла, вы наверняка потеряете данные.