Wie kann ich mithilfe der AWS CLI und jq eine Sicherung meiner AWS-DMS-Aufgabeneinstellungen erstellen?
Ich möchte eine Sicherungskopie meiner Einstellungen für die Replikationsaufgabe des AWS Database Migration Service (AWS DMS) erstellen, um sie zu einem späteren Zeitpunkt wiederherzustellen oder als Vorlage für andere Aufgaben zu verwenden. Wie mache ich das?
Kurzbeschreibung
Verwenden Sie die AWS Command Line Interface (AWS CLI) und den jq-Befehlszeilen-JSON-Prozessor, um eine Sicherung Ihrer Einstellungen für die AWS-DMS-Replikationsaufgabe zu erstellen.
- Führen Sie den AWS-CLI-Befehl describe-replication-tasks aus, um Ihre Einstellungen für die Replikationsaufgabe abzurufen.
- Verwenden Sie den jq-Befehlszeilen-JSON-Prozessor, um die Aufgabeneinstellungen zu filtern und zu transformieren.
- Speichern Sie die JSON.
Auflösung
Hinweis: Wenn beim Ausführen von AWS-CLI-Befehlen Fehler gemeldet werden, stellen Sie sicher, dass Sie die neueste Version der AWS-CLI verwenden.
Voraussetzungen
Abrufen der Einstellungen für Replikationsaufgaben
Um Ihre Einstellungen für die AWS-DMS-Replikationsaufgabe abzurufen, führen Sie den Befehl describe-replication-tasks mithilfe der AWS CLI aus und verwenden Sie das Flag --filters. Durch die Verwendung des Filter-Flags geben Sie nur die Aufgabe zurück, die mit einem dieser Elemente übereinstimmt:
- Die ID der Replikationsaufgabe
- Der ARN der Replikationsaufgabe
Führen Sie diese Abfrage aus, um die Einstellungen der Replikationsaufgabe für Ihre AWS-DMS-Aufgabe mithilfe der Replikationsaufgaben-ID abzurufen. Ersetzen Sie <dms_task_id> durch Ihre AWS-DMS-Replikationsaufgaben-ID.
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=<dms_task_id> --output json
Führen Sie diese Abfrage aus, um die Einstellungen der Replikationsaufgabe für Ihre AWS-DMS-Aufgabe mithilfe des ARN der Replikationsaufgabe abzurufen. Ersetzen Sie <dms_task_arn> durch den ARN Ihrer AWS-DMS-Replikationsaufgabe.
aws dms describe-replication-tasks --filter Name=replication-task-id,Values=<dms_task_arn> --output json
Filtern und Transformieren der JSON-Ausgabe mithilfe von jq
Filtern und transformieren Sie als Nächstes die JSON-Ausgabe aus dem vorherigen Schritt. Sie müssen diesen JSON filtern und transformieren, um ihn für die spätere Wiederherstellung kompatibel zu machen.
1. Verwenden Sie den jq-Befehlszeilen-JSON-Prozessor, um diese Änderungen an der JSON-Ausgabe vorzunehmen:
- Fügen Sie den Schlüssel CdcStartPosition hinzu und legen Sie ihn dann auf RecoveryCheckpoint fest.
- Diese Daten entfernen:
- ReplicationTaskArn
- ReplicationTaskStartDate
- ReplicationTaskStats
- Status
- StopReason
- ReplicationTaskCreationDate
- CloudWatchLogGroup
- CloudWatchLogStream
- RecoveryCheckpoint
2. Führen Sie einen dieser Befehle aus, um die JSON-Ausgabe an jq weiterzuleiten, und filtern und transformieren Sie dann die Daten der Replikationsaufgabe:
Verwenden der Aufgaben-ID für die AWS-DMS-Replikation:
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'
Verwenden der Aufgaben-ARN für die AWS-DMS-Replikation:
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'
Speichern der Ausgabe in einer JSON-Datei
Um die resultierende Ausgabe als Sicherung zu speichern, leiten Sie sie in eine JSON-Datei um. Dieser Befehl speichert beispielsweise die Aufgabeneinstellungen für eine AWS DMS-Aufgabe mit der Aufgaben-ID dms_original_task in einer JSON-Datei namens 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
Die resultierende JSON-Datei zeigt eine ähnliche Ausgabe wie diese:
{ "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" }
Sie können nun die JSON-Datei mithilfe des AWS-CLI-Befehls create-replication-task bearbeiten und wiederherstellen. Dieser Befehl erstellt beispielsweise eine AWS DMS-Replikationsaufgabe mit der Aufgaben-ID restored-dms-task unter Verwendung der Datei task_backup.json:
aws dms create-replication-task --replication-task-identifier restored-dms-task --cli-input-json file://task_backup.json
Hinweis: Wenn Sie den --replication-task-identifie in den Befehl einschließen, überschreiben Sie den Wert --replication-task-identifie in der Datei task_backup.json.
Relevante Informationen
Festlegen von Aufgabeneinstellungen für Aufgaben von AWS Database Migration Service
Erstellen von Aufgaben für die laufende Replikation mit AWS DMS
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 7 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor einem Jahr