AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 246989
Accepted
Jonathan Fite
Jonathan Fite
Asked: 2019-09-05 10:15:21 +0800 CST2019-09-05 10:15:21 +0800 CST 2019-09-05 10:15:21 +0800 CST

SQL 托管实例 - 交叉订阅还原/迁移

  • 772

精简版:

我正在尝试将备份从一个 SQL 托管实例还原到另一个 SQL 托管实例。这些在不同的订阅中。使用此处的示例 3,我至少可以看到恢复从 sys.dm_operation_status 开始,但错误消息是“订阅 [目标] 不包含 [源 SQL MI]”。

问题: 如何将数据库从一个 SQL 托管实例迁移到另一个(在不同的订阅中)?我目前的解决方法是对 blob 存储执行 copy_only 并以这种方式恢复。

一旦我们启用 TDE(进行中),我们将无法对 blob 执行 copy_only 备份。然后怎样呢?

长版:

最近,我们公司开始在 SQL 托管实例(和其他 PaaS/IaaS)上在 Azure 中运行我们的生产工作负载,并且进展顺利。尽管我确实熟悉了数据库迁移服务 (DMS),但我们有一个足够大的窗口来确定我们能够使用完整备份进行初始加载。

但是现在我们正在扩展我们的 dev/test/qa 环境,当然我们现在希望从生产环境恢复到这些环境。出于隔离目的,每个人都有自己的订阅。

这些命令有效,因为我至少可以在 sys.dm_operation_status 中看到恢复操作开始,但它失败并出现错误。错误是“订阅 [目标] 不包含 [源 SQL MI]”,这让我相信交叉订阅恢复对我们不起作用(尽管跨区域可以)。

DMS 似乎不支持使用数据库迁移服务作为源的方案。

Select-AzSubscription -Subscription $SourceSubscriptionID

$GeoBackup = Get-AzSqlInstanceDatabaseGeoBackup -ResourceGroupName $SourceResourceGroupName `
     -InstanceName $SourceSQLMI `
     -Name $SourceDatabaseName

Select-AzSubscription -Subscription $TargetSubscriptionID

Restore-AzSqlInstanceDatabase -FromGeoBackup `
    -GeoBackupObject $GeoBackup `
    -TargetInstanceDatabaseName $TargetDatabaseName `
    -TargetInstanceName $TargetSQLMI `
    -TargetResourceGroupName $TargetResourceGroupName

有什么建议、想法吗?如有必要,我愿意使用各种 Azure PowerShell 的预览版,尽管我没有发现任何东西表明它在那里有所不同。

可能的解决方法

我确实从我们的一位 Microsoft 联系人那里获得了一个链接,该链接似乎表明您可以在同一个订阅中建立一个托管实例,恢复到它,然后将托管实例移动到另一个订阅。我没有尝试过,所以我不知道。他们提供的链接在这里,尽管我怀疑它的有效性。

migration restore
  • 4 4 个回答
  • 3403 Views

4 个回答

  • Voted
  1. Danimir Ljepava
    2020-04-03T06:26:08+08:002020-04-03T06:26:08+08:00

    目前(2020 年 4 月),同一地区和同一租户 ID(仅限同一客户/公司)的交叉订阅 PITR 恢复仅作为 EA、CSP 或 PayGo 订阅的有限预览版提供。您需要登录到打算使用它的 Azure 门户(通过 EA/CSP/PayGo 订阅)并创建支持票证,选择支持选项“自动备份或时间点恢复”。几天后,您可以获得有限预览的批准。此解决方案还支持 Azure 托管密钥的 TDE 加密备份。对于 BYOK 密钥,这仅在客户在源 MI 和目标 MI 上具有相同密钥时才有效。希望这可以帮助。

    • 7
  2. Best Answer
    Jovanpop
    2019-09-05T10:45:59+08:002019-09-05T10:45:59+08:00

    仅复制备份是目前唯一的解决方案。跨订阅pitr 和geo restore 不起作用,因为目前我们无法验证发起者是否拥有源订阅和目标订阅的所有必需权限。

    • 6
  3. Mladen Andzic - Msft
    2019-09-06T06:58:33+08:002019-09-06T06:58:33+08:00

    要添加到Jovanpop 的答案,如果您使用 AKV 集成,即 BYOK TDE,您仍然应该能够在 TDE 开启的情况下进行 copy_only 备份,只要您在其他订阅中的目标实例可以访问源实例上使用的相同加密密钥。

    • 5
  4. Jake Almer
    2022-09-28T06:34:05+08:002022-09-28T06:34:05+08:00

    Bradley Ball在 Microsoft 数据架构博客上使用 TDE 和 Azure Key Vault 在SQL 托管实例上使用 TDE 和 Azure Key Vault在2 个订阅之间恢复托管实例数据库所需的步骤非常好。

    这篇文章很长,有很多细节和截图,但大纲是:

    1. 在开发 Azure Key Vault 中创建 TDE 密钥
    2. 备份密钥
    3. 创建一个新的“2-b-moved” Azure Key Vault
    4. 将密钥还原到新的“2-b-moved”Azure Key Vault
    5. 将新的“2-b-moved”Azure Key Vault 从开发订阅迁移到生产订阅
    6. 现在在生产订阅中从新的“2-b-moved”Azure Key Vault 备份密钥
    7. 将密钥还原到生产 Azure Key Vault
    8. 将 SQL 托管实例、生产和开发与各自 Azure Key Vault 中的密钥相关联
    9. 在每个 Azure SQL 托管实例上为 Azure Blob 存储帐户创建 T-SQL 凭据
    10. 从生产 SQL 托管实例备份 TDE 数据库并将其还原到开发 SQL 托管实例
    • 1

相关问题

  • 新的 SQL 实例和迁移

  • 将 2 列 CSV 文件导入某种数据库....初步规划

  • SQL Server 2008 R2 Ent 试用期过期搬来快递?

  • 您规划数据迁移的工作流程是什么?

  • 如何使用旧的完整备份和当前日志文件恢复数据库

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve