Come posso utilizzare AWS CLI e jq per creare un backup delle impostazioni delle mie attività AWS DMS?
Desidero eseguire il backup delle impostazioni delle mie attività di replica AWS Database Migration Service (AWS DMS) per ripristinarle in un secondo momento o utilizzarle come modello.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per creare un backup delle impostazioni delle attività di replica AWS DMS, utilizza AWS CLI e il processore JSON a riga di comando jq.
Ottieni le impostazioni delle attività di replica
Per ottenere le impostazioni delle attività di replica AWS DMS, esegui il comando AWS CLI describe-replication-tasks. Utilizza il flag --filters per restituire solo l'attività che corrisponde a uno dei seguenti elementi:
- ID dell'attività di replica
- Nome della risorsa Amazon (ARN) dell'attività di replica
Per ottenere le impostazioni dell'attività di replica per l'attività AWS DMS con l'ID dell'attività di replica, esegui questo comando describe-replication-tasks:
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=dms_task_id --output json
Nota: sostituisci dms_task_id con l'ID della tua attività di replica AWS DMS.
Per ottenere le impostazioni dell'attività di replica per l'attività AWS DMS con l'ARN dell'attività di replica, esegui questo comando:
aws dms describe-replication-tasks --filter Name=replication-task-arn,Values=dms_task_arn --output json
Nota: sostituisci dms_task_arn con l'ARN della tua attività di replica AWS DMS.
Filtra e trasforma l'output JSON con jq
Nota: per scaricare lo strumento jq, consulta./jq sul sito web jqlang.
Devi filtrare e trasformare il JSON delle impostazioni dell'attività di replica per renderlo compatibile con il ripristino in un secondo momento.
Utilizza il processore JSON a riga di comando jq per modificare l'output JSON in base al tipo di attività che esegui.
Per un'attività di caricamento completo, rimuovi i seguenti dati:
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Per un'attività di acquisizione dei dati di modifica (CDC), aggiungi la chiave CdcStartPosition e imposta il valore su RecoveryCheckpoint. Inoltre, rimuovi i seguenti dati:
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Per un'attività di caricamento completo e acquisizione dei dati di modifica, rimuovi i seguenti dati:
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
Per inviare l'output JSON a jq, quindi filtrare e trasformare i dati dell'attività di replica, esegui uno di questi comandi describe-replication-tasks.
Per utilizzare l'ID dell'attività di replica AWS DMS, esegui questo comando:
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=dms_task_id --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring'
Nota: sostituisci dms_task_id con l'ID della tua attività di replica AWS DMS.
Per utilizzare l'ARN dell'attività di replica AWS DMS, esegui questo comando:
aws dms describe-replication-tasks --filter Name=replication-task-arn,Values=dms-task-arn --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring'
Nota: sostituisci dms_task_arn con l'ARN della tua attività di replica AWS DMS.
Salva l'output in un file JSON
Per salvare l'output come backup, reindirizzalo a un file JSON. Ad esempio, questo comando salva le impostazioni dell'attività per un'attività AWS DMS con ID attività dms_original_task nel file JSON task_backup.json:
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=original-dms-task --output json | jq '.ReplicationTasks | .[] | .TableMappings |= fromjson | .ReplicationTaskSettings |= fromjson | .["CdcStartPosition"] = .RecoveryCheckpoint | delpaths([ ["ReplicationTaskArn"],["ReplicationTaskStartDate"],["ReplicationTaskStats"],["Status"],["StopReason"],["ReplicationTaskCreationDate"],["ReplicationTaskSettings","Logging","CloudWatchLogGroup"],["ReplicationTaskSettings","Logging","CloudWatchLogStream"],["RecoveryCheckpoint"]]) | .TableMappings |= tostring |.ReplicationTaskSettings |= tostring' > task_backup.json
Esempio di output JSON:
{ "ReplicationTaskIdentifier": "original-dms-task", "SourceEndpointArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:endpoint:QKMQN2TCULCPYIK3CMGF2CRDC5DIWZ433BCKHZY", "TargetEndpointArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:endpoint:6LEFAZCDPQD2HWHJIXJYUU4PGMTKA2AKKFN4KCA", "ReplicationInstanceArn": "arn:aws:dms:us-east-1:xxxxxxxxxxxx:rep:C4CAB7ANKQU2AU7WFH4BYCJSLPS3YYUGCTHL3UA", "MigrationType": "full-load-and-cdc", "TableMappings": "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"293111713\",\"rule-name\":\"293111713\",\"object-locator\":{\"schema-name\":\"%\",\"table-name\":\"%\"},\"rule-action\":\"include\",\"filters\":[]}]}", "ReplicationTaskSettings": "{\"Logging\":{\"EnableLogging\":true,\"LogComponents\":[{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TRANSFORMATION\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SOURCE_UNLOAD\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"IO\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TARGET_LOAD\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"PERFORMANCE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SOURCE_CAPTURE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"SORTER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"REST_SERVER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"VALIDATOR_EXT\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TARGET_APPLY\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TASK_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"TABLES_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"METADATA_MANAGER\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"FILE_FACTORY\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"COMMON\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"ADDONS\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"DATA_STRUCTURE\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"COMMUNICATION\"},{\"Severity\":\"LOGGER_SEVERITY_DEFAULT\",\"Id\":\"FILE_TRANSFER\"}]},\"StreamBufferSettings\":{\"StreamBufferCount\":3,\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferSizeInMB\":8},\"ErrorBehavior\":{\"FailOnNoTablesCaptured\":true,\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"FailOnTransactionConsistencyBreached\":false,\"RecoverableErrorThrottlingMax\":1800,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"ApplyErrorEscalationCount\":0,\"RecoverableErrorStopRetryAfterThrottlingMax\":true,\"RecoverableErrorThrottling\":true,\"ApplyErrorFailOnTruncationDdl\":false,\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"RecoverableErrorCount\":-1,\"DataErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"RecoverableErrorInterval\":5,\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"TableErrorEscalationCount\":0,\"FullLoadIgnoreConflicts\":true,\"DataErrorPolicy\":\"LOG_ERROR\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"ValidationSettings\":{\"ValidationPartialLobSize\":0,\"PartitionSize\":10000,\"RecordFailureDelayLimitInMinutes\":0,\"SkipLobColumns\":false,\"FailureMaxCount\":10000,\"HandleCollationDiff\":false,\"ValidationQueryCdcDelaySeconds\":0,\"ValidationMode\":\"ROW_LEVEL\",\"TableFailureMaxCount\":1000,\"RecordFailureDelayInMinutes\":5,\"MaxKeyColumnSize\":8096,\"EnableValidation\":true,\"ThreadCount\":5,\"RecordSuspendDelayInMinutes\":30,\"ValidationOnly\":false},\"TTSettings\":{\"TTS3Settings\":null,\"TTRecordSettings\":null,\"EnableTT\":false},\"FullLoadSettings\":{\"CommitRate\":10000,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"MaxFullLoadSubTasks\":8,\"TransactionConsistencyTimeout\":600,\"CreatePkAfterFullLoad\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\"},\"TargetMetadata\":{\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"TargetSchema\":\"\",\"InlineLobMaxSize\":0,\"ParallelLoadQueuesPerThread\":0,\"SupportLobs\":true,\"LobChunkSize\":0,\"TaskRecoveryTableEnabled\":false,\"ParallelLoadThreads\":0,\"LobMaxSize\":32,\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"ParallelLoadBufferSize\":0},\"BeforeImageSettings\":null,\"ControlTablesSettings\":{\"historyTimeslotInMinutes\":5,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false,\"HistoryTableEnabled\":false,\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false},\"LoopbackPreventionSettings\":null,\"CharacterSetSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingTuning\":{\"StatementCacheSize\":50,\"CommitTimeout\":1,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"BatchApplyTimeoutMax\":30,\"MinTransactionSize\":1000,\"MemoryKeepTime\":60,\"BatchApplyMemoryLimit\":500,\"MemoryLimitTotal\":1024},\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true,\"HandleSourceTableAltered\":true},\"PostProcessingRules\":null}", "CdcStartPosition": "checkpoint:V1#102#00000000/B803EBA0#0#0#*#0#277" }
Per modificare e ripristinare il file JSON, esegui il comando create-replication-task.
Ad esempio, per utilizzare il file task_backup.json per creare un'attività di replica AWS DMS con ID attività restored-dms-task, esegui questo comando:
aws dms create-replication-task --replication-task-identifier restored-dms-task --cli-input-json file://task_backup.json
Nota: se includi replication-task-identifier nel comando, sovrascrivi il valore replication-task-identifier nel file task_backup.json.
Informazioni correlate
Specificazione delle impostazioni delle attività per le attività AWS DMS
Creazione di attività per la replica continua mediante AWS DMS
- Argomenti
- Migration & Modernization
- Lingua
- Italiano
