| name | huawei-postgresql-ecs-to-rds-drs-cross-region |
| version | 1.0.0 |
| description | Orchestrate migration of self-managed PostgreSQL on ECS to Huawei Cloud RDS for PostgreSQL using DRS Full + Incremental, cross-region |
| category | migration |
| risk_level | high |
| status | READY_WITH_WARNINGS |
| requires_explicit_approval | true |
Purpose
Orchestrate a complete migration of a self-managed PostgreSQL database running on Huawei Cloud ECS to Huawei Cloud RDS for PostgreSQL, using DRS (Data Replication Service) with Full + Incremental synchronization, where the source and target are in different regions.
Supported scenario
- Source: Self-managed PostgreSQL on Huawei Cloud ECS (any region)
- Target: Huawei Cloud RDS for PostgreSQL (different region)
- Mechanism: DRS Full + Incremental (Real-Time Synchronization)
- Network: Public Internet via EIP (VPN is OUT_OF_SCOPE_FOR_THIS_SCENARIO)
- Topology: Cross-region
When to use this skill
- Migrating self-managed PostgreSQL from ECS to managed RDS for PostgreSQL
- Cross-region database migration requiring minimal downtime
- Database consolidation from self-managed to managed service
- When Full + Incremental replication is needed for near-zero-downtime cutover
When not to use this skill
- Same-region migration where VPN or VPC peering is available (prefer private network)
- Non-PostgreSQL databases (use appropriate DRS task type)
- When zero downtime is required and incremental lag is unacceptable
- When source PostgreSQL version is incompatible with target RDS version
- When VPN connectivity is required (OUT_OF_SCOPE_FOR_THIS_SCENARIO — use a different skill)
Required inputs
- Source ECS instance ID, region, and PostgreSQL version
- Source database name and replication user credentials
- Source security group ID
- Target RDS instance ID, region, and database name
- Target region for DRS task
- DRS task name
Optional inputs
- Specific tables/schemas to include or exclude
- Cutover window definition
- Validation queries
- Rollback strategy
- VPN configuration (OUT_OF_SCOPE_FOR_THIS_SCENARIO — this skill uses EIP only)
Required MCPs
Optional MCPs
- huaweicloud-pricing (for cost estimation of target RDS)
- huaweicloud-ticket (for support ticket creation)
Tool selection policy
- Use huaweicloud-drs tools for all DRS operations
- Write operations (create task, start task) require explicit_approval=true
- Never approve 0.0.0.0/0 or CIDRs broader than /32 for PostgreSQL port
- Use huaweicloud-pricing for cost estimation only (all tools read-only)
- Use huaweicloud-ticket prepare_ticket before create_ticket
Safety and approval gates
- DRS task creation requires explicit_approval=true
- DRS task start requires explicit_approval=true
- Source access plan (SG rules, pg_hba.conf) requires review before application
- CIDR broader than /32 is rejected by DRS MCP safety guards
- Region must be validated before task start
- Pre-check must pass before task start
- Connection test must pass before task start
- Cutover requires explicit approval
- Rollback/cleanup requires explicit approval
Workflow
Phase 1 — Discovery
Classification: AUTOMATED
- Read DRS console context:
drs_read_context
- List existing DRS tasks:
drs_list_tasks with source_engine=postgresql
- Find matching tasks:
drs_find_matching_tasks with source/target details
- Capture source ECS details (region, PostgreSQL version, database)
- Capture target RDS details (region, instance ID, database)
- Document current state
MCP tools used: drs_read_context, drs_list_tasks, drs_find_matching_tasks
Phase 2 — Architecture validation
Classification: AUTOMATED
- Validate source and target regions are different (cross-region requirement)
- Validate PostgreSQL version compatibility
- Validate source PostgreSQL configuration:
- wal_level = logical
- max_replication_slots >= 1
- max_wal_senders >= 1
- Validate target RDS instance is accessible
- Validate network architecture (public Internet via EIP)
- Document architecture validation results
MCP tools used: drs_read_context
Capability gaps:
- No MCP tool for PostgreSQL configuration validation (manual SSH required)
- No MCP tool for extension compatibility check
Phase 3 — Readiness and prechecks
Classification: ASSISTED
- Generate source access plan:
drs_generate_source_access_plan
- SG rule for DRS EIP
- pg_hba.conf entry for replication user
- Review plan before applying
- Apply source access changes (MANUAL: SSH to ECS, modify pg_hba.conf, reload PostgreSQL)
- Run connection test:
drs_run_connection_test
- Run DRS pre-check:
drs_run_precheck
- Review pre-check results
- Address any BLOCKING or NEEDS_USER_DECISION items
MCP tools used: drs_generate_source_access_plan, drs_run_connection_test, drs_run_precheck
Phase 4 — Plan generation
Classification: AUTOMATED
- Determine creation strategy based on discovery results
- Generate DRS task configuration
- Generate execution plan with estimated timeline
- Generate rollback plan
- Generate validation plan (DDL comparison, row counts, incremental test)
- Present plan for approval
MCP tools used: drs_read_context, drs_list_tasks
Phase 5 — Approval
Classification: MANUAL
- Review complete migration plan
- Review source access changes
- Review DRS task configuration
- Review rollback plan
- Obtain explicit approval from stakeholder
- Document approval with timestamp and approver
MCP tools used: None
Phase 6 — Execution
Classification: ASSISTED
- Select or create DRS task:
- If matching task exists:
drs_select_or_create_task with creation_strategy
- If no match:
drs_create_postgresql_full_incremental_task with explicit_approval=true
- Capture DRS replication instance EIP:
drs_capture_replication_instance_eip
- Update source access plan with actual DRS EIP (if different from initial)
- Re-run connection test:
drs_run_connection_test
- Re-run pre-check:
drs_run_precheck
- Start DRS task:
drs_start_task with explicit_approval=true
- Monitor task progress:
drs_get_task_status
MCP tools used: drs_select_or_create_task OR drs_create_postgresql_full_incremental_task, drs_capture_replication_instance_eip, drs_run_connection_test, drs_run_precheck, drs_start_task, drs_get_task_status
Phase 7 — Validation
Classification: ASSISTED
- Monitor DRS task status:
drs_get_task_status
- Wait for Full synchronization to complete
- Validate DDL structure (source vs target)
- Validate row counts (source vs target)
- Generate DRS report:
drs_generate_report
- Document validation results
MCP tools used: drs_get_task_status, drs_generate_report
Phase 8 — Cutover
Classification: MANUAL
- Verify incremental lag is acceptable
- Stop application writes to source database
- Wait for final incremental sync
- Verify final row counts match
- Redirect application connections to target RDS
- Verify application functionality
- Declare cutover complete or initiate rollback
MCP tools used: drs_get_task_status (for lag monitoring)
Phase 9 — Rollback
Classification: MANUAL
- Redirect application connections back to source ECS PostgreSQL
- Stop DRS task (manual operation in DRS console)
- Verify source database is operational
- Clean up target RDS data if needed
- Document rollback reason and lessons learned
MCP tools used: None (DRS task stop requires manual console operation)
Capability gap: No MCP tool for DRS task stop/termination
Phase 10 — Closure and reporting
Classification: AUTOMATED
- Generate final DRS report:
drs_generate_report
- Document migration summary:
- Source and target details
- DRS task configuration
- Validation results
- Cutover timestamp
- Issues encountered
- Recommend cleanup actions:
- Remove DRS replication instance
- Remove source SG rules for DRS EIP
- Remove pg_hba.conf entries for DRS
- Consider source ECS decommission timeline
- Archive migration artifacts
MCP tools used: drs_generate_report
Capability gap handling
Known capability gaps:
- GAP-PG-001: No MCP tool for PostgreSQL configuration validation (wal_level, replication slots)
- GAP-PG-002: No MCP tool for PostgreSQL extension compatibility check
- GAP-PG-003: No MCP tool for DRS task stop/termination
- GAP-PG-004: VPN connectivity OUT_OF_SCOPE_FOR_THIS_SCENARIO (public EIP is the supported architecture)
- GAP-PG-005: No MCP tool for application connection string update
- GAP-PG-006: No MCP tool for DDL comparison between source and target
- GAP-PG-007: No MCP tool for row count validation
Output artifacts
- discovery-report.md — Source/target inventory and DRS task state
- architecture-validation-report.md — Compatibility and configuration assessment
- source-access-plan.md — SG rules and pg_hba.conf changes
- readiness-report.md — Connection test and pre-check results
- migration-plan.md — Complete execution plan
- drs-task-config.json — DRS task configuration
- execution-log.md — Step-by-step execution log
- validation-report.md — DDL and data validation results
- drs-report.md — DRS-generated migration report
- rollback-plan.md — Rollback procedure
- final-report.md — Migration summary and recommendations
Failure handling
- Connection test failure: Check SG rules, pg_hba.conf, PostgreSQL status, network connectivity
- Pre-check failure: Address BLOCKING items. Review NEEDS_USER_DECISION items.
- Task creation failure: Check for duplicate tasks, validate parameters, review DRS limits
- Task start failure: Ensure connection test passed, pre-check passed, region validated
- Full sync failure: Check DRS logs, source database locks, target RDS capacity
- Incremental lag excessive: Check source write volume, network bandwidth, DRS instance size
Recovery procedure
- If failure during task creation: No data impact. Review parameters and retry.
- If failure during full sync: Target may have partial data. Stop task, clean target, retry.
- If failure during incremental sync: Source and target may diverge. Assess lag, may need restart.
- If failure during cutover: Revert application connections to source. Source is still operational.
- If failure post-cutover: Assess data integrity. May need reverse sync or manual repair.
Evidence and traceability
- DRS task ID and configuration preserved
- Connection test results preserved
- Pre-check results preserved
- Task status progression logged with timestamps
- Validation results (DDL, row counts) preserved
- Approval decisions recorded with approver identity
- DRS report generated with non-sensitive data only
Known limitations
- VPN connectivity is OUT_OF_SCOPE_FOR_THIS_SCENARIO (public EIP is the intended architecture, security mitigated by /32 CIDR)
- Source PostgreSQL configuration validation requires manual SSH access
- Extension compatibility must be checked manually
- DRS task stop/termination requires manual console operation
- Application connection string update is manual
- DDL comparison is manual (no automated tool)
- Row count validation is manual (no automated tool)
- DRS pricing is BLOCKED in huaweicloud-pricing MCP (resource_spec not found)
- Public Internet exposure of PostgreSQL port is a security risk (mitigated by /32 CIDR)
Status justification
Status: READY_WITH_WARNINGS
Evidence:
- 10 of 13 DRS MCP tools are available and functional [VERIFIED_FROM_CODE]
- 3 write tools require explicit_approval=true [VERIFIED_FROM_CODE]
- Safety guards implemented: CIDR /32, region guard, pre-check guard, duplicate guard [VERIFIED_FROM_TEST]
- 58 tests pass across 8 test suites [VERIFIED_FROM_TEST]
- Use case documented with 18-step runbook [VERIFIED_FROM_DOCUMENTATION]
- VPN NOT_REQUIRED (public EIP is the supported architecture for this scenario) [VERIFIED_FROM_DESIGN]
- DRS pricing BLOCKED [VERIFIED_FROM_DOCUMENTATION]
- Source PostgreSQL config validation requires manual SSH [INFERRED]
- DRS task stop requires manual console operation [NOT_VERIFIED]