Центр обработки данных Scylla и центр обработки данных Cassandra в одном кластере

У меня запущен кластер Cassandra с 21 узлом, схемой 150+ и данными около 20 ТБ. Мне нужно перенести схему и данные с Cassandra на Scylla с 7 узлами без простоев.

И Scylla, и Cassandra поддерживают одну и ту же версию cqlsh и почти одинаково распространяют данные и сплетничают.

Чтобы переместить данные, я пытаюсь создать новый центр обработки данных Scylla в существующем кластере Cassandra и обновить топологию Keyspace, чтобы Scylla также была в списке репликации DC, а затем Bootstrap / Rebuild узла Scylla в кластере.

Для этого я получаю сообщение об ошибке TCP-соединения при добавлении списка семян в узел.

Ошибка Сциллы: -

scylla: [shard 0] rpc - client 10.200.1.2:34236: соединение с сервером разорвано: соединение закрыто scylla: [shard 0] rpc - client 10.200.1.2:7000: не удалось подключиться: соединение отклонено.

Ошибка Кассандры: -

[MessagingService-Outgoing- / 10.200.2.2-Gossip] OutboundTcpConnection.java:411 - Socket to /10.200.2.2 закрыто [HANDSHAKE- / 10.200.2.2] OutboundTcpConnection.java:570 - Невозможно подтвердить версию с /10.200.2.2 [HANDSHAKE- /10.200.2.2] OutboundTcpConnection.java:561 - Версия установления связи с /10.200.2.2

Пожалуйста, помогите мне, если кто-то уже сделал это или какая-либо лучшая идея переноса данных без простоев, без потери данных с меньшим риском.


person sachin    schedule 14.04.2020    source источник


Ответы (2)


Вы не можете иметь гетерогенный кластер с узлами C * и Scylla в одном кластере.

Создайте отдельный кластер scylla, создайте схему, измените приложение, чтобы оно выполняло двойную запись (в оба кластера), а затем перенесите исторические данные C * в Scylla.

Есть несколько способов перенести данные. Это должно помочь: https://youtu.be/CDOesdWDT9Y Нет простоев, нет проблем, есть варианты и для этого.

person Moreno Garcia    schedule 14.04.2020
comment
Это стандартные шаги, упомянутые в документации по миграции, но при этом есть проблемы. В основном, когда у вас есть доступ к слишком большому количеству проектов и к базе данных, тогда сложно выполнять двойную запись для всех проектов, и если у вас есть более высокие узлы в Cassandra и вы хотите работать с сокращенными узлами Scylla, трудно сдвинуть старые данные. - person sachin; 15.04.2020
comment
Это понятно, но миграции разрушительны, и вы можете попытаться сохранить временное окно, когда только основные клиенты отправляют записи (и настроить их на двойную запись). Когда миграция будет завершена, вы сможете возобновить нормальную работу. - person dyasny; 15.04.2020
comment
Часто люди будут использовать такой инструмент, как Kafka, для управления мультиплексированием записи. Таким образом, вам не нужно возиться с клиентским кодом, чтобы решить проблемы согласованности между двумя базами данных. Согласились, что это далеко не идеально, но, как сказал дясный, любая миграция db - это разрушительное событие. К счастью, это тоже редкость. Однако это должно быть намного проще, чем другие миграции, когда вам нужно изменить API вашего приложения и драйверы для БД. - person ScyllaGreg; 15.04.2020
comment
@sachin Вы заглянули в github scylla-migrator? Кроме того, вариант, который предоставил Грег, хорош. Сдвинуть старые данные сложно, только если вы используете снимки. Но Spark, Kafka и даже sstableloader работали, несмотря на разную топологию. - person Moreno Garcia; 15.04.2020
comment
@ScyllaGreg, Морено Гарсия Да, я просмотрел все документы по миграции и способы, которые я могу сделать, но теперь я ищу более надежное решение, например, получить одно место, где я могу получить все запросы на удаление обновлений для записи базы данных Cassandra и вызвал та же команда в Scylla DB вместо включения двойной записи для всего приложения. - person sachin; 16.04.2020
comment
Думаю, ваше описание более надежного решения неточно. Вы ищете более простое решение, не требующее миграции и простоев. Вы можете желать такого, но это не поддерживается. Трудно представить сценарий, при котором любая база данных могла бы удовлетворить такое желание. Если вас устраивает несколько минут обслуживания. период, вы можете запустить Scylla на созданных Cassandra SSTables. Что означало бы никакой миграции. Но если вы не можете выдержать простоя, ваш единственный выбор - онлайн-миграция, которая всегда требует двойной записи. - person ScyllaGreg; 16.04.2020

Хотя Scylla совместим с Cassandra по нескольким осям (SSTables, CQL / Drivers и т. Д.), Scylla действительно нужно было внести некоторые изменения в протокол сплетен, которые сделали невозможным присоединение к кластеру Cassandra. Нет известного способа присоединить Сциллу к кластеру Кассандры.

Сцилла опубликовал несколько предлагаемых методов миграции.

Блог с описанием методов: https://www.scylladb.com/2019/04/02/spark-file-transfer-and-more-strategies-for-migrating-data-to-and-from-a-cassandra-or-scylla-cluster/

Веб-семинар, посвященный методам миграции [требуется регистрация]: https://go.scylladb.com/wbn-spark-scylla-migration-strategies-registration.html

Документация: https://docs.scylladb.com/operating-scylla/procedures/cassandra_to_scylla_migration_process/

Сообщество Slack для вопросов и ответов: http://slack.scylladb.com

person ScyllaGreg    schedule 14.04.2020