将数据库还原到 SQL Server 大数据群集主实例

适用范围:SQL Server 2019 (15.x)

本文介绍如何将现有数据库还原到 SQL Server 2019 大数据群集 的主实例中。 建议使用备份、复制和还原。

重要

Microsoft SQL Server 2019 大数据群集附加产品将停用。 对 SQL Server 2019 大数据群集的支持将于 2025 年 2 月 28 日结束。 具有软件保障的 SQL Server 2019 的所有现有用户都将在平台上获得完全支持,在此之前,该软件将继续通过 SQL Server 累积更新进行维护。 有关详细信息,请参阅公告博客文章Microsoft SQL Server 平台上的大数据选项

备份现有数据库

首先,从 Windows 或 Linux 上的 SQL Server 备份现有 SQL Server 数据库。 将标准备份技术与 Transact-SQL 或 SQL Server Management Studio (SSMS) 等工具结合使用。

本文演示如何还原 AdventureWorks 数据库,但可以使用任何数据库备份。

提示

下载 AdventureWorks 备份

复制备份文件

将备份文件复制到 Kubernetes 群集的主实例 Pod 中的 SQL Server 容器。

kubectl cp <path to .bak file> master-0:/var/tmp/<.bak filename> -c mssql-server -n <name of your big data cluster>

示例:

kubectl cp ~/Downloads/AdventureWorks2022.bak master-0:/var/tmp/AdventureWorks2022.bak -c mssql-server -n clustertest

然后,验证是否已将备份文件复制到 Pod 容器。

kubectl exec -it master-0 -n <name of your big data cluster> -c mssql-server -- bin/bash
cd /var/
ls /tmp
exit

示例:

kubectl exec -it master-0 -n clustertest -c mssql-server -- bin/bash
cd /var/
ls /tmp
exit

还原备份文件

接下来,将数据库备份还原到主实例 SQL Server。 如果要还原在 Windows 上创建的数据库备份,则需要获取文件的名称。 在 Azure Data Studio 中,连接到主实例并运行以下 SQL 脚本:

RESTORE FILELISTONLY FROM DISK='/tmp/<db file name>.bak'

示例:

RESTORE FILELISTONLY FROM DISK='/tmp/AdventureWorks2022.bak'

备份文件列表

现在,还原数据库。 以下脚本是一个示例。 根据需要替换名称/路径,具体取决于数据库备份。

RESTORE DATABASE AdventureWorks2022
FROM DISK='/tmp/AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO '/var/opt/mssql/data/AdventureWorks2022_Data.mdf',
        MOVE 'AdventureWorks2022_Log' TO '/var/opt/mssql/data/AdventureWorks2022_Log.ldf',
        MOVE 'AdventureWorks2022_mod' TO '/var/opt/mssql/data/AdventureWorks2022_mod'

配置数据池和 HDFS 访问

现在,针对访问数据池和 HDFS 的 SQL Server 主实例,请运行数据池和存储池存储过程。 针对新还原的数据库运行以下 Transact-SQL 脚本:

USE AdventureWorks2022;
GO
-- Create the SqlDataPool data source:
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlDataPool')
  CREATE EXTERNAL DATA SOURCE SqlDataPool
  WITH (LOCATION = 'sqldatapool://controller-svc/default');

-- Create the SqlStoragePool data source:
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlStoragePool')
   CREATE EXTERNAL DATA SOURCE SqlStoragePool
   WITH (LOCATION = 'sqlhdfs://controller-svc/default');
GO

备注

只有针对从旧版 SQL Server 还原的数据库才必须运行这些安装脚本。 如果在 SQL Server 主实例中创建新数据库,则系统已为你配置数据池和存储池存储过程。

后续步骤

若要了解有关 SQL Server 大数据群集 的详细信息,请参阅以下概述: