Google Cloud Database Migration Service: Moving Your Data Without Stopping the Show

Google Cloud Database Migration Service: Moving Your Data Without Stopping the Show

A friendly, in-depth guide to how Google Cloud's managed migration service copies, converts and continuously syncs databases into Cloud SQL and AlloyDB, so your applications stay online while the move happens.

Imagine you are moving from an old apartment to a new house, but you are not allowed to close your shop for even one afternoon. Customers keep walking in, buying things and writing in your ledger while the moving trucks are loading boxes. The trick is to carry everything over slowly, keep a careful list of every new sale that happens during the move, and then hand over the keys at a moment when almost nothing is left to carry. That is exactly the problem that Google Cloud Database Migration Service solves for databases, and in this guide we will walk through it one idea at a time.

1What Is Database Migration Service?

Database Migration Service, usually shortened to DMS, is Google Cloud’s managed tool for moving databases into Google Cloud.

A database is an organized collection of information, such as customer names, orders, bank balances or student marks. Applications read from it and write to it all day long. When a company decides to run that database on Google Cloud instead of in its own server room, someone has to copy every table, every row and every rule across safely. Doing that by hand is slow, risky and stressful.

DMS does the heavy lifting for you. It is a fully managed service, which means Google runs and watches the machinery that performs the copy. You do not create migration servers, you do not size them, and you do not patch them. You describe where your data lives today, where you want it to live tomorrow, and DMS takes care of the transfer, including the schema, the metadata and the data itself.

Simple Analogy

Think of DMS as a professional moving company that also keeps your shop open. The movers pack the old shop, drive the boxes over, and keep a notebook of every sale made while they were driving. Before they leave, they unpack that notebook at the new shop so nothing is lost.

Where DMS fits in the Google Cloud family

DMS does not store your data for the long term. It is a bridge, not a destination. The destinations are Google Cloud databases, mainly Cloud SQL (Google’s managed MySQL, PostgreSQL and SQL Server) and AlloyDB for PostgreSQL (a high-performance PostgreSQL-compatible database). Once the migration is finished, DMS steps away and your applications talk directly to the new database.

Managed
No migration servers to build or patch
Continuous
Keeps syncing changes until you switch
Two Kinds
Same-engine and cross-engine moves

2Why Do Teams Migrate Databases at All?

Understanding the motivation makes every later design choice easier to follow.

Nobody migrates a database for fun. A database is usually the most sensitive part of any system, because losing or corrupting data is far worse than a slow web page. Teams migrate only when the benefits clearly outweigh the risks. Knowing the common reasons helps you choose the right strategy.

Reason 1

Less Operational Work

Managed databases handle backups, patching, failover and storage growth so engineers can focus on the application.

Reason 2

Data Center Exit

Hardware leases end, buildings close, and companies decide to stop running their own server rooms.

Reason 3

Licensing Costs

Moving from a commercial engine to open-source PostgreSQL can reduce license bills significantly.

Reason 4

Scale and Performance

Cloud databases can grow storage and add read replicas far faster than a physical server can be upgraded.

Reason 5

Reliability

High availability options and automated backups are built in rather than assembled by hand.

Reason 6

Modernization

Teams want to be closer to analytics, machine learning and other cloud services that sit beside the database.

What makes migration hard?

The first difficulty is size. Databases can hold terabytes, and copying that much data takes hours or days. The second difficulty is change. While you copy, customers keep creating new records, so the copy is out of date the moment it finishes. The third difficulty is difference. If the old and new database engines speak slightly different dialects, the structure itself must be translated.

!
Common Misconception

Many beginners think a migration is just copying a file. A live database is constantly changing, so a simple file copy would capture a half-finished, inconsistent picture. Proper migration tools understand the database’s internal change log.

3Core Concepts and Vocabulary

Before going deeper, let us define every word you will meet in the console and the documentation.

Term 1

Source Database

The database you are moving away from. It might be on-premises, in another cloud, or already inside Google Cloud.

Term 2

Destination Database

The Cloud SQL or AlloyDB instance that will receive the data and become your new home.

Term 3

Connection Profile

A saved description of how to reach a database: its address, credentials and security settings. You create one for the source and one for the destination.

Term 4

Migration Job

The actual unit of work. A job ties a source profile to a destination, picks the migration type and runs the whole process.

Term 5

Full Dump (Backfill)

The first big copy of all existing data. Google also calls the historical snapshot a backfill when discussing pricing.

Term 6

Change Data Capture (CDC)

The process of reading the source’s change log and replaying every new insert, update and delete on the destination.

Term 7

Promotion

The final step where the destination stops being a replica and becomes the real, independent, writable database.

Term 8

Conversion Workspace

An editor-like area used in cross-engine moves to translate schema and code from one database dialect to another.

Simple Analogy

A connection profile is like a contact card with an address and a door key. A migration job is the moving schedule that says which truck goes from which card to which card, and promotion is the moment the new address officially becomes your home.

i
Remember

DMS is a regional service. The connection profiles, migration jobs, destination databases and conversion workspaces for one migration must all live in the same Google Cloud region.

4Homogeneous and Heterogeneous Migrations

The single most important classification in DMS is whether the database engine changes during the move.

A homogeneous migration keeps the same database engine. For example, you move a MySQL database into Cloud SQL for MySQL. The language the database speaks stays the same, so the structure and code carry over directly.

A heterogeneous migration changes the engine. A classic example is moving an Oracle database into PostgreSQL. Oracle and PostgreSQL use different data types, different built-in functions and different procedural languages, so the structure and code must be converted before data can flow.

Simple Analogy

A homogeneous move is like moving a book from one English bookshelf to another. A heterogeneous move is like translating the book from English into French first, then shelving it. The second job needs a translator, and translators sometimes need help with tricky sentences.

AspectHomogeneousHeterogeneous
Engine changeNo, same engineYes, different engine
Example pathsMySQL to Cloud SQL for MySQL; PostgreSQL to Cloud SQL or AlloyDB; SQL Server to Cloud SQL for SQL ServerOracle to Cloud SQL or AlloyDB for PostgreSQL; SQL Server to PostgreSQL
Schema workMigrated as-isConverted using a conversion workspace
Application changesUsually minimalOften needed, because SQL dialects differ
Effort and riskLowerHigher, with more testing required
DMS pricingNo additional charge for native migrationsCharged by volume of data processed
i
Practical Tip

If you have the freedom to choose, a homogeneous lift-and-shift first and a later modernization second is often safer than changing engine and location at the same time. Changing one big thing per project keeps debugging simple.

5One-Time and Continuous Migrations

Your second big choice is how long the source and destination stay in sync.

A one-time migration performs a full dump and load only. It copies everything that exists at that moment and then stops. It does not follow later changes, so you need to stop writes on the source during the process to avoid losing data. This is a good fit for small databases, test environments, or systems that can tolerate a maintenance window.

A continuous migration starts with the same full dump, but then it keeps listening to the source’s change log and applying every change to the destination. The two databases stay almost identical until you decide to switch. Because the final switch only needs to wait for a tiny backlog, downtime can shrink from hours to minutes.

Continuous Migration Wins When

  • The database is large and a long outage is unacceptable
  • You want time to test the new database with real, fresh data
  • You need a rehearsal cutover before the real one
  • Business rules demand minimal downtime

One-Time Migration Wins When

  • The data set is small and copying takes minutes
  • A scheduled maintenance window is acceptable
  • The source cannot be configured for change logging
  • You only need a snapshot for a test or proof of concept
Simple Analogy

A one-time migration is like photocopying a notebook and walking away. A continuous migration is like having a friend sit next to you, copying each new line into a second notebook as you write, so the second notebook is always almost current.

6Supported Sources and Destinations

DMS supports a defined list of engines, versions and hosting locations, and the list changes over time.

The destination side is deliberately narrow. DMS moves data into Google Cloud, specifically into Cloud SQL and AlloyDB for PostgreSQL. It is not a general-purpose tool for moving data out of Google Cloud or between two other clouds.

MySQL to Cloud SQL for MySQL

Sources include self-managed MySQL on-premises or on cloud virtual machines, Amazon RDS, Amazon Aurora, Microsoft Azure Database for MySQL and Cloud SQL itself. MariaDB is not compatible. The destination should be the same major version or one version higher than the source.

PostgreSQL to Cloud SQL for PostgreSQL

Sources include self-managed PostgreSQL, Amazon RDS and Aurora, Azure Database for PostgreSQL Flexible Server and other Cloud SQL instances. The service migrates the whole database server, including all databases inside it.

PostgreSQL to AlloyDB for PostgreSQL

A homogeneous path for teams that want the higher performance and scale of AlloyDB while keeping PostgreSQL compatibility.

SQL Server to Cloud SQL for SQL Server

A homogeneous path that supports certain editions and versions, with some older or limited editions excluded. Always check the current compatibility table before planning.

Oracle to Cloud SQL or AlloyDB for PostgreSQL

A heterogeneous path with conversion workspaces. Supported Oracle sources include self-hosted single instances, Exadata, Real Application Clusters, Active Data Guard, Bare Metal Solution and Amazon RDS for Oracle. Several versions from 11g through 21c are covered, while Oracle Autonomous Database is not supported.

SQL Server to PostgreSQL

A heterogeneous path for teams leaving a commercial engine for open-source PostgreSQL, again with edition and version limits that you must verify.

!
Check Before You Commit

Version lists, minor-version support and new migration paths are updated regularly. Treat any list in an article, including this one, as a starting point and confirm against the official supported databases page before you finalize a plan.

7Architecture and Components

Let us look at the building blocks that appear when a migration runs.

At the highest level, there are four players. The source database holds the original data. DMS acts as the coordinator and data mover. A network path connects the source to the destination. The destination database receives the data. Everything you configure in the console is really about describing these four players and the road between them.

flowchart LR
  A["Source database on-premises or other cloud"] --> N["Secure network path"]
  N --> D["Database Migration Service"]
  D --> T["Destination Cloud SQL or AlloyDB"]
  D --> M["Monitoring and logs"]
  C["Conversion workspace for cross-engine moves"] --> T
        
FIG 1 — The main components involved in a migration

In the diagram, notice that the conversion workspace connects to the destination, not to the data stream. The workspace prepares the structure of the new database, while the migration job fills it with data. These are two related but separate activities.

The components in plain words

Component

Source Connection Profile

Holds the address, port, username and security details used to read from the source.

Component

Destination Instance

The Cloud SQL or AlloyDB instance. DMS can create the Cloud SQL destination for you or use one you prepared.

Component

Migration Job

Runs the dump, tracks replication and exposes status, lag and errors in one place.

Component

Networking Method

The route from destination to source, such as an IP allowlist, reverse SSH tunnel, VPC peering or Private Service Connect.

i
Direction Matters

During migration, it is the destination that reaches out to the source to pull data. That is why most network setup work is about letting the destination see the source, not the other way round.

8How a Migration Works Internally

Every continuous migration follows the same story: copy, catch up, switch.

When you start a continuous migration job, DMS first records a consistent starting point in the source’s change log. It then performs the full dump, copying the existing data to the destination. While the dump runs, the source keeps accepting writes, and those writes are safely recorded in the log.

After the dump finishes, DMS switches into change data capture mode. It reads the recorded changes from the log in order and applies them to the destination. At first there may be a backlog, but the destination quickly catches up, and from then on the gap between the two systems is measured in seconds or less.

1

Prepare the Source

Enable the source settings that expose a change log and create a user with enough permissions for DMS to read data and the log.

2

Create Profiles and the Job

Describe the source, choose the destination, pick the migration type and select a networking method.

3

Full Dump

DMS reads existing data and loads it into the destination. Large databases spend most of their time in this phase.

4

Change Data Capture

DMS replays ongoing inserts, updates and deletes so the destination keeps up with the source.

5

Verify and Promote

You check the data, stop writes on the source, wait for lag to reach zero and promote the destination.

sequenceDiagram
  participant App as Application
  participant Src as Source database
  participant DMS as Migration job
  participant Dst as Destination database
  App->>Src: Normal reads and writes
  DMS->>Src: Mark starting point in change log
  DMS->>Src: Read existing data
  DMS->>Dst: Load full dump
  App->>Src: More writes continue
  DMS->>Src: Read new changes
  DMS->>Dst: Apply changes in order
  App->>Dst: After promotion, app points here
        
FIG 2 — Sequence of a continuous migration
Simple Analogy

Think of a bank statement. The full dump is like copying last month’s statement. Change data capture is like copying each new transaction as it appears, until your copy shows the same balance as the bank’s own record.

9Data Flow and Migration Lifecycle

A migration job moves through recognizable phases, and knowing them helps you read the console correctly.

A job begins as a configuration that has not yet started. Once you start it, it enters the full dump phase. When the dump completes, continuous jobs move into change data capture and stay there for as long as you wish. One-time jobs behave differently: after the dump, they reach a state described in the documentation as ready for promote, because there are no changes left to follow.

Promotion is the last meaningful action. It tells DMS to stop replication and convert the destination into a standalone database that your applications can write to. After promotion, the link between old and new is cut, and the old source no longer receives updates.

flowchart TD
  A["Job created"] --> B["Full dump running"]
  B --> C{"Migration type"}
  C -->|"Continuous"| D["Change data capture running"]
  C -->|"One-time"| E["Ready for promote"]
  D --> F["Lag near zero and checks passed"]
  F --> G["Promote"]
  E --> G
  G --> H["Destination is independent and writable"]
        
FIG 3 — Simplified lifecycle of a migration job
i
Reading Statuses

Exact status names can differ slightly between console versions and migration paths. Learn the idea behind each phase rather than memorizing labels, and always read the current documentation for your specific path.

Why replication lag is the number to watch

