У меня есть процесс ETL, который будет запускаться периодически. Я использовал чайник (PDI), чтобы извлечь данные из исходной базы данных и скопировать их в базу данных этапа. Для этого я использую несколько преобразований с шагами ввода таблицы и вывода таблицы. Тем не менее, я думаю, что могу получить несогласованные данные, если исходная база данных будет изменена во время процесса, так как я не получаю моментальный снимок данных. Кроме того, я не знаю, будет ли база данных источника блокирована. Это будет проблемой, если извлечение займет несколько минут (и это займет их). Преимущество PDI заключается в том, что я могу выбрать только необходимые столбцы и использовать временные метки для получения только новых данных.PDI или mysqldump для извлечения данных без блокировки базы данных или получения несогласованных данных?
С другой стороны, я думаю, что mysqldump с -single-transaction позволяет мне получать данные согласованным образом и не блокировать исходную базу данных (все таблицы являются innodb). Дезадаптация заключается в том, что я получаю ненужные данные.
Могу ли я использовать PDI, или мне нужен mysqldump?
PD: Мне нужно прочитать определенные таблицы из определенных баз данных, поэтому я думаю, что xtrabackup это не очень хороший вариант.
Что я имею в виду, так это то, что весь процесс занимает какое-то время, и некоторые изменения могут быть сделаны между первой и последней таблицами, поэтому возможно, что первая таблица не была обновлена, а другая таблица. Таким образом, я мог бы иметь регистр в таблице, который ссылается на то, что не существует. Например, если я добавляю рабочего на новый завод, но таблица фабрик уже скопирована без новой фабрики или, наоборот, фабрика закрыта, а работник перемещается на другую фабрику, но рабочая таблица уже скопирована и закрытая фабрика удаляется. – vjsp90
@ vjsp90 Если вы извлекаете записи из источника в разные таблицы, и если нет связей b/w две таблицы при этом, вы можете попробовать параллельную загрузку таблиц. что я имел в виду по отношению к тому, что .. если ваша последняя таблица не зависит от нагрузки первой таблицы; вы cn попробуйте параллельную загрузку данных. !!! – Rishu
Да, я бы предпочел параллельную нагрузку, но всегда получаю ошибки (эти изменения, а не то же самое, как правило, дублируют ключи) в разных преобразованиях (я думаю, что DDL-операции). Если я запускаю их последовательно, ошибок не происходит. – vjsp90