Восстановить базу данных от Кафки - PullRequest
0 голосов
/ 10 января 2020

Я разрабатываю концепцию системы, основанной на Kafka и имеющей базу данных.

Используя Debezium (распределенная платформа с открытым исходным кодом для сбора данных об изменениях из базы данных), я буду генерировать события для кластер kafka, когда происходит изменение.

Имея некоторую дату хранения на Kafka, я хочу представить сценарий, в котором у меня есть cra sh в моей базе данных, и я хочу восстановить данные из кластера Kafka ..

Каков наилучший подход к проектированию такого типа системы восстановления?

Я думаю о сопоставлении индексов базы данных и индексов Кафки .. когда возникает проблема / потеря данных в базе данных индекс, я восстанавливаю его по правому индексу Кафки

как вы думаете, ребята?

1 Ответ

1 голос
/ 10 января 2020

Я разработал наш продукт репликации (IDR от IBM), чтобы отвечать сценарию ios, как это, и проблемное пространство на самом деле гораздо более запутано, чем может показаться на первый взгляд. Я не могу дать вам все наши секреты, но, возможно, некоторые области, которые вы, вероятно, должны будете рассмотреть, если это ценно для вас.

Скорее всего, вам понадобится понятие согласованности транзакций. У вас должен быть способ гарантировать, что данные, которые вы применяете из Kafka обратно в исходную базу данных, транзакционно согласованы во всех таблицах в вашем наборе репликации.

То есть вы хотите убедиться, что если вы применяете данные из транзакции 33, которая перешла в topi c 1 (представляющую таблицу 1), вам также необходимо убедиться, что вы применили данные из транзакция 33, которая перешла в топи c 2 (представляющая таблицу 2). Вам также необходимо убедиться, что вы находитесь на границе транзакции, иначе у вас будет поврежденная база данных, поскольку частичные транзакции вряд ли будут приемлемы. Наконец, вам нужен относительный порядок, если в исходной базе данных имеется ссылочная целостность, что означает, что при применении данных из транзакции, записанной в нескольких темах, вам необходимо выяснить, какая из них предшествовала другой, если исходные таблицы имеют RI. Вот некоторые из основных, затем вы начинаете рассматривать крайние случаи и то, как рассматриваются дубликаты.

Я выступил с докладом о нашем решении и теории, стоящей за ним, на саммите кафки в Сан-Франциско в 2018 году. Если вам интересно, послушайте .....

https://www.confluent.io/kafka-summit-sf18/a-solution-for-leveraging-kafka-to-provide-end-to-end-acid-transactions/

...