Replication lag is the delay between something happening on the source and the same thing appearing on the destination. A small, steady lag means the destination is healthy. A growing lag means the destination cannot keep up, often because it is under-sized or the source is receiving unusually heavy writes.

10Connectivity: Building the Road Between Source and Destination

Choosing the right network method is often the longest conversation in a migration project.

DMS offers several ways for the destination to reach your source. The right choice depends on where the source lives, how sensitive the data is, how big the migration is and how much network setup your organization permits. Understanding the trade-offs early prevents painful rework later.

MethodHow It WorksBest ForWatch Out For
IP allowlistThe source accepts connections from the destination’s outgoing public IP addressQuick proofs of concept and small movesTraffic crosses the public internet, so it is less secure
Reverse SSH tunnelA tunnel through a cloud VM lets the destination reach the source securelyShort-lived moves when no Google Cloud VPC reaches the sourceYou own and pay for the VM; performance is limited
VPC peeringNetworks are connected privately, often together with VPN or InterconnectLong-running or high-volume migrationsNeeds a VPC that can already reach the source
Private Service Connect interfacesA network attachment in your VPC lets the destination reach private source IPsPrivate connectivity without using peering quotaNeeds firewall changes; attachment cannot be modified afterwards
flowchart LR
  S["On-premises source"] --- V["VPN or Interconnect"]
  V --- P["Your Google Cloud VPC"]
  P --- X["Peering or Private Service Connect"]
  X --- D["Destination database"]
        
FIG 4 — A typical private connectivity path
Simple Analogy

An IP allowlist is like using a public road and posting a guard at your gate. A reverse tunnel is a private covered bridge. VPC peering or Private Service Connect is a private road that never touches the public highway at all.

!
AlloyDB Networking Note

AlloyDB uses private services access, which relies on VPC peering internally. Transitive peering is not supported, so if the source lives in a different peered network, an intermediary proxy such as a reverse SSH setup may be needed.

11Conversion Workspaces for Cross-Engine Migrations

When the engine changes, the structure and code must be translated before data can move.

An Oracle database often contains thousands of objects: tables, indexes, views, sequences, packages, functions and stored procedures. Each has Oracle-specific syntax. A conversion workspace is an interactive area in DMS where these objects are converted into PostgreSQL syntax, reviewed, fixed and then applied to the destination.

Conversion happens in rounds, not all at once. You add a group of objects, run the conversion, read the issues, fix them and test in the destination. Then you add the next group. This staged approach keeps a huge conversion manageable, and it lets different people work on different areas.

1

Create the Workspace

Point it at your source and choose the PostgreSQL destination type.

2

Run the Initial Conversion

DMS translates what it can automatically and flags what it cannot.

3

Review and Fix Issues

Engineers edit problem objects, with optional Gemini-assisted explanations and fix suggestions for tricky code.

4

Apply to the Destination

Converted objects are created in the destination database, ready to receive data.

!
Do Not Skip Application Testing

A converted function that compiles is not the same as a function that behaves identically. Date handling, empty-string rules, number precision and sorting can differ between engines, so run your real application tests against the converted database.

Conversion is usually the largest chunk of effort in a heterogeneous project, not the data copy. Experienced teams start conversion early, run it repeatedly and treat remaining issues as a backlog to be tracked sprint by sprint.

12Preparing the Source and the Destination

Most failed migrations fail during preparation, not during the migration itself.

Preparation has two halves. On the source, you prepare for access and for change tracking. On the destination, you prepare capacity and connectivity. Doing both carefully before pressing start saves days of troubleshooting.

Source preparation

The source must allow the destination to connect, and for continuous migrations it must expose a change log in the format DMS understands. This usually means changing database configuration settings, which may require a restart in some engines. A dedicated migration user with only the permissions needed is better than reusing an administrator account.

Destination preparation

The destination should have enough compute and memory to handle the full dump and the live changes at the same time. Many teams scale the destination up during migration and scale it back down afterwards. Storage should have headroom, because the migrated data plus indexes and logs can be larger than expected.

Check 1

Enable the APIs

The Database Migration Service API and related services such as Compute Engine, Cloud SQL Admin and Cloud Storage must be enabled in the project.

Check 2

Grant the Roles

The person creating the job needs suitable roles, such as the Database Migration Admin role, plus rights on the destination service.

Check 3

Review Limitations

Read the known limitations for your path: data types, object types, size limits and unsupported features.

Check 4

Plan the Network

Choose a connectivity method, open firewalls and test reachability before creating the job.

Check 5

Pick the Region

Choose a destination region close to your applications and users, since all migration entities must share one region.

Check 6

Freeze Schema Changes

Avoid structural changes on the source while the migration runs, because they can interrupt replication.

i
Test Connectivity First

Use the connection profile test feature before starting a job. A failed test in the first five minutes is far cheaper than a failed job after a ten-hour dump.

13Security Considerations

You are moving your most valuable asset, so security must be designed in from the start.

Security in a migration has four layers: who may operate the migration, how the data travels, how the data is protected at rest, and how credentials are handled. Each layer has its own tools.

Layer 1

Access Control

Use Identity and Access Management roles so only authorized people can create, run and promote migration jobs. Prefer least privilege over broad administrator roles.

Layer 2

Encryption in Transit

Use SSL or TLS certificates for the source connection. For Oracle, DMS supports TLS for version 12 and later.

Layer 3

Encryption at Rest

Cloud databases are encrypted by default. If your policy requires customer-managed encryption keys, plan them before creating the destination.

Layer 4

Private Networking

Prefer private connectivity methods over public IP allowlists for sensitive or regulated workloads.

Credentials and cleanup

The migration user on the source holds powerful read access, so treat its password like a key to the vault. Use a unique password, limit its network access, and remove or disable the account when the migration is complete. Delete connection profiles and jobs you no longer need, because they hold connection details.

Data residency and compliance

Because DMS is regional, you choose exactly where the destination data will live. This matters for regulations that restrict where personal data may be stored. Confirm the region choice with your compliance team before building anything.

!
Common Mistake

Leaving a temporary public IP allowlist open after the migration ends. Once cutover is complete, remove every temporary firewall rule, tunnel VM and network attachment you created only for the migration.

14Monitoring, Logging and Metrics

A migration you cannot observe is a migration you cannot trust.

DMS shows job status and progress in the console, and it integrates with Google Cloud’s logging and monitoring tools. During the full dump phase, you mainly watch progress and errors. During change data capture, you mainly watch replication lag, because lag tells you how far behind the destination is.

Status
Which phase the job is currently in
Lag
How far behind the destination is
Errors
Failures logged for investigation

What to alert on

Set alerts for jobs that fail, for lag that grows beyond a threshold you define, and for destination resource pressure such as high CPU or low disk space. Alerts let you react at night or on weekends without staring at a screen.

Verifying completeness

