Skip to main content

DMS Replication Instance Has Multi-AZ Enabled

Overview

This check verifies that AWS Database Migration Service (DMS) replication instances have Multi-AZ (Multi-Availability Zone) enabled. Multi-AZ deployment creates a standby replica in a different Availability Zone, providing automatic failover if the primary instance becomes unavailable.

Risk

Without Multi-AZ enabled, your DMS replication instance is vulnerable to:

  • Service interruption: A single Availability Zone failure can halt your database migration completely
  • Extended downtime: Recovery from an AZ failure requires manual intervention and can take significant time
  • Data integrity issues: Replication gaps or rollbacks may occur if a failure happens mid-migration
  • Increased cutover risk: Migration tasks may stall, complicating database cutover windows

Remediation Steps

Prerequisites

You need permission to modify DMS replication instances in your AWS account.

Required IAM permissions

Your IAM user or role needs these permissions:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dms:ModifyReplicationInstance",
"dms:DescribeReplicationInstances"
],
"Resource": "*"
}
]
}

AWS Console Method

  1. Open the AWS DMS Console
  2. In the left navigation, click Replication instances
  3. Select the replication instance you want to modify
  4. Click the Modify button
  5. Scroll to the Multi-AZ section
  6. Check the box to enable Multi-AZ
  7. Choose whether to apply changes immediately or during the next maintenance window
  8. Click Modify to save your changes

Note: Enabling Multi-AZ may cause a brief outage if you choose to apply immediately. Plan accordingly for production workloads.

AWS CLI (optional)

List existing replication instances

First, identify which replication instances need Multi-AZ enabled:

aws dms describe-replication-instances \
--region us-east-1 \
--query 'ReplicationInstances[*].[ReplicationInstanceIdentifier,MultiAZ,ReplicationInstanceArn]' \
--output table

Enable Multi-AZ on a replication instance

aws dms modify-replication-instance \
--replication-instance-arn arn:aws:dms:us-east-1:<ACCOUNT_ID>:rep:<REPLICATION_INSTANCE_ID> \
--multi-az \
--apply-immediately \
--region us-east-1

Replace:

  • <ACCOUNT_ID> with your AWS account ID
  • <REPLICATION_INSTANCE_ID> with your replication instance identifier

To apply during the next maintenance window instead:

aws dms modify-replication-instance \
--replication-instance-arn arn:aws:dms:us-east-1:<ACCOUNT_ID>:rep:<REPLICATION_INSTANCE_ID> \
--multi-az \
--no-apply-immediately \
--region us-east-1
CloudFormation (optional)

CloudFormation template

AWSTemplateFormatVersion: '2010-09-09'
Description: DMS Replication Instance with Multi-AZ enabled

Parameters:
ReplicationInstanceIdentifier:
Type: String
Description: Unique identifier for the replication instance
ReplicationInstanceClass:
Type: String
Default: dms.t3.medium
Description: The compute and memory capacity of the replication instance
SubnetGroupIdentifier:
Type: String
Description: The name of the replication subnet group
VpcSecurityGroupIds:
Type: List<AWS::EC2::SecurityGroup::Id>
Description: Security groups for the replication instance

Resources:
DMSReplicationInstance:
Type: AWS::DMS::ReplicationInstance
Properties:
ReplicationInstanceIdentifier: !Ref ReplicationInstanceIdentifier
ReplicationInstanceClass: !Ref ReplicationInstanceClass
ReplicationSubnetGroupIdentifier: !Ref SubnetGroupIdentifier
VpcSecurityGroupIds: !Ref VpcSecurityGroupIds
MultiAZ: true
PubliclyAccessible: false
AutoMinorVersionUpgrade: true

Outputs:
ReplicationInstanceArn:
Description: ARN of the DMS replication instance
Value: !Ref DMSReplicationInstance

Deploy the stack

aws cloudformation deploy \
--template-file dms-replication-instance.yaml \
--stack-name dms-replication-instance \
--parameter-overrides \
ReplicationInstanceIdentifier=my-replication-instance \
SubnetGroupIdentifier=my-subnet-group \
VpcSecurityGroupIds=sg-12345678 \
--region us-east-1
Terraform (optional)

Terraform configuration

terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}

provider "aws" {
region = "us-east-1"
}

variable "replication_instance_id" {
description = "Unique identifier for the replication instance"
type = string
}

variable "replication_instance_class" {
description = "The compute and memory capacity of the replication instance"
type = string
default = "dms.t3.medium"
}

variable "replication_subnet_group_id" {
description = "The name of the replication subnet group"
type = string
}

variable "vpc_security_group_ids" {
description = "Security groups for the replication instance"
type = list(string)
}

resource "aws_dms_replication_instance" "main" {
replication_instance_id = var.replication_instance_id
replication_instance_class = var.replication_instance_class
replication_subnet_group_id = var.replication_subnet_group_id
vpc_security_group_ids = var.vpc_security_group_ids

# Enable Multi-AZ for high availability
multi_az = true

# Security best practices
publicly_accessible = false

# Keep DMS engine updated
auto_minor_version_upgrade = true

tags = {
Name = var.replication_instance_id
}
}

output "replication_instance_arn" {
description = "ARN of the DMS replication instance"
value = aws_dms_replication_instance.main.replication_instance_arn
}

Apply the configuration

terraform init
terraform plan
terraform apply

Modify existing instance

To enable Multi-AZ on an existing Terraform-managed instance, add or update the multi_az argument:

resource "aws_dms_replication_instance" "main" {
# ... existing configuration ...

multi_az = true # Add or change this line
}

Then run terraform apply to apply the change.

Verification

After enabling Multi-AZ, verify the change was applied:

  1. Open the AWS DMS Console
  2. Select your replication instance
  3. In the Details tab, confirm Multi-AZ shows as Yes
CLI verification
aws dms describe-replication-instances \
--region us-east-1 \
--filters Name=replication-instance-id,Values=<YOUR_INSTANCE_ID> \
--query 'ReplicationInstances[0].[ReplicationInstanceIdentifier,MultiAZ]' \
--output table

The output should show True for the Multi-AZ column.

Additional Resources

Notes

  • Cost impact: Multi-AZ doubles the cost of your replication instance since AWS maintains a standby replica
  • Maintenance windows: Consider scheduling the change during a maintenance window for production instances
  • Brief outage: Enabling Multi-AZ may cause a brief outage (typically a few minutes) if applied immediately
  • Subnet requirements: Your replication subnet group must span at least two Availability Zones for Multi-AZ to work
  • Instance class: Multi-AZ is supported on all DMS replication instance classes