startReplicationTask method

Future<StartReplicationTaskResponse> startReplicationTask({
  1. required String replicationTaskArn,
  2. required StartReplicationTaskTypeValue startReplicationTaskType,
  3. String? cdcStartPosition,
  4. DateTime? cdcStartTime,
  5. String? cdcStopPosition,
})

Starts the replication task.

For more information about DMS tasks, see Working with Migration Tasks in the Database Migration Service User Guide.

May throw AccessDeniedFault. May throw InvalidResourceStateFault. May throw ResourceNotFoundFault.

Parameter replicationTaskArn : The Amazon Resource Name (ARN) of the replication task to be started.

Parameter startReplicationTaskType : The type of replication task to start.

start-replication is the only valid action that can be used for the first time a task with the migration type of full-loadfull-load, full-load-and-cdc or cdc is run. Any other action used for the first time on a given task, such as resume-processing and reload-target will result in data errors.

You can also use ReloadTables to reload specific tables that failed during migration instead of restarting the task.

For a full-load task, the resume-processing option will reload any tables that were partially loaded or not yet loaded during the full load phase.

For a full-load-and-cdc task, DMS migrates table data, and then applies data changes that occur on the source. To load all the tables again, and start capturing source changes, use reload-target. Otherwise use resume-processing, to replicate the changes from the last stop position.

For a cdc only task, to start from a specific position, you must use start-replication and also specify the start position. Check the source endpoint DMS documentation for any limitations. For example, not all sources support starting from a time.

Parameter cdcStartPosition : Indicates when you want a change data capture (CDC) operation to start. Use either CdcStartPosition or CdcStartTime to specify when you want a CDC operation to start. Specifying both values results in an error.

The value can be in date, checkpoint, or LSN/SCN format.

Date Example: --cdc-start-position “2018-03-08T12:12:12”

Checkpoint Example: --cdc-start-position "checkpoint:V1#27#mysql-bin-changelog.157832:1975:-1:2002:677883278264080:mysql-bin-changelog.157832:1876#0#0#*#0#93"

LSN Example: --cdc-start-position “mysql-bin-changelog.000024:373”

Parameter cdcStartTime : Indicates the start time for a change data capture (CDC) operation. Use either CdcStartTime or CdcStartPosition to specify when you want a CDC operation to start. Specifying both values results in an error.

Timestamp Example: --cdc-start-time “2018-03-08T12:12:12”

Parameter cdcStopPosition : Indicates when you want a change data capture (CDC) operation to stop. The value can be either server time or commit time.

Server time example: --cdc-stop-position “server_time:2018-02-09T12:12:12”

Commit time example: --cdc-stop-position “commit_time:2018-02-09T12:12:12“

Implementation

Future<StartReplicationTaskResponse> startReplicationTask({
  required String replicationTaskArn,
  required StartReplicationTaskTypeValue startReplicationTaskType,
  String? cdcStartPosition,
  DateTime? cdcStartTime,
  String? cdcStopPosition,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonDMSv20160101.StartReplicationTask'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'ReplicationTaskArn': replicationTaskArn,
      'StartReplicationTaskType': startReplicationTaskType.value,
      if (cdcStartPosition != null) 'CdcStartPosition': cdcStartPosition,
      if (cdcStartTime != null)
        'CdcStartTime': unixTimestampToJson(cdcStartTime),
      if (cdcStopPosition != null) 'CdcStopPosition': cdcStopPosition,
    },
  );

  return StartReplicationTaskResponse.fromJson(jsonResponse.body);
}