Monitoring tells you the process is healthy, but it does not prove the data is correct. Validation is a separate step. Compare row counts between source and destination, compare checksums or sampled records for critical tables, and run business-level checks such as totals of orders or balances.

Simple Analogy

Monitoring is like watching the moving truck’s GPS to confirm it is on the road. Validation is opening the boxes at the new house and checking that the plates are not broken.

i
Know What Is Not Migrated

Some items are outside the automatic migration scope for certain paths, such as particular users, certain schemas or specific object types. Read the completeness guidance for your path and plan manual steps for those items.

15Cutover and Promotion Strategy

Cutover is the short, careful moment when production traffic changes address.

Cutover is where all the preparation pays off. Because continuous migration keeps the destination almost current, the cutover itself can be a quick, scripted event. The key is to treat it like a rehearsed procedure rather than an improvisation.

1

Confirm Readiness

Lag is small and steady, validation checks are passed, and the application has been tested against the destination.

2

Stop Writes on the Source

Pause the application or put it into read-only mode so no new changes appear on the old database.

3

Let the Backlog Drain

Wait until replication lag reaches zero so the destination has every last change.

4

Promote

Promote the destination so it becomes independent and writable.

5

Repoint and Verify

Switch application connection settings to the new database and run smoke tests on key business flows.

flowchart LR
  A["Application writes to source"] --> B["Pause writes"]
  B --> C["Drain remaining changes"]
  C --> D["Promote destination"]
  D --> E["Application writes to destination"]
        
FIG 5 — The cutover flow at a glance

Plan the way back

Before promotion, decide what happens if the new database misbehaves. After promotion, the old source no longer receives new writes, so a rollback means either returning to a stale source or building a reverse path. Many teams keep the source untouched and read-only for a defined period, and decide in advance how long that period lasts.

“A migration is not finished when the data arrives; it is finished when the application is happily running on it.”

16Limitations and Gotchas

Every tool has edges, and knowing them in advance turns surprises into planned work.

DMS publishes known limitations for each migration path. They cover data types, object types, database sizes and behaviors during replication. The exact list differs between MySQL, PostgreSQL, SQL Server and Oracle paths, so you must read the one matching your scenario. Several patterns appear again and again.

Tables Without Primary Keys

Row-level replication needs a way to identify rows. For PostgreSQL migrations, tables without primary keys support the initial snapshot and inserts during change capture, while updates and deletes on those tables must be handled manually. Adding primary keys before migration is the cleanest fix.

Materialized Views

In PostgreSQL paths, the structure of a materialized view is migrated, but not the data inside it. You refresh it on the destination after migration.

Large Objects

Special large-object storage in PostgreSQL has particular behaviors during change capture. Test applications that rely on it.

Unsupported Editions and Engines

MariaDB is not compatible, Oracle Autonomous Database is not supported, and some older or limited SQL Server editions are excluded.

Whole-Server Scope for PostgreSQL

The PostgreSQL path migrates the entire database server, including every database in it, rather than a hand-picked single table. Plan accordingly if you only want part of the data.

Destination Version Rules

For MySQL, the destination should be the same major version or one version higher, and certain features differ for the newest destination versions.

!
Practical Advice

Run a rehearsal migration on a copy of your data early in the project. Rehearsals surface limitation issues while you still have time to fix them, not on cutover night.

17Understanding the Cost

The pricing model is simple in principle, but the total bill includes more than the DMS line.

For homogeneous migrations into Cloud SQL or AlloyDB for PostgreSQL, Google offers DMS at no additional charge. You still pay for the destination database itself and for related resources such as storage or network. For heterogeneous migrations, pricing is based on gigabytes processed, split into two parts: the backfill of existing data and the change data capture of ongoing changes.

Google’s pricing documentation describes a monthly free allowance for backfill and then a per-gigabyte rate above it, and rates vary by region and volume tier. Because prices are updated over time, always confirm current numbers on the official pricing page and use the pricing calculator for your region.

Cost ItemApplies ToNotes
DMS service feeHeterogeneous migrationsCharged by volume for backfill and change capture
DMS service feeNative homogeneous migrationsNo additional charge
Destination instanceAll migrationsNormal Cloud SQL or AlloyDB pricing, including storage
NetworkingOftenInterconnect, VPN, tunnel VMs and data transfer can add cost
Encryption keys storageIf using customer-managed keysRelated key and storage services are billed separately
People and testing timeAlwaysUsually the largest cost in a heterogeneous project
i
Cost Habit

Do not leave migration jobs running for months out of forgetfulness. Continuous jobs with change capture accumulate usage, so promote or delete them once cutover is done.

18Design Patterns and Anti-Patterns

Teams that succeed repeat a few habits, and teams that struggle repeat a few mistakes.

Helpful patterns

Pattern

Rehearse First

Run the full process on a non-production copy, including cutover, before touching production.

Pattern

Migrate, Then Modernize

Lift and shift first, then refactor, so that each problem has a single clear cause.

Pattern

Read-Only Verification Window

Run reports and read-heavy tests against the destination while replication continues, before switching writes.

Pattern

Runbook Cutover

Write a numbered cutover checklist with owners and times, and practice it.

Anti-patterns to avoid

ANTI-PATTERN-01 Avoid
Problem

The team starts the migration job in production with no rehearsal and no rollback plan.

Why It’s Harmful

Any surprise, such as an unsupported data type or a network rule, appears at the worst possible time, with business pressure rising and no tested response.

Correct Approach

Rehearse on a copy, document limitations found, define rollback conditions and agree who decides to proceed or stop.

ANTI-PATTERN-02 Avoid
Problem

An under-sized destination is chosen to save money during the migration.

Why It’s Harmful

The destination cannot apply changes as fast as they arrive, so lag grows, the cutover window stretches and the saving disappears.

Correct Approach

Size generously during migration and scale down afterwards based on real production metrics.

ANTI-PATTERN-03 Avoid
Problem

The team treats the converted schema in a cross-engine migration as finished once it compiles.

Why It’s Harmful

Behavior differences between engines cause silent bugs, such as different handling of empty values or rounding, that only show up in production.

Correct Approach

Run complete functional and performance tests on the converted database with realistic data.

19Best Practices and Common Mistakes

A short checklist of habits that experienced migration teams share.

Best Practices

  • Read the supported databases and known limitations pages for your exact path
  • Add primary keys to tables that lack them before migrating
  • Choose private connectivity for production and sensitive data
  • Test connection profiles before starting any job
  • Scale the destination up for the migration and down afterward
  • Validate data with counts, checksums and business totals
  • Write and rehearse a cutover runbook
  • Clean up profiles, jobs, tunnels and firewall rules afterward

Common Mistakes

  • Assuming every object and user is migrated automatically
  • Changing the schema on the source during replication
  • Starting cutover before lag is near zero
  • Ignoring application and driver compatibility with the new engine
  • Leaving temporary public access open
  • Forgetting to plan for rollback
  • Picking a destination region without checking latency to users

Ownership and communication

