How to set up Azure CLI for migration service in Azure Database for PostgreSQL - Flexible Server
The Azure CLI is a set of commands used across Azure services to create and manage resources. It provides the same capabilities as the Azure portal but is optimized for users who prefer to work within a command-line environment. To begin migrating using Azure CLI, you need to install the Azure CLI on your local machine.
Prerequisites
Install Azure CLI: Depending on your operating system, download and install the Azure CLI. It's available for Windows, macOS, and Linux.
Azure CLI Installation Guide: Follow the instructions provided in the official Azure documentation to install the Azure CLI - How to install the Azure CLI.
Check Azure CLI Version: Ensure that your Azure CLI version is at least 2.56.0 or higher, as this is required for the migration service. Use the command
az --version
to check your current version.Sign in to Azure: After installation, execute
az login
to authenticate. This opens your default browser to complete the sign-in process with your Azure credentials.
These steps prepare your environment for using the Azure CLI to manage the migration service in Azure Database for PostgreSQL effectively. Always refer to the latest Azure documentation for any updates or changes to the installation process.
Set up CLI commands for the migration service
All the CLI commands start with az postgres flexible-server migration
. There are also help statements provided to assist you in understanding the various options and framing the correct syntax for the CLI commands.
Once the CLI is installed, open the command prompt and log into the Azure account using the following command.
az login
Migrate commands
The migration service provides the following commands to help you migrate your PostgreSQL instances to Azure Database for PostgreSQL - Flexible Server.
Help command
The --help
command in Azure CLI is a valuable option that provides detailed documentation about the commands and their subcommands, including the required verbs for operations. The --help
command displays the necessary commands and their associated actions for migration service in Azure Database for PostgreSQL.
az postgres flexible-server migration --help
The output guides you through the necessary steps and parameters required to manage your database migrations effectively using the Azure CLI.
Create command
The az postgres flexible-server migration create
command in Azure CLI is used to initiate a new migration workflow. It facilitates the migration of databases from a source PostgreSQL instance to a target Azure Database for PostgreSQL - Flexible Server instance. This command sets up the necessary parameters and configurations to ensure a smooth and efficient migration process.
For more information, see az postgres flexible-server migration create
List command
The az postgres flexible-server migration list
command is used to list all the migration attempts made to an Azure Database for PostgreSQL target. This command provides an overview of the migrations that were initiated, allowing you to track the status and details of each migration attempt.
For more information, see az postgres flexible-server migration list
Show command
The az postgres flexible-server migration show
command helps you monitor ongoing migrations and gives the current state and substate of the migration. These details include information on the current state and substate of the migration.
For more information, see az postgres flexible-server migration show
Some possible migration states:
Migration states
State | Description |
---|---|
InProgress | The migration infrastructure setup is underway, or the actual data migration is in progress. |
Canceled | The migration is canceled or deleted. |
Failed | The migration failed. |
Validation Failed | The validation failed. |
Succeeded | The migration succeeded and is complete. |
WaitingForUserAction | Applicable only for online migration. Waiting for user action to perform cutover. |
Migration substates
Substate | Description |
---|---|
PerformingPreRequisiteSteps | Infrastructure setup is underway for data migration. |
Validation in Progress | Validation is in progress. |
MigratingData | Data migration is in progress. |
CompletingMigration | Migration is in the final stages of completion. |
Completed | Migration is complete. |
Failed | Migration failed. |
Validation substates
Substate | Description |
---|---|
Failed | Validation failed. |
Succeeded | Validation is successful. |
Warning | Validation is in warning. |
Update command
The az postgres flexible-server migration update
command is used to manage the migration process to an Azure Database for PostgreSQL Flexible Server. Specifically, it can be used to:
Perform a cutover: This finalizes the migration process by switching the database traffic from the source server to the target Flexible Server.
- After the base data migration is complete, the migration task moves to the
WaitingForCutoverTrigger
substate. In this state, users can trigger the cutover from the portal by selecting the migration name in the migration grid or through the CLI. - Before initiating cutover, it's important to ensure that:
- Writes to the source are stopped
latency
value decreases to 0 or close to 0latency
value indicates when the target last synced with the source. At this point, writes to the source can be stopped and cutover initiated. In case there's heavy traffic at the source, you should stop writes first so thatLatency
can come close to 0, and then a cutover is initiated.- The Cutover operation applies all pending changes from the Source to the Target and completes the migration. If you trigger a "Cutover" even with nonzero
Latency
, the replication stops until that point in time. All the data on source until the cutover point is then applied on the target. Say a latency was 15 minutes at the cutover point, so all the changed data in the last 15 minutes applies to the target.
- After the base data migration is complete, the migration task moves to the
Cancel the migration: If needed, this option allows you to stop the migration process.
Setup logical replication at the source: This is useful when the source server is an Azure Database for PostgreSQL - Single Server, as it prepares the server for data replication to the Flexible Server.
For more information, see az postgres flexible-server migration update
Summary
The following table summarizes the parameters used by the migration commands:
Parameter | Relevant commands | Description |
---|---|---|
subscription |
create, list, show, update | Subscription ID of PostgreSQL Flexible server |
resource-group |
create, list, show, update | Resource group of PostgreSQL Flexible server |
name |
create, list, show | Name of the PostgreSQL Flexible server |
migration-name |
create, show, update | Unique identifier to migrations attempted to Flexible Server. This field accepts only alphanumeric characters and doesn't accept any special characters except a hyphen (-). The name can't start with -, and no two migrations to a Flexible Server target can have the same name. |
filter |
list | To filter migrations, two values are supported – Active and All |
help |
create, list, show, update | Provides information about each command. |
migration-mode |
create | This is an optional parameter. Allowed Values are - offline, online. Default value: Offline. |
migration-option |
create | Allows you to perform validations before triggering a migration. Default is ValidateAndMigrate. Allowed values are - Migrate, Validate, ValidateAndMigrate. |
properties |
create | Absolute path to a JSON file that has the information about the source, target server, databases to migrate, SSL modes, defining source types |
Details of the JSON file
The az postgres flexible-server migration create
command requires a JSON file path as part of --properties
parameter, which contains configuration details for the migration, such as the source database server resource ID, admin credentials, databases to migrate, and other important settings. Following are the different properties:
Property Name | Description |
---|---|
sourceDbServerResourceId |
Source server details in the format for on-premises, virtual machines (VMs), cloud-based PostgreSQL service - <<hostname or IP address>>:<<port>>@<<username>> . If the source server is Azure Database for PostgreSQL - Single server then the resource ID is in the format - /subscriptions/<<Subscription ID>>/resourceGroups/<<Resource Group Name>>/providers/Microsoft.DBforPostgreSQL/servers/<<PostgreSQL Single Server name>> |
adminCredentials |
This parameter lists passwords for admin users for both the source server and the target PostgreSQL flexible server. These passwords help to authenticate against the source and target servers. It includes two subproperties, sourceServerPassword and targetServerPassword |
targetServerUserName |
The default value is the admin user created during the creation of the PostgreSQL target flexible server, and the password provided is used for authentication against this user. |
dbsToMigrate |
Specify the list of databases that you want to migrate to Flexible Server. You can include a maximum of eight database names at a time. Providing the list of databases in array format. |
overwriteDBsInTarget |
When set to true (default), if the target server happens to have an existing database with the same name as the one you're trying to migrate, the migration service automatically overwrites the database |
migrationRuntimeResourceId |
Required if a runtime server needs to be used for migration. The format is - /subscriptions/<<Subscription ID>>/resourceGroups/<<Resource Group Name>>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<<PostgreSQL Flexible Server name>> |
sourceDBServerFullyQualifiedDomainName |
Required only if the source is a Single server and is behind a custom DNS server, custom DNS namespaces, custom FQDN, or needs to be accessible via IP. |
targetDBServerFullyQualifiedDomainName |
Required only if the target is behind a custom DNS server, custom DNS namespaces, custom FQDN, or needs to be accessible via IP. |
sourceType |
Required parameter. Values can be - on-premises, AWS_RDS, AWS_AURORA, GCP_CloudSQL, AzureVM, PostgreSQLSingleServer |
sslMode |
SSL modes for migration. SSL mode for PostgreSQLSingleServer is VerifyFull and Prefer/Require for other source types. |
Related content
- What is the migration service in Azure Database for PostgreSQL?
- Tutorial: Migrate from Azure Database for PostgreSQL - Single Server to Flexible Server with the migration service
- Tutorial: Migrate offline from Amazon RDS for PostgreSQL to Azure Database for PostgreSQL with the migration service
- Tutorial: Migrate online from Amazon RDS for PostgreSQL to Azure Database for PostgreSQL with the migration service Preview
- Tutorial: Migrate offline from Amazon Aurora PostgreSQL to Azure Database for PostgreSQL with the migration service
- Tutorial: Migrate online from Amazon Aurora PostgreSQL to Azure Database for PostgreSQL with the migration service
- Tutorial: Migrate offline from an Azure VM or an on-premises PostgreSQL server to Azure Database for PostgreSQL with the migration service
- Tutorial: Migrate online from an Azure VM or an on-premises PostgreSQL server to Azure Database for PostgreSQL with the migration service Preview