先决条件(脱机)
在使用 Azure Database for PostgreSQL 中的迁移服务开始迁移之前,必须满足适用于脱机迁移方案的以下先决条件。
验证源版本
源 PostgreSQL 版本应该为 >= 9.5
。 如果源 PostgreSQL 版本低于 9.5
,请在迁移之前将源 PostgreSQL 版本升级到 9.5
或更高版本。
目标设置
迁移之前,必须在 Azure 中设置 Azure Database for PostgreSQL。
为 Azure Database for PostgreSQL 选择的 SKU 应与源数据库的规范相对应,以确保兼容性和足够的性能。
有关创建新 Azure Database for PostgreSQL 的详细说明,请参阅以下链接:快速入门:创建服务器。
网络设置
正确的网络设置对于确保迁移期间源和目标之间的成功连接至关重要。 以下指南可帮助你为不同的方案建立网络连接:
迁移的网络要求:
ExpressRoute/IPsec VPN/VPN 隧道:将本地/AWS 源连接到 Azure 时,可能需要设置 ExpressRoute、IPsec VPN 或 VPN 隧道,以促进安全的数据传输。
VNET 对等互连:在两个不同的 VNet 之间建立虚拟网络对等互连,以实现直接网络连接,这是在 Azure VM 与 Azure Database for PostgreSQL 之间进行迁移的先决条件。
连接方案:
下表可以帮助设置源和目标之间的网络。
Source |
目标 |
连接提示 |
公用 |
公用 |
如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。 |
专用 |
公用 |
不支持此配置;请使用 pg_dump/pg_restore 进行数据传输。 |
公用 |
专用 |
如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。 |
Private |
Private |
在源与目标之间建立 ExpressRoute、IPsec VPN、VPN 隧道或虚拟网络对等互连。 |
Private |
专用终结点 |
不支持此配置,请联系 Azure 支持。 |
其他网络注意事项:
- pg_hba.conf 配置:为了促进源与目标 PostgreSQL 实例之间的连接,必须验证并可能需要修改 pg_hba.conf 文件。 此文件包括客户端身份验证,必须配置为允许目标 PostgreSQL 连接到源。 对 pg_hba.conf 文件的更改通常需要重启源 PostgreSQL 实例才能生效。
注意
pg_hba.conf 文件位于 PostgreSQL 安装的数据目录中。 如果源数据库是本地 PostgreSQL 服务器或 Azure VM 上托管的 PostgreSQL 服务器,则应检查并配置此文件。 对于 AWS RDS 或类似托管服务上的 PostgreSQL 实例,pg_hba.conf 文件不可直接访问或适用, 而是会通过服务提供的安全性和网络访问配置来控制访问。
有关网络设置的详细信息,请访问 Azure Database for PostgreSQL 灵活服务器中的迁移服务网络指南。
扩展
扩展是可以添加到 PostgreSQL 以增强其功能的额外功能。 Azure Database for PostgreSQL 支持扩展,但必须手动启用扩展。 若要启用扩展,请执行以下步骤:
在源中使用 select 命令列出所有正在使用的扩展 - select extname,extversion from pg_extension;
在 Azure Database for PostgreSQL 的“服务器参数”页面上搜索 azure.extensions 服务器参数。 启用在 PostgreSQL 内的源中找到的扩展。
保存参数更改并重启 Azure Database for PostgreSQL 以应用新配置(如果需要)。
检查列表中是否包含以下任一扩展:
- PG_CRON
- PG_HINT_PLAN
- PG_PARTMAN_BGW
- PG_PREWARM
- PG_STAT_STATEMENTS
- PG_AUDIT
- PGLOGICAL
- WAL2JSON
如果是,请在服务器参数页面中搜索 shared_preload_libraries 参数。 此参数指示在服务器重启时预加载的扩展库集。
服务器参数
这些参数不会自动迁移到目标环境,必须手动进行配置。
在目标中禁用高可用性(可靠性)和只读副本
开始使用
如果你不熟悉 Azure,请创建一个帐户来评估产品/服务。
从 Azure CLI 安装页安装适用于你的操作系统的最新 Azure CLI。
如果已安装 Azure CLI,请使用 az version
命令检查版本。 要使用迁移 CLI 命令,版本应为 2.50.0 或更高版本。 如果低于此版本,请更新 Azure CLI 版本。
运行 az login
命令:
az login
此时会打开一个包含 Azure 登录页的浏览器窗口。 请提供你的 Azure 凭据以成功完成身份验证。 有关使用 Azure CLI 登录的其他方法,请参阅此文。
迁移 CLI 命令(脱机)
迁移工具随附了易于使用的 CLI 命令,可用于执行迁移相关的任务。 所有 CLI 命令都以 az postgres flexible-server migration
开头。 在启动迁移之前,请务必将这些扩展加入允许列表。
如需帮助了解与某个命令关联的选项以及正确的语法,可以使用 help
参数:
az postgres flexible-server migration --help
上述命令提供以下输出:
输出列出了支持的迁移命令及其操作。 让我们详细了解这些命令。
使用 Azure CLI 创建迁移
create
命令可帮助创建从源服务器到目标服务器的迁移:
az postgres flexible-server migration create -- help
上述命令提供以下结果:
它会列出所需的参数并提供用于成功创建从源服务器到目标服务器的迁移的示例语法。 下面是用于创建新迁移的 CLI 命令:
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
参数 |
说明 |
subscription |
灵活服务器目标的订阅 ID。 |
resource-group |
灵活服务器目标的资源组。 |
name |
灵活服务器目标的名称。 |
migration-name |
尝试到灵活服务器的迁移的唯一标识符。 此字段仅接受字母数字字符,不接受除连字符(- )之外的任何特殊字符。 该名称不能以 - 开头,不能有两个到灵活服务器目标的迁移同名。 |
migration-mode |
这是一个可选参数。 默认值:脱机。 脱机迁移需要在某个时间点将源数据库复制到目标服务器。 |
properties |
JSON 文件的绝对路径,其中包含有关单一服务器源的信息。 |
例如:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
create
命令中使用的 migration-name
参数可用于其他 CLI 命令,例如 update
、delete
和 show.
。在所有这些命令中,该参数可唯一标识相应操作中的迁移尝试。
最后,create
命令需要将 JSON 文件作为其 properties
参数的一部分传递。
JSON 的结构为:
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
采用 JSON 文件格式的 create
参数如下所示:
参数 |
类型 |
描述 |
sourceDbServerResourceId |
必需 |
此参数是单一服务器源的资源 ID,它是必需的。 |
adminCredentials |
必需 |
此参数列出单一服务器和灵活服务器目标的管理员用户的密码。 这些密码有助于对源服务器和目标服务器进行身份验证。 |
sourceServerUserName |
必须 |
默认值是在创建单一服务器期间创建的管理员用户,所提供的密码将用于对此用户进行身份验证。 如果使用的不是默认用户,则此参数是用于执行迁移的源服务器上的用户或角色。 此用户应对迁移中涉及的数据库对象拥有必要的特权和所有权,并且应是 azure_pg_admin 角色的成员。 |
targetServerUserName |
必须 |
默认值是在创建灵活服务器期间创建的管理员用户,所提供的密码将用于对此用户进行身份验证。 如果未使用默认用户,则此参数是用于执行迁移的目标服务器上的用户或角色。 此用户应是 azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables 角色的成员,并且应具有创建角色、创建 DB 属性。 |
dbsToMigrate |
必须 |
指定要迁移到灵活服务器的数据库的列表。 仅迁移用户数据库。 不会迁移系统数据库或模板数据库(如 template0、template1)。 |
overwriteDbsInTarget |
必须 |
如果设置为 true,且目标服务器的现有数据库恰好与要迁移的数据库同名,则迁移服务会自动覆盖该数据库。 |
SetupLogicalReplicationOnSourceDBIfNeeded |
可选 |
通过将此属性设置为 true ,可以在源服务器上自动启用逻辑复制。 对服务器设置进行的此项更改需要重启服务器,这会导致两到三分钟的故障时间。 |
SourceDBServerFullyQualifiedDomainName |
可选 |
将自定义 DNS 服务器用于虚拟网络的名称解析时使用该参数。 根据自定义 DNS 服务器为此属性提供单一服务器的 FQDN。 |
TargetDBServerFullyQualifiedDomainName |
可选 |
将自定义 DNS 服务器用于虚拟网络内部的名称解析时使用该参数。 根据自定义 DNS 服务器提供灵活服务器目标的 FQDN。 仅当为名称解析使用自定义 DNS 服务器而不是 Azure 提供的 DNS 时(这种情况极少见),才应包含 SourceDBServerFullyQualifiedDomainName 和 TargetDBServerFullyQualifiedDomainName 作为 JSON 的一部分。 否则,请勿在 JSON 文件中包括这些参数。 |
请注意命令响应的以下要点:
- 触发
create
命令后,迁移将会进入 InProgress
状态和 PerformingPreRequisiteSteps
子状态。 迁移工作流需要几分钟的时间来部署迁移基础结构,并在源和目标之间建立连接。
- 完成
PerformingPreRequisiteSteps
子状态后,迁移将进入 Migrating Data,
子状态,此时会执行数据库的克隆/复制。
- 迁移的每个数据库都有自己的部分,其中包含所有迁移详细信息,例如表计数、增量插入、删除和挂起字节数。
- 完成
Migrating Data
子状态所需的时间取决于所迁移数据库的大小。
- 一旦
Migrating Data
子状态成功完成,迁移就会进入 Succeeded
状态。 如果 Migrating Data
子状态出现问题,迁移将进入 Failed
状态。
设置复制
如果选择“联机”迁移预览,则必须在源单一服务器中启用逻辑复制。 如果未启用,则迁移服务会在使用随附 JSON 文件中的值 true
传递 SetupLogicalReplicationOnSourceDBIfNeeded
参数时自动在源单一服务器上启用逻辑复制。 启动迁移后,还可以使用以下命令在源上手动设置复制。 任何启用逻辑复制的方法都会重启源单一服务器。
例如:
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --setup-replication
当灵活服务器处于等待 WaitingForLogicalReplicationSetupRequestOnSourceDB
状态时,需要运行此命令才能推进迁移。
要在上述任何区域中执行联机迁移,请使用:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode online
列出迁移
list
命令列出对灵活服务器目标进行的所有迁移尝试。
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
参数具有两个选项:
Active
:列出当前(正在进行的)到目标服务器的活动迁移尝试。 它不包括已失败、取消或成功的迁移。
All
:列出对目标服务器进行的所有迁移尝试。 这包括活动迁移和以往的迁移,不管其状态如何。
若要了解此命令的详细信息,请使用 help
参数:
az postgres flexible-server migration list -- help
监视迁移
show
命令可帮助监视正在进行的迁移,并提供迁移的当前状态和子状态。
这些详细信息包括有关迁移的当前状态和子状态的信息。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
参数是在运行 create
命令期间分配给迁移的名称。 下面是用于显示详细信息的 CLI 命令的示例响应快照:
若要了解此命令的详细信息,请使用 help
参数:
az postgres flexible-server migration show -- help
下表描述了迁移状态和子状态。
迁移状态 |
说明 |
InProgress |
迁移基础结构已设置,或者正在进行实际数据迁移。 |
Canceled |
迁移已被取消或删除。 |
Failed |
迁移失败。 |
Succeeded |
迁移成功并已完成。 |
迁移子状态 |
说明 |
PerformingPreRequisiteSteps |
基础结构已设置,并且已为数据迁移做好准备。 |
MigratingData |
数据迁移正在进行中。 |
CompletingMigration |
正在进行迁移切换。 |
Completed |
直接转换已成功,迁移完成。 |
先决条件(联机)
在使用 Azure Database for PostgreSQL 中的迁移服务开始迁移之前,必须满足适用于脱机迁移方案的以下先决条件。
验证源版本
源 PostgreSQL 版本应该为 >= 9.5
。 如果源 PostgreSQL 版本低于 9.5
,请在迁移之前将源 PostgreSQL 版本升级到 9.5
或更高版本。
目标设置
迁移之前,必须在 Azure 中设置 Azure Database for PostgreSQL。
为 Azure Database for PostgreSQL 选择的 SKU 应与源数据库的规范相对应,以确保兼容性和足够的性能。
有关创建新 Azure Database for PostgreSQL 的详细说明,请参阅以下链接:快速入门:创建服务器。
设置联机迁移参数
对于联机迁移,应在源 PostgreSQL 服务器的“复制设置”下将复制支持设置为“逻辑”。 此外,服务器参数 max_wal_senders
和 max_replication_slots
值应等于需要迁移的数据库数。 也可以使用以下命令在命令行中配置它们:
- ALTER SYSTEM SET wal_level = logical;
- ALTER SYSTEM SET max_wal_senders =
number of databases to migrate
;
- ALTER SYSTEM SET max_replication_slots =
number of databases to migrate
;
完成所有联机迁移先决条件后,需要重启源 PostgreSQL 服务器。
注意
要使用 Azure Database for PostgreSQL 单一服务器进行联机迁移,可在 Azure 门户中单一服务器页的“复制设置”下将 Azure 复制支持设置为“逻辑”。
网络设置
正确的网络设置对于确保迁移期间源和目标之间的成功连接至关重要。 以下指南可帮助你为不同的方案建立网络连接:
迁移的网络要求:
ExpressRoute/IPsec VPN/VPN 隧道:将本地/AWS 源连接到 Azure 时,可能需要设置 ExpressRoute、IPsec VPN 或 VPN 隧道,以促进安全的数据传输。
VNET 对等互连:在两个不同的 VNet 之间建立虚拟网络对等互连,以实现直接网络连接,这是在 Azure VM 与 Azure Database for PostgreSQL 之间进行迁移的先决条件。
连接方案:
下表可以帮助设置源和目标之间的网络。
Source |
目标 |
连接提示 |
公用 |
公用 |
如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。 |
专用 |
公用 |
不支持此配置;请使用 pg_dump/pg_restore 进行数据传输。 |
公用 |
专用 |
如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。 |
Private |
Private |
在源与目标之间建立 ExpressRoute、IPsec VPN、VPN 隧道或虚拟网络对等互连。 |
Private |
专用终结点 |
不支持此配置,请联系 Azure 支持。 |
其他网络注意事项:
- pg_hba.conf 配置:为了促进源与目标 PostgreSQL 实例之间的连接,必须验证 pg_hba.conf 文件并对其进行可能的修改。 此文件包括客户端身份验证,必须配置为允许目标 PostgreSQL 连接到源。 对 pg_hba.conf 文件的更改通常需要重启源 PostgreSQL 实例才能生效。
注意
pg_hba.conf 文件位于 PostgreSQL 安装的数据目录中。 如果源数据库是本地 PostgreSQL 服务器或 Azure VM 上托管的 PostgreSQL 服务器,则应检查并配置此文件。 对于 AWS RDS 或类似托管服务上的 PostgreSQL 实例,pg_hba.conf 文件不可直接访问或适用, 而是会通过服务提供的安全性和网络访问配置来控制访问。
有关网络设置的详细信息,请访问 Azure Database for PostgreSQL 灵活服务器中的迁移服务网络指南。
扩展
扩展是可以添加到 PostgreSQL 以增强其功能的额外功能。 Azure Database for PostgreSQL 支持扩展,但必须手动启用扩展。 若要启用扩展,请执行以下步骤:
在源中使用 select 命令列出所有正在使用的扩展 - select extname,extversion from pg_extension;
在 Azure Database for PostgreSQL 的“服务器参数”页面上搜索 azure.extensions 服务器参数。 启用在 PostgreSQL 内的源中找到的扩展。
保存参数更改并重启 Azure Database for PostgreSQL 以应用新配置(如果需要)。
检查列表中是否包含以下任一扩展:
- PG_CRON
- PG_HINT_PLAN
- PG_PARTMAN_BGW
- PG_PREWARM
- PG_STAT_STATEMENTS
- PG_AUDIT
- PGLOGICAL
- WAL2JSON
如果是,请在服务器参数页面中搜索 shared_preload_libraries 参数。 此参数指示在服务器重启时预加载的扩展库集。
服务器参数
这些参数不会自动迁移到目标环境,必须手动进行配置。
在目标中禁用高可用性(可靠性)和只读副本
开始使用
如果你不熟悉 Azure,请创建一个帐户来评估产品/服务。
从 Azure CLI 安装页安装适用于你的操作系统的最新 Azure CLI。
如果已安装 Azure CLI,请使用 az version
命令检查版本。 要使用迁移 CLI 命令,版本应为 2.50.0 或更高版本。 如果低于此版本,请更新 Azure CLI 版本。
运行 az login
命令:
az login
此时会打开一个包含 Azure 登录页的浏览器窗口。 请提供你的 Azure 凭据以成功完成身份验证。 有关使用 Azure CLI 登录的其他方法,请参阅此文。
迁移 CLI 命令(联机)
迁移工具随附了易于使用的 CLI 命令,可用于执行迁移相关的任务。 所有 CLI 命令都以 az postgres flexible-server migration
开头。 在启动迁移之前,请务必将这些扩展加入允许列表。
如需帮助了解与某个命令关联的选项以及正确的语法,可以使用 help
参数:
az postgres flexible-server migration --help
上述命令提供以下输出:
输出列出了支持的迁移命令及其操作。 让我们详细了解这些命令。
使用 Azure CLI 创建迁移
create
命令可帮助创建从源服务器到目标服务器的迁移:
az postgres flexible-server migration create -- help
上述命令提供以下结果:
它会列出所需的参数并提供用于成功创建从源服务器到目标服务器的迁移的示例语法。 下面是用于创建新迁移的 CLI 命令:
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
参数 |
说明 |
subscription |
灵活服务器目标的订阅 ID。 |
resource-group |
灵活服务器目标的资源组。 |
name |
灵活服务器目标的名称。 |
migration-name |
尝试到灵活服务器的迁移的唯一标识符。 此字段仅接受字母数字字符,不接受除连字符(- )之外的任何特殊字符。 该名称不能以 - 开头,不能有两个到灵活服务器目标的迁移同名。 |
migration-mode |
这是一个可选参数。 默认值:脱机。 脱机迁移需要在某个时间点将源数据库复制到目标服务器。 |
properties |
JSON 文件的绝对路径,其中包含有关单一服务器源的信息。 |
例如:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
create
命令中使用的 migration-name
参数可用于其他 CLI 命令,例如 update
、delete
和 show.
。在所有这些命令中,该参数可唯一标识相应操作中的迁移尝试。
最后,create
命令需要将 JSON 文件作为其 properties
参数的一部分传递。
JSON 的结构为:
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
采用 JSON 文件格式的 create
参数如下所示:
参数 |
类型 |
描述 |
sourceDbServerResourceId |
必需 |
此参数是单一服务器源的资源 ID,它是必需的。 |
adminCredentials |
必需 |
此参数列出单一服务器和灵活服务器目标的管理员用户的密码。 这些密码有助于对源服务器和目标服务器进行身份验证。 |
sourceServerUserName |
必须 |
默认值是在创建单一服务器期间创建的管理员用户,所提供的密码将用于对此用户进行身份验证。 如果使用的不是默认用户,则此参数是用于执行迁移的源服务器上的用户或角色。 此用户应对迁移中涉及的数据库对象拥有必要的特权和所有权,并且应是 azure_pg_admin 角色的成员。 |
targetServerUserName |
必须 |
默认值是在创建灵活服务器期间创建的管理员用户,所提供的密码将用于对此用户进行身份验证。 如果未使用默认用户,则此参数是用于执行迁移的目标服务器上的用户或角色。 此用户应是 azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables 角色的成员,并且应具有创建角色、创建 DB 属性。 |
dbsToMigrate |
必须 |
指定要迁移到灵活服务器的数据库的列表。 仅迁移用户数据库。 不会迁移系统数据库或模板数据库(如 template0、template1)。 |
overwriteDbsInTarget |
必须 |
如果设置为 true,且目标服务器的现有数据库恰好与要迁移的数据库同名,则迁移服务会自动覆盖该数据库。 |
SetupLogicalReplicationOnSourceDBIfNeeded |
可选 |
通过将此属性设置为 true ,可以在源服务器上自动启用逻辑复制。 对服务器设置进行的此项更改需要重启服务器,这会导致两到三分钟的故障时间。 |
SourceDBServerFullyQualifiedDomainName |
可选 |
将自定义 DNS 服务器用于虚拟网络的名称解析时使用该参数。 根据自定义 DNS 服务器为此属性提供单一服务器的 FQDN。 |
TargetDBServerFullyQualifiedDomainName |
可选 |
将自定义 DNS 服务器用于虚拟网络内部的名称解析时使用该参数。 根据自定义 DNS 服务器提供灵活服务器目标的 FQDN。 仅当为名称解析使用自定义 DNS 服务器而不是 Azure 提供的 DNS 时(这种情况极少见),才应包含 SourceDBServerFullyQualifiedDomainName 和 TargetDBServerFullyQualifiedDomainName 作为 JSON 的一部分。 否则,请勿在 JSON 文件中包括这些参数。 |
请注意命令响应的以下要点:
- 触发
create
命令后,迁移将会进入 InProgress
状态和 PerformingPreRequisiteSteps
子状态。 迁移工作流需要几分钟的时间来部署迁移基础结构,并在源和目标之间建立连接。
- 完成
PerformingPreRequisiteSteps
子状态后,迁移将进入 Migrating Data,
子状态,此时会执行数据库的克隆/复制。
- 迁移的每个数据库都有自己的部分,其中包含所有迁移详细信息,例如表计数、增量插入、删除和挂起字节数。
- 完成
Migrating Data
子状态所需的时间取决于所迁移数据库的大小。
- 一旦
Migrating Data
子状态成功完成,迁移就会进入 Succeeded
状态。 如果 Migrating Data
子状态出现问题,迁移将进入 Failed
状态。
设置复制
如果选择“联机”迁移预览,则必须在源单一服务器中启用逻辑复制。 如果未启用,则迁移服务会在使用随附 JSON 文件中的值 true
传递 SetupLogicalReplicationOnSourceDBIfNeeded
参数时自动在源单一服务器上启用逻辑复制。 启动迁移后,还可以使用以下命令在源上手动设置复制。 任何启用逻辑复制的方法都会重启源单一服务器。
例如:
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --setup-replication
当灵活服务器处于等待 WaitingForLogicalReplicationSetupRequestOnSourceDB
状态时,需要运行此命令才能推进迁移。
要在上述任何区域中执行联机迁移,请使用:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode online
列出迁移
list
命令列出对灵活服务器目标进行的所有迁移尝试。
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
参数具有两个选项:
Active
:列出当前(正在进行的)到目标服务器的活动迁移尝试。 它不包括已失败、取消或成功的迁移。
All
:列出对目标服务器进行的所有迁移尝试。 这包括活动迁移和以往的迁移,不管其状态如何。
若要了解此命令的详细信息,请使用 help
参数:
az postgres flexible-server migration list -- help
监视迁移
show
命令可帮助监视正在进行的迁移,并提供迁移的当前状态和子状态。
这些详细信息包括有关迁移的当前状态和子状态的信息。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
参数是在运行 create
命令期间分配给迁移的名称。 下面是用于显示详细信息的 CLI 命令的示例响应快照:
若要了解此命令的详细信息,请使用 help
参数:
az postgres flexible-server migration show -- help
下表描述了迁移状态和子状态。
迁移状态 |
说明 |
InProgress |
迁移基础结构已设置,或者正在进行实际数据迁移。 |
Canceled |
迁移已被取消或删除。 |
Failed |
迁移失败。 |
Succeeded |
迁移成功并已完成。 |
迁移子状态 |
说明 |
PerformingPreRequisiteSteps |
基础结构已设置,并且已为数据迁移做好准备。 |
MigratingData |
数据迁移正在进行中。 |
CompletingMigration |
正在进行迁移切换。 |
Completed |
直接转换已成功,迁移完成。 |
直接转换迁移
在联机迁移中,完成基本数据迁移后,迁移任务将移动到 WaitingForCutoverTrigger
子状态。 在此状态下,用户可以使用以下命令通过 CLI 触发直接转换。 还可以通过选择迁移网格中的迁移名称从门户触发直接转换。
例如:
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --cutover
在启动直接转换之前,请务必确保:
- 停止对源的写入 -
latency
参数减少到 0 或接近 0
latency
参数指示目标上次与源同步的时间。 例如,下面是两个数据库的 201 和 202 值,如下图所示。 这意味着尚未将源上最近大约 200 秒内发生的更改同步到目标。 此时,可以停止写入源并启动直接转换。 如果源中存在大量流量,建议先停止写入,以便 Latency
可以接近 0,然后启动直接转换。 直接转换操作会将源中所有挂起的更改应用到目标,并完成迁移。 如果触发“直接转换”,则即使 Latency
非零,复制也会在该时间点之前停止。 然后会在目标上应用直接转换点之前源中的所有数据。 假设直接转换点处的延迟为 15 分钟,则会向目标应用过去 15 分钟内的所有更改数据。 所需时间则取决于过去 15 分钟内发生的更改积压工作。 因此,建议在触发直接转换之前,延迟应达到零或接近零。
可以使用前一显示命令获取 latency
信息。
下面是启动直接转换之前迁移的快照:
启动直接转换后,基础复制期间发生的所有事务将会按顺序复制到目标,并完成迁移。
如果直接转换未成功,迁移将会进入 Failed
状态。
若要了解此命令的详细信息,请使用 help
参数:
az postgres flexible-server migration update -- help