Migrations touch many teams: database administrators, application developers, network engineers, security staff and business owners. Name one person who owns the overall plan and keep a shared checklist. Announce the cutover window early, and tell support teams what to watch for afterward.

i
After the Move

Keep an eye on performance for the first weeks. Query plans, caching and index usage can behave differently in a new environment, and small tuning changes often deliver large improvements.

20Real-World Scenarios

These typical situations show how the ideas fit together in practice.

Retail Company Leaving a Data Center

An online store runs MySQL in its own server room. It chooses a continuous homogeneous migration into Cloud SQL for MySQL over a VPN and a private network path. It rehearses twice, then cuts over during a quiet night with a few minutes of read-only mode.

Bank Replacing Commercial Licensing

A financial services team moves an Oracle database to AlloyDB for PostgreSQL. It spends months in a conversion workspace fixing procedures, runs both systems in parallel for validation and cuts over only after audit sign-off.

Startup Moving from Another Cloud

A small team on Amazon RDS for PostgreSQL wants to consolidate on Google Cloud. It uses a continuous migration to Cloud SQL for PostgreSQL, adds primary keys to a few legacy tables first, and finishes the whole move in a weekend.

Software Vendor Moving Customer Databases

A vendor migrates dozens of separate SQL Server databases, one customer at a time. It builds a repeatable runbook and reuses the same checks for each, so every move becomes faster than the last.

Proof of Concept for a Large Program

An enterprise runs a one-time migration of a small test database to measure copy speed, compatibility problems and estimated costs before approving a larger program.

The common thread in all of these is preparation. Success depends less on clever tooling and more on clear scoping, honest testing and a calm, practiced cutover.

21How DMS Compares with Other Migration Services

Every major cloud has its own migration service, and each is built around its own destination.

Amazon Web Services and Microsoft Azure also offer database migration services, and all three promise low-downtime replication into their own platforms. They differ in supported engines, pricing models and tooling. A simple way to choose is to look at where you want to land: the best migration service is usually the one native to your destination.

AspectGoogle Cloud DMSOther Cloud Migration Services
Destination focusCloud SQL and AlloyDBTheir own cloud’s databases
InfrastructureFully managed, no instance to sizeVaries by service and tier
Homogeneous pricingNo additional DMS charge for native pathsDifferent models, often compute-based
Cross-engine helpConversion workspaces with Gemini assistanceSeparate schema conversion tools in some clouds
i
When DMS Is Not the Right Tool

If your destination is not Cloud SQL or AlloyDB, such as BigQuery, Spanner or a self-managed database on virtual machines, you will need other tools like Datastream, export and import workflows or partner products.

22Planning a Migration Project from Start to Finish

The tool is only one piece; a good project plan decides whether the migration feels calm or chaotic.

Many beginners open the console and start creating profiles on day one. Experienced teams do the opposite. They spend the first weeks understanding what they own, what depends on what, and what could go wrong. DMS makes the technical copy easier, but it cannot tell you which databases matter most, who must approve the cutover, or which application quietly reads a table nobody remembers.

Start with an inventory

List every database you intend to move. For each one, record the engine and version, the approximate size, the daily growth, the peak write rate, the applications that use it and the people who own it. This list is your map. Without it, surprises appear late, such as a reporting tool that connects directly to the old server and breaks the moment the address changes.

Group databases into waves

If you have many databases, do not move them all at once. Group them into waves. Put small, low-risk systems in the first wave so the team learns the process cheaply. Put the most critical and complex systems in later waves, after the runbook has been tested several times. Each wave teaches you something that makes the next wave safer.

1

Assess

Inventory databases, check engine and version against the supported list, and identify unsupported features early.

2

Plan

Choose migration type, destination service, region, network method, waves and a target date with a buffer.

3

Prepare

Enable APIs, grant roles, configure the source, build the destination and open the network path.

4

Rehearse

Run the entire migration on a copy and measure copy speed, lag behavior and application compatibility.

5

Migrate and Cut Over

Run the production job, validate, then follow the cutover runbook.

6

Optimize and Close

Tune the new database, remove temporary resources and record lessons learned.

Define who does what

RoleMain Responsibility
Project ownerOwns the plan, schedule and go or no-go decision
Database administratorPrepares the source, builds the destination, watches lag and runs validation
Application developersFix compatibility issues, update connection settings and run functional tests
Network engineersBuild and test connectivity, firewalls, VPN or Interconnect
Security and complianceApprove region, encryption, access and data handling
Quality assuranceExecute test plans before and after cutover
Business ownerApproves the downtime window and signs off on results

Agree on go or no-go criteria

Before the cutover night, write down exactly what must be true to proceed. For example: replication lag stays under a defined number of seconds, validation reports show no unexplained differences, test teams have signed off, and rollback steps have been reviewed. Written criteria stop emotional decisions at midnight.

i
Add a Buffer

Whatever date you choose, add schedule buffer for surprises. Network approvals, firewall tickets and security reviews in large companies often take longer than the actual data copy.

23Sizing the Destination and Estimating Migration Time

Two questions arrive in every planning meeting: how big should the new database be, and how long will the copy take?

Neither question has a single formula, because the answer depends on your own data and your own network. What you can do is understand the factors that matter, measure them in a rehearsal and then decide with evidence instead of guesses.

Simple Analogy

Filling a swimming pool through a garden hose is slow no matter how big the pool is, and a wide hose into a tiny bucket overflows. Migration speed is limited by the narrowest part of the chain: the source’s ability to read, the network pipe, or the destination’s ability to write.

flowchart LR
  A["Source read speed"] --> B["Network bandwidth and latency"]
  B --> C["Migration service processing"]
  C --> D["Destination write speed"]
  D --> E["Index building and storage"]
        
FIG 6 — Any stage in the chain can become the bottleneck

Factors that influence duration

FactorWhy It MattersWhat You Can Do
Total data sizeMore data means a longer full dumpMeasure real size including indexes and large objects
Number and size of tablesOne enormous table can dominate the timelineIdentify the largest tables during assessment
Network bandwidthA thin or shared link slows everythingUse dedicated connectivity for large moves
Source loadA busy source reads slowly and may sufferSchedule heavy phases off-peak where possible
Destination sizeSmall CPU or memory slows loading and change replayScale up during migration
Change rateHeavy writes enlarge the backlogWatch lag and cut over during quieter periods
Indexes and constraintsThey add work for every loaded rowFollow the documented behavior for your path

Sizing the destination

A sensible habit is to size the destination for the busiest moment of the migration, not for the average day. During the full dump the destination is loading data quickly. During change capture it must replay changes at least as fast as they arrive. If either role is starved of resources, lag grows. After cutover, you can compare real production metrics and shrink the instance if it is oversized.

Storage planning

Storage needs include the migrated data, indexes, temporary files and logs. A common beginner surprise is that the destination uses more space than the source reports, especially when the engines store data differently or when many indexes are created. Leave generous headroom, and enable automatic storage growth where it is available so a long migration does not stop on a full disk.

