Я сейчас перевожу ~ 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 часов.