Полная миграция DMS с сервера RDS SQL на Kinesis Streams занимает слишком много времени - PullRequest
0 голосов
/ 27 февраля 2020

Я сейчас перевожу ~ 1 ТБ с RDS SQL Сервер на Kinesis Streams 10 осколками ), при полной загрузке только . Он состоит из ~ 20 таблиц, но более 90% от общего размера (в ГБ) и общего количества строк сконцентрировано только в 3 из них. Все они в одной задаче. Тем не менее, до сих пор это заняло больше 122 часов и прогрессировало только на 7% - для сравнения, полная загрузка для S3 заняла ~ 31h . Некоторые из этих таблиц имеют большие большие объекты.

Я также пытался оптимизировать задачу миграции с помощью json настроек , то есть частично , показанных ниже (это то же самое для конечных точек Kinesis и S3). Используемый экземпляр репликации является огромным r4.xlarge в обоих случаях.

{"TargetMetadata": {
    "TargetSchema": "",
    "SupportLobs": true,
    "FullLobMode": false,
    "LobChunkSize": 0,
    "LimitedSizeLobMode": true,
    "LobMaxSize": 32,
    "InlineLobMaxSize": 0,
    "LoadMaxFileSize": 0,
    "ParallelLoadThreads": 0,
    "ParallelLoadBufferSize": 0,
    "BatchApplyEnabled": false,
    "TaskRecoveryTableEnabled": false,
    "ParallelLoadQueuesPerThread": 0,
    "ParallelApplyThreads": 0,
    "ParallelApplyBufferSize": 0,
    "ParallelApplyQueuesPerThread": 0
},
"FullLoadSettings": {
    "TargetTablePrepMode": "DO_NOTHING",
    "CreatePkAfterFullLoad": false,
    "StopTaskCachedChangesApplied": false,
    "StopTaskCachedChangesNotApplied": false,
    "MaxFullLoadSubTasks": 49,
    "TransactionConsistencyTimeout": 10,
    "CommitRate": 50000
}, ...

"ControlTablesSettings": {
    "historyTimeslotInMinutes": 5,
    "ControlSchema": "",
    "HistoryTimeslotInMinutes": 5,
    "HistoryTableEnabled": false,
    "SuspendedTablesTableEnabled": false,
    "StatusTableEnabled": false
},
"StreamBufferSettings": {
    "StreamBufferCount": 3,
    "StreamBufferSizeInMB": 8,
    "CtrlStreamBufferSizeInMB": 5
},
"ChangeProcessingDdlHandlingPolicy": {
    "HandleSourceTableDropped": true,
    "HandleSourceTableTruncated": true,
    "HandleSourceTableAltered": true
},
"ChangeProcessingTuning": {
    "BatchApplyPreserveTransaction": true,
    "BatchApplyTimeoutMin": 1,
    "BatchApplyTimeoutMax": 30,
    "BatchApplyMemoryLimit": 500,
    "BatchSplitSize": 0,
    "MinTransactionSize": 3000,
    "CommitTimeout": 3,
    "MemoryLimitTotal": 25000,
    "MemoryKeepTime": 600,
    "StatementCacheSize": 200
}, ...

Пропускные строки на цели тоже немного странные, так как вместо этого они звучат на разреженных пиках. более непрерывной / устойчивой кривой 1 .

Чего мне здесь не хватает? Я действительно хотел, чтобы такая миграция с полной нагрузкой была возможна менее чем за 12 часов.

...