i
Use Rehearsal Numbers

Time the rehearsal full dump, then scale your estimate using the ratio of production size to rehearsal size. Add a safety margin, because production networks are rarely quieter than test networks.

!
Do Not Trust Marketing Numbers

Any speed quoted by a vendor or a blog is measured on someone else’s hardware. Your own rehearsal is the only number that truly applies to you.

24Inside the MySQL Path

The MySQL to Cloud SQL for MySQL route is the classic homogeneous migration, and its ideas repeat in other paths.

MySQL records every change to data in a special file called the binary log. Think of it as a diary that lists every insert, update and delete in the order it happened. For continuous migration, DMS relies on this diary. After the full dump, it reads the diary from the starting position and replays each entry on the destination.

Simple Analogy

If the full dump is a photograph of a busy street, the binary log is a video recording that started at the exact instant the photograph was taken. Playing the video forward brings the photograph up to date.

What the source needs

Requirement

Binary Logging Enabled

The source must write a binary log in the format DMS expects, usually row-based, so each changed row is captured exactly.

Requirement

Log Retention

Logs must be kept long enough for the full dump to finish, otherwise the starting position disappears before DMS needs it.

Requirement

Migration User

A dedicated account with the privileges needed to read data and replicate changes, and nothing more.

Requirement

Network Access

The destination must be able to reach the source through one of the supported connectivity methods.

Managed sources need parameter changes

If the source is Amazon RDS or Aurora, you cannot edit server files directly. Instead you change settings through the provider’s parameter configuration and sometimes reboot the instance. Plan this carefully, because a reboot on a busy production database is itself an outage.

Version and feature considerations

For MySQL, the destination should be the same major version as the source or one version higher. Moving to a much newer version in one jump, or to an earlier version, is not recommended. The newest destination versions can come with extra limitations, for instance around certain backup-file based loading methods, so read the notes for your chosen version.

Character sets, collations and time zone settings deserve a quick check. If the old server used unusual settings, text comparison or sorting could differ on the destination. Compare settings early and test a sample of text-heavy queries.

Initial load choices

DMS supports different ways of performing the initial load for MySQL, including a logical approach that reads data through database connections and, in some scenarios, an approach that works from physical backup files. Each has its own prerequisites and limitations, and the choice influences speed and compatibility. For very large databases, physical approaches can be faster, but they require more preparation.

!
Do Not Forget

Database accounts, grants and some server-level settings are not always carried across automatically. Make a list of application users and verify their access on the destination before cutover.

25Inside the PostgreSQL Path

PostgreSQL uses a different change-tracking idea, and its details explain several of the limitations you saw earlier.

PostgreSQL writes every change first to a write-ahead log, a durable journal that exists mainly for crash recovery. Logical replication takes information from that journal and presents it as row-level changes that another system can consume. DMS uses this approach to follow a PostgreSQL source during continuous migration.

Simple Analogy

The write-ahead log is like a shop’s receipt roll. Logical replication reads the roll and tells the second shop exactly which items were sold, in order, so the second shop can update its own shelves.

Why primary keys matter so much

To change a row on the destination, the system must say which row. A primary key is the unique name tag of a row. When a table has no primary key, the system cannot reliably point to a single row for an update or delete. That is why the documentation notes that tables without primary keys support the initial snapshot and inserts, while updates and deletes need manual handling.

Whole-server migration

The PostgreSQL path moves the entire server, meaning every database within it. This is a different mindset from picking individual tables. Before you start, review all databases on the source and decide whether any should be cleaned up, archived or excluded through other means.

Things that are not carried automatically

Item

Structural Changes

Logical replication generally replays data changes, not schema changes. Avoid creating, altering or dropping objects on the source during migration.

Item

Sequences

Counters that generate identifiers must be checked after migration so new records do not collide with existing ones.

Item

Materialized View Contents

Only the definition moves, so refresh the view on the destination.

Item

Extensions

Make sure every extension your application needs is available on the destination service and version.

Item

Roles and Permissions

Review database roles and grants, because managed services restrict some powerful privileges.

Item

Large Objects

Applications that store files inside the database through large-object features need extra testing.

Choosing between Cloud SQL and AlloyDB

Both are PostgreSQL-compatible and both are supported destinations. Cloud SQL is the familiar, general-purpose managed service. AlloyDB is aimed at demanding workloads that need higher performance and scale. Because DMS supports both, you can choose based on workload needs and budget rather than on tool limitations. Networking differs slightly, since AlloyDB uses private services access, so review the connectivity rules for your choice.

i
Primary Key Audit

A quick audit listing every table without a primary key is one of the most valuable preparation tasks for PostgreSQL migrations. Fixing those tables early removes a whole class of cutover surprises.

26Inside the Oracle to PostgreSQL Path

This is the most demanding scenario because two things change at once: the engine and the dialect of your code.

An Oracle environment often contains decades of accumulated logic. Tables are only the beginning. Business rules live in packages, triggers and procedures written in Oracle’s own procedural language. Moving to PostgreSQL means translating that logic, not just the data. This is why the conversion workspace is central, and why timelines for this path are longer.

How change tracking works here

Oracle tracks changes using a system change number, a counter that increases with every committed transaction. DMS uses information from Oracle’s log files to follow changes after the initial load. For this to work, the source must be configured to keep the needed logging information. If you perform the full load yourself outside DMS, you can supply a starting change number so replication begins at the correct point.

Typical translation challenges

Data Types

Oracle’s flexible numeric type, its date type that also stores time, and its character types do not map one-to-one onto PostgreSQL types. Choosing the right target type affects precision, storage and performance.

Empty Strings and Nulls

Oracle treats an empty text value as null, while PostgreSQL treats them as different things. Application logic that depends on this can behave differently after migration.

Procedural Code

Packages, collections and exception handling constructs do not have direct equivalents. They are rewritten into PostgreSQL functions and procedures, sometimes with a different structure.

Hierarchical Queries and Proprietary Syntax

Oracle-specific query features, join styles and built-in functions must be rewritten in standard-compatible or PostgreSQL-specific forms.

Sequences, Synonyms and Schemas

Oracle’s organization of users and schemas differs from PostgreSQL’s, so naming and permissions must be redesigned carefully.

Using Gemini assistance wisely

DMS conversion workspaces include Gemini-assisted workflows that can explain what a piece of code does and suggest fixes for conversion problems. This can save time on unfamiliar legacy code. However, treat suggestions as drafts from a helpful colleague, not as verified answers. Every converted object still needs review and testing by someone who understands the business rule behind it.

flowchart TD
  A["Oracle source objects"] --> B["Conversion workspace"]
  B --> C["Automatic conversion"]
  C --> D{"Issues found"}
  D -->|"Yes"| E["Review and fix, optionally with Gemini help"]
  E --> B
  D -->|"No"| F["Apply schema to destination"]
  F --> G["Migration job loads data and follows changes"]
        
