将数据库还原到 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 数据库,但可以使用任何数据库备份。
提示
复制备份文件
将备份文件复制到 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 大数据群集 的详细信息,请参阅以下概述: