Типы миграции данных
С развитием бизнеса хранилище также необходимо будет часто мигрировать. Следующие сценарии часто встречаются в нашем процессе разработки
- Предприятия и команды быстро расширяются, и микросервисы должны быть разделены в подходящее время.Независимая база данных требуется для переноса данных из исходной базы данных в новую базу данных.
- Количество записей в одной таблице относительно велико, и требуются подтаблицы подбазы данных. Данные старой таблицы необходимо перенести в новую подтаблицу.
- Неправильный выбор хранилища, например, взаимная миграция реляционных баз данных, взаимная миграция PG, MySQL и Oracle. Взаимная миграция NoSQL Mongo, Cassandra и Hbase.
- Миграция компьютерного зала, взаимный перенос из самодельного компьютерного зала в облако
Все эти сценарии требуют переноса данных.Хотя детали решений различаются, есть и некоторые общие черты.
план переноса данных
Миграция данных просто означает перемещение данных из одного места в другое.
Поскольку наши данные не статичны, мы не можем просто написать миграцию задания. Необходимо обеспечить некоторые стандарты миграциистандартный
согласованность данныхПосле переноса данных записи не могут быть потеряны, а в данных одной записи не может быть отсутствующих полей.
без остановкиДанные постоянно записываются.Невозможно предотвратить запись данных, чтобы предотвратить запись.Необходимо обеспечить доступность делового письма.
Процесс миграции можно прервать и откатитьЭто очень требовательно и является стратегией, обеспечивающей безошибочность ваших данных. Если на каждом этапе переноса данных будет обнаружена какая-либо проблема, ее можно будет откатить к исходной базе данных, чтобы обеспечить нормальную работу бизнеса.
План миграции
Чтобы удовлетворить вышеуказанные требования, обычно используется стратегия двойной записи. То есть написать две копии, старую и новую.
- конвергентное чтение и запись Чем больше записей для чтения и записи, тем больше мест, которые нужно переключать в дальнейшем, и тем легче ошибиться, поэтому необходимо максимально свести все записи для чтения и записи в одно место.
- двойная запись Записывайте добавочные данные в обе системы хранения одновременно. Убедитесь, что новый код записи в порядке. Двойная запись основана на старой.Если старая запись прошла успешно, операция выполнена успешно.Если новая запись не удалась, вам необходимо записать журнал ошибок, проанализировать, почему это не удалось, и внести исправления и компенсации.
- Миграция старых данных акций Старая миграция данных памяти - написать новое хранилище на ID Traverse. Есть много конкретных решений. Вы можете использовать инструменты синхронизации, такие как Binlog + Flink. Количество данных относительно проходит.
- Проверка данных Проверка согласованности данных является высшим приоритетом для обеспечения количества записей с обеих сторон и целостности данных одной записи. Если объем данных не большой, то вообще полная проверка. Данных много и их можно взять для проверки.
- включить новое чтение После того, как проверка данных будет пройдена, вы можете переключиться на новое чтение, если проблема не исчезнет, вы можете переключиться на старое чтение. Устраните проблему и начните сначала.
- перестань писать дважды После N дней безопасной и стабильной работы в новом хранилище старое чтение может быть остановлено, и весь процесс миграции завершен.
Меры предосторожности
- Для серверных служб хранилище является краеугольным камнем и главным приоритетом. Требования к стабильности самые высокие. Необходимо убедиться, что данные переносятся гладко и не знают о бизнесе.
- В то же время хранилище является stateful, а миграция относительно сложна, поэтому разработчики должны смотреть вперед, стараться быть осторожными при выборе моделей, выбирать подходящую базу данных и избегать миграции базы данных. При обнаружении потенциальных проблем с выбором базы данных необходимо действовать решительно и выполнить миграцию как можно скорее. Не откладывайте на потом, полагая, что проблемы вряд ли возникнут. В противном случае, как только возникает проблема, это серьезный сбой, и причиненные потери неизмеримы.