FIG 7 — The convert, fix and apply loop for Oracle migrations
!
Scope Honestly

Teams often underestimate procedural code. Count the lines and objects in packages and procedures during assessment, because that volume predicts the real effort better than database size does.

27Testing and Validation Strategy

Testing is how you turn hope into confidence.

A successful migration job proves only that data moved. It does not prove that the data is right, that your application works, or that performance is acceptable. A complete strategy tests several different things, and each answers a different question.

Test 1

Structure Check

Are all expected tables, indexes, constraints, views and routines present on the destination?

Test 2

Data Reconciliation

Do row counts, sums and sampled records match between source and destination?

Test 3

Functional Testing

Do the application’s main user journeys work against the new database?

Test 4

Performance Testing

Do the busiest and slowest queries run as fast as before, or faster, under realistic load?

Test 5

Operational Testing

Do backups, restores, failover and monitoring alerts work as designed?

Test 6

Security Testing

Are accounts, permissions, encryption and network rules correct?

Reconciliation in practice

Start with simple counts per table. Then compare aggregated business values such as total order amount per day or customer count per region. For critical tables, compare checksums or sample specific records in full. Remember that a continuous migration is a moving target, so run comparisons when lag is minimal, or compare data older than a safe cutoff time.

Parallel run for critical systems

For high-stakes systems, some teams run a parallel period. The application continues to use the source, while a copy of its traffic or its reports are run against the destination and the results are compared. Differences point to conversion bugs or compatibility problems without any customer impact.

flowchart LR
  A["Rehearsal migration"] --> B["Structure and data checks"]
  B --> C["Functional and performance tests"]
  C --> D{"All criteria met"}
  D -->|"No"| E["Fix and repeat"]
  E --> A
  D -->|"Yes"| F["Approve production cutover"]
        
FIG 8 — Test until the written criteria are satisfied
i
Keep Evidence

Save the results of every validation step. Auditors, managers and your future self will want proof that the migration was checked, and good evidence also speeds up any investigation if a problem appears later.

28Troubleshooting Common Problems

Problems are normal, and most of them fall into a few families.

When a job misbehaves, resist the urge to change many things at once. Work from the outside in: first the network, then permissions, then source configuration, then destination health, and finally data-specific issues. Each check is cheap and rules out a whole category.

The Connection Test Fails

Usually a network or credential issue. Check firewall rules, allowlisted addresses, tunnel health, the port and the username. Confirm that the correct connectivity method was chosen for where the source actually lives.

The Job Fails Right After Starting

Often caused by missing source configuration, such as change logging not enabled, or by insufficient privileges for the migration user. Read the error message carefully and compare it with the prerequisites for your path.

Replication Lag Keeps Growing

Look at destination CPU, memory and disk, check whether the source write volume spiked, and check network throughput. Scaling up the destination often solves it quickly.

The Destination Runs Out of Storage

Migrated data plus indexes can exceed estimates. Increase storage, enable automatic growth and review whether temporary files or logs are consuming space.

The Job Stops After a Source Restart or Failover

Source maintenance can interrupt replication or remove needed logs. Check whether log retention was long enough, and whether the job can resume or must be restarted.

Rows or Objects Are Missing

Compare against the known limitations for your path. Items such as tables without primary keys or particular object types may need manual handling.

Text Looks Wrong After Migration

Suspect character set or collation differences. Compare settings between source and destination and test with accented or non-Latin text.

Escalating effectively

If you contact support, gather the migration job name, region, project, timestamps, the exact error text and a description of what changed recently. Good evidence shortens the conversation dramatically.

i
Change One Thing at a Time

Whenever you adjust a setting, note it and observe the effect. Changing five settings together leaves you unsure which one helped or hurt.

29After the Cutover: Operations and Optimization

Promotion is not the end; the first weeks on the new database decide whether the project feels like a success.

Once the application runs on the destination, a new phase begins. You are no longer a migration team; you are the operators of a new production system. This phase includes tuning, protection and cleaning up everything that was only needed temporarily.

1

Watch Closely for Two Weeks

Track errors, slow queries, connection counts, CPU, memory and storage. Compare against your pre-migration baseline.

2

Refresh Statistics and Tune

New databases need fresh optimizer statistics. Review slow queries, add or adjust indexes and fix any converted code that performs poorly.

3

Turn On Protection

Configure automated backups, point-in-time recovery, high availability and maintenance windows to match your reliability goals.

4

Right-Size the Instance

If you scaled up for the migration, reduce compute and memory to match real demand, keeping a comfortable margin.

5

Clean Up Temporary Resources

Delete migration jobs and profiles you no longer need, shut down tunnel VMs, close temporary firewall rules and remove the migration user from the source.

6

Retire the Source Safely

After the agreed safety period, take a final backup, archive it per policy and decommission the old database.

Capture lessons learned

Hold a short review soon after the project. Record what went well, what surprised you, how long each phase really took and which checks caught real problems. Store the runbook and these notes where the next team can find them. If you have more waves of databases to migrate, this knowledge makes them cheaper and safer.

Take advantage of the new platform

Moving the database is a doorway, not the destination. Once stable, explore capabilities that were hard on the old platform: easier read replicas, integrated monitoring, stronger identity controls, automated backups across regions and tighter links to analytics services. Introduce these gradually, one change at a time, just as you did with the migration itself.

!
Do Not Rush Decommissioning

Deleting the old database the same day as cutover removes your safety net. Keep it, protected and read-only, until the business agrees the new system is stable.

30Scaling Up: Migrating Many Databases with a Repeatable Process

Moving one database is a project, but moving fifty is a factory, and factories need standard procedures.

Large organizations rarely have a single database. They have dozens or hundreds, owned by different teams, running different engines and serving applications of very different importance. If every migration is handled as a one-off craft project, the program becomes slow, expensive and inconsistent. The better approach is to build a repeatable process once and then run many databases through it.

Simple Analogy

A single home move can be organized in an afternoon with a few friends. A company relocating an entire town needs standard boxes, labeled trucks, a schedule board and a team that has done it before. The tools are the same, but the discipline is different.

Build a standard runbook

A runbook is a written, step-by-step procedure that anyone on the team can follow. It lists the preparation checks, the settings to choose, the validation steps, the cutover sequence and the rollback conditions. After each wave, improve the runbook with what you learned. Over time it becomes a trusted document rather than a pile of personal memories.

Use consistent naming and labels

When many connection profiles and migration jobs exist in the same project, names matter. Agree on a naming pattern that shows the application, the environment and the wave, so that anyone can see at a glance what a job belongs to. Labels and tags also help with cost tracking and with finding leftovers during cleanup.

Practice

Central Tracking Board

Keep one shared view showing each database, its wave, its owner, its status and its planned cutover date.

Practice

Templates and Checklists

Reuse the same preparation checklist, test plan and cutover sheet for each database, adjusting only what differs.

Practice

Separation of Duties

Let one group prepare and run migrations while another approves promotion, so no single person can make an irreversible change alone.

