К сожалению Столбец 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 ).