AWS DMS - микросекундная точность для CD C на MYSQL в качестве источника EndPoint - PullRequest
1 голос
/ 08 января 2020

Я использую AWS DMS для переноса данных из MYSQL в качестве конечной точки источника и S3 в качестве конечной точки назначения.
Я хочу отслеживать обновления из источника, поэтому во время настройки я включил TimestampColumnName свойство (имя столбца: event_timestamp).
В результате (указан ниже) я получаю метку времени записей / событий, но НЕ микросекундную точность.

Я хочу, чтобы с точностью до микросекунды была построена логика последовательности c.
Я исследовал свойство конечной точки источника, а также цели, но не получил желаемого результата. Вот пример вывода:

enter image description here.

Может кто-нибудь взглянуть и предложить, если мне не хватает какого-либо свойства.
Выходной формат : мой файл в S3 - паркет.

1 Ответ

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

К сожалению Столбец DATETIME, добавленный AWS DMS S3 TimestampColumnName для Изменение захвата данных (CD C) При загрузке с MySQL источника будет только вторая точность .

Поскольку метка времени транзакции в MySQL двоичном журнале имеет только секунды .


Самое простое решение - добавить в MySQL новый столбец таблицы - отметку времени с точностью до микросекунды со значением по умолчанию, которое будет установлено при вставке, и / или обновить автоматически и использовать этот столбец как event_timestamp.

ts TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Кроме того, проверьте, что в AWS DMS - S3 значение ParquetTimestampInMillisecond равно False (или отсутствует / не установлено, по умолчанию установлено значение false).


AWS DMS S3 TimestampColumnName добавляет к выходу столбец с меткой времени.

При чтении 'stati c' - генерируется текущая метка времени:

Для полной загрузки каждая строка этого столбца отметки времени содержит отметку времени, когда данные были переданы из источника в tar получить по DMS.

Для CD C он будет считывать время транзакции из журнала транзакций базы данных:

Для загрузки захвата данных изменений (CD C) каждая строка Столбец метки времени содержит метку времени для фиксации этой строки в исходной базе данных.

И его точность будет равна метке времени в журнале транзакций базы данных:

. .. округление точности зависит от отметки времени фиксации, поддерживаемой DMS для исходной базы данных. Режим

CD C по существу репликация . Исходная база данных должна быть настроена соответствующим образом для записи такого журнала транзакций. База данных записывает в этот журнал информацию о транзакции вместе с отметкой времени транзакции / фиксации.

В случае MySQL это двоичный журнал . И MySQL отметка времени binlog составляет всего 32 бита - всего несколько секунд.


Кроме того, эта отметка времени транзакции может не всегда соответствовать фактическому порядку транзакций или изменениям порядка фактически были совершены в ( ссылка 1 , ссылка 2 ).

...