Practice

Risk Register

Record known risks such as unsupported features, tight windows or fragile networks, along with an owner and a plan for each.

Practice

Automation Through APIs

DMS offers an application programming interface and command-line tools, so repeated steps such as creating profiles or checking status can be scripted by your platform team.

Practice

Wave Retrospectives

After every wave, hold a short review and feed the findings back into the runbook and the schedule.

flowchart LR
  A["Inventory and classify"] --> B["Plan waves"]
  B --> C["Run standard process"]
  C --> D["Retrospective"]
  D --> E["Improve runbook"]
  E --> C
        
FIG 9 — A continuous improvement loop across migration waves

Governance and compliance

At scale, rules matter. Decide which regions are allowed, which connectivity methods are approved, how encryption keys are managed and how long temporary access can remain open. Organization policies and Identity and Access Management groups help enforce these decisions automatically instead of relying on memory. Keep an audit trail of who started, changed and promoted each job, because regulated industries often must show it.

Watch the money across the program

Costs add up when many databases run through heterogeneous paths or when many destination instances are scaled up at once. Track spending by project or label, set budget alerts and make sure finished migration resources are removed promptly. Reviewing costs after each wave prevents unpleasant surprises at the end of the program.

ANTI-PATTERN-04 Avoid
Problem

Each team invents its own migration approach, naming style and checklist, with no shared documentation.

Why It’s Harmful

Knowledge stays locked in a few heads, mistakes repeat from team to team, and leaders cannot see program status or risk.

Correct Approach

Create a shared runbook, naming standard and tracking board owned by a small platform or migration team, and improve it after every wave.

i
Start Small, Standardize Early

Your first wave is the best time to create templates, because the lessons are fresh and the stakes are low. Every later wave then benefits from the work.

31Frequently Asked Questions

Q1Does my application have to stop during a migration?

Not during the copy. With a continuous migration your application keeps running on the source. You only need a short pause for the final cutover, when you stop writes, drain the last changes and promote.

Q2Is DMS free?

For native homogeneous migrations into Cloud SQL or AlloyDB for PostgreSQL there is no additional DMS charge, although you pay for the destination. Heterogeneous migrations are billed by data volume. Always check the official pricing page for current figures.

Q3Can I migrate to a database outside Google Cloud?

No. DMS moves data into Google Cloud destinations. It is not intended for moving data out or between other platforms.

Q4What is the difference between a connection profile and a migration job?

A connection profile describes how to reach one database. A migration job connects a source profile to a destination, chooses the migration type and runs the process.

Q5Do I need a conversion workspace for MySQL to Cloud SQL for MySQL?

No. Conversion workspaces are for cross-engine migrations such as Oracle to PostgreSQL. Same-engine migrations carry the structure over directly.

Q6What does promotion do?

Promotion stops replication and turns the destination into an independent, writable database. After that, the source no longer feeds it.

Q7What if replication lag keeps growing?

Check whether the destination is under-sized, whether the source is receiving unusual write volume, and whether network bandwidth is a bottleneck. Scaling the destination up is often the quickest fix.

Q8Is private networking required?

It is not always required, but it is strongly advised for production and sensitive data. Public IP allowlists are mainly suited to quick proofs of concept.

Q9Can I migrate only a few tables?

It depends on the migration path. Some paths let you select what to include, while the PostgreSQL path migrates the whole server. Check the scenario documentation for your path.

Q10Can I go back to the source after promotion?

Not automatically. After promotion the source stops receiving changes, so plan your rollback approach before cutover and decide how long to keep the source available.

Q11How do I know the data is complete?

Compare row counts, checksums and business totals, and review the completeness guidance for your path, including any items that need manual migration.

Q12Will the migration slow down my production source database?

Reading the full dump and following the change log adds load to the source. For most systems the effect is modest, but a very busy or fragile server can feel it. Test during rehearsal, watch source CPU, memory and input and output activity, and schedule the heaviest phase for quieter hours when you can.

Q13How long should I keep a continuous migration job running before cutover?

There is no fixed rule. Some teams cut over within a day, while others keep replication running for weeks so testers can validate against fresh data. Remember that a running job consumes resources and, for heterogeneous paths, accumulates usage charges, so keep the period purposeful.

Q14Can I run the migration again if something goes wrong?

Yes, before promotion you can usually discard the destination data and start over, which is exactly why rehearsals are cheap. After promotion the destination holds live business data, so a restart would need careful planning to avoid losing new records.

Q15Do I need to change my application code?

For homogeneous migrations you usually only change the connection address and credentials, although you should still test drivers and settings. For heterogeneous migrations expect code changes, especially where queries use features specific to the old engine.

Q16What is the safest way to start learning DMS?

Begin with a small test database using a homogeneous path, such as MySQL or PostgreSQL to Cloud SQL, with a simple connectivity method. Run a continuous job, watch lag, promote the destination and then clean everything up. That single exercise teaches nearly every concept in this guide.

Q17Is DMS suitable for very large databases?

It is designed for production-scale migrations, but very large databases need careful planning of network bandwidth, destination size and the initial load method. Rehearse with realistic data volumes and use private, high-bandwidth connectivity for the best results.

Q18Who should be allowed to promote a migration job?

Promotion is an important, hard-to-reverse step, so restrict it to a small group of trusted operators through Identity and Access Management, and require the written go or no-go criteria to be met before anyone presses the button.

Q19What should I do if the documentation and this guide disagree?

Trust the official documentation. Supported versions, limitations, pricing and console behavior change over time, and an article can only be correct as of the day it was written. Use guides like this one to understand concepts, and use the official pages to confirm details.

Q20Where does the migration actually run?

Google runs and manages the migration machinery for you, in the region you choose. You do not see or maintain those servers. What you manage are the source, the destination, the network path and the configuration that connects them.

32Summary and Key Takeaways

Google Cloud Database Migration Service turns a risky, manual project into a guided, managed process. It copies your existing data, follows every new change, and lets you switch over in a brief, well-planned moment. The technology is only half of the story; the other half is preparation, testing and communication. If you pick the right migration type, build a safe network path, validate your data and rehearse your cutover, you can move even large, busy databases with confidence.

Key Takeaways

  • DMS is a managed bridge into Google Cloud — it moves databases into Cloud SQL and AlloyDB without you running migration servers.
  • Know your migration type — homogeneous moves keep the engine and are simpler, while heterogeneous moves need conversion workspaces and far more testing.
  • Continuous beats one-time for busy systems — full dump plus change data capture keeps downtime to a short cutover window.
  • Connectivity is a design decision — choose private paths for production, and treat IP allowlists as a short-term convenience.
  • Watch lag and validate data — monitoring shows health, while counts, checksums and business checks prove correctness.
  • Read limitations early — tables without primary keys, materialized views and unsupported editions are classic surprises.
  • Rehearse the cutover and plan the rollback — a migration is finished only when the application runs happily on the new database.