暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在现有可用性组中添加 SQL 数据库

原创 Bigbig 2022-10-10
1369

在本文中,我们将学习如何将 SQL 数据库添加到现有的 Alwayson 可用性组。Alwayson 可用性组是 Microsoft SQL Server 的高可用性和灾难恢复解决方案。数据库必须满足以下先决条件才能成为可用性组的一部分。

在可用性组中添加 SQL 数据库的先决条件

  • 数据库必须是用户数据库。
  • 必须禁用自动关闭。
  • 数据库必须处于多用户和读写模式。
  • 数据库必须处于完全恢复模式。
  • 数据库必须有完整的数据库备份。

环境设置
我在我的工作站上创建了三个虚拟机来演示这个过程。详情如下:

主机名 角色
直流本地 我已经在服务器中安装了 Active Directory 角色,并在其中创建了一个名为 DC.Local 的域控制器。
SQL01.dc.local 可用性组的主要副本。
SQL02.dc.local 可用性组的次要副本。

我使用上述虚拟机创建了一个名为 SQLCluster 的可用性组,在主副本上恢复了 stackoverflow2010 数据库。我们将它添加到 SQLCluster。

使用 SQL Server 管理工作室添加 SQL 数据库

在 SQL01 上启动 SQL Server management studio 🡪 连接到数据库引擎 🡪 展开 Always On 高可用性 🡪 展开可用性组 🡪 展开 SQLCluster 🡪 右键单击​​可用性数据库 🡪 选择添加数据库。

image.png

数据库添加到可用性组向导将启动。您可以查看向导执行的任务的详细信息和列表。单击下一步。

image.png

您可以选择要添加到现有可用性组的数据库。数据库列表及其状态显示在网格视图中。您可以从列表中选择一个或多个数据库。在此演示中,我们在 SQLCluster 中添加 StackOverFlow2010 数据库,因此请从列表中勾选 StackOverFlow2010。单击下一步

image.png

Connect to Existing Secondary Replicas屏幕上,您可以查看用于创建可用性组的副本列表。SQL02 在辅助副本列表中。要向现有端点授予适当的权限,我们必须连接到辅助副本。为此,请单击连接。

image.png

打开连接到服务器对话框。您可以选择适当的身份验证方法。我们使用 Windows 身份验证,因此从下拉框中选择 Windows 身份验证。

image.png

我们可以在 Select Initial Data Synchronization 屏幕上选择数据同步首选项。您可以选择以下任何一种方法。

  1. 自动播种: SQL Server 自动创建数据库并在此方法中开始播种。要使用此方法,所有参与副本上的目录结构(数据文件路径和日志文件路径)必须相同。
  2. 完整数据库和日志备份:向导将通过生成数据库的完整备份和日志备份来启动数据同步。备份将在辅助副本上恢复并加入可用性组。我们必须创建一个网络共享以保持完整备份和日志备份。确保它可以从所有辅助副本访问并具有所需的权限。
  3. 仅加入:当您在辅助副本上恢复数据库备份时使用此方法。该向导将通过将数据库加入可用性组中来启动数据同步。
  4. 跳过初始数据同步:如果要手动生成数据库的完整和日志备份。

在demo中,我们使用的是Full database Log备份方式;因此,选择完整数据库和日志备份。要保持完整的网络共享和日志备份是**\DC\AGBackups因此,请在文件共享路径中指定它。单击下一步**。

image.png

该向导将运行可用性组验证测试。它检查以下参数:

  1. 共享网络位置
  2. 次要副本上的可用磁盘空间
  3. 检查所选数据库是否存在于 SQL02 副本上
  4. SQL02 副本上数据文件位置的兼容性
    在成功完成所有验证测试之前,该向导不会继续。在我们的演示中,验证测试已成功完成。

image.png

您可以在摘要屏幕 上验证我们在向导中选择的配置和设置。单击脚本以生成可用性组向导执行的任务的脚本。单击完成。
image.png

该向导开始在 SQLCluster 可用性组中添加 Stackoverflow2010 数据库的过程。
image.png

向导所用的时间取决于数据库的备份和恢复过程所用的时间。您可以在结果屏幕 上查看向导完成的任务列表。
image.png

成功添加数据库后,您可以在“可用性数据库”节点下看到它。

image.png

您可以在可用性组仪表板中查看它。要打开可用性组仪表板,展开 SQLCluster 🡪 右键单击​​可用性数据库并选择显示仪表板。

image.png

如上图所示,Stackoverflow2010 数据库已添加。

或者,您可以运行以下查询来查看 SQLCluster 可用性组中的可用性数据库列表。

SELECT DISTINCT ag.NAME, 
  agstates.primary_replica, 
  agstates.primary_recovery_health_desc, 
  [ClusterStat].database_name AS [DatabaseName] 
FROM   master.sys.availability_groups AS AG 
LEFT OUTER JOIN master.sys.dm_hadr_availability_group_states AS agstates 
      ON AG.group_id = agstates.group_id 
INNER JOIN master.sys.availability_replicas AS AR 
 ON AG.group_id = AR.group_id 
INNER JOIN master.sys.dm_hadr_availability_replica_states AS 
    [ReplicaStats] 
 ON AR.replica_id = [ReplicaStats].replica_id 
    AND [ReplicaStats].is_local = 1 
INNER JOIN master.sys.dm_hadr_database_replica_cluster_states AS 
    [ClusterStat] 
 ON [ReplicaStats].replica_id = [ClusterStat].replica_id 
LEFT OUTER JOIN master.sys.dm_hadr_database_replica_states AS 
         [ReplicaDBStats] 
      ON [ClusterStat].replica_id = [ReplicaStats].replica_id 
         AND [ClusterStat].group_database_id = 
             [ReplicaDBStats].group_database_id 
WHERE  Isnull([ClusterStat].is_database_joined, 0) = 1 
ORDER  BY [ClusterStat].database_name  

输出

image.png

如您所见,Stackoverflow2010 已添加到 SQLCluster。

总结

我们在本文中学习了如何在现有 Alwayson 可用性组中添加 SQL 数据库。

关于作者

image.png

Nisarg Upadhyay 是一名 SQL Server 数据库管理员和 Microsoft 认证的专业人员,他在 SQL Server 管理方面拥有超过 8 年的经验,在 Oracle 10g 数据库管理方面拥有 2 年的经验。
他在数据库设计、性能调整、备份和恢复、HA 和 DR 设置、数据库迁移和升级方面拥有专业知识。他已经完成了甘帕特大学的 B.Tech。

原文标题:Add SQL databases in an existing availability group
原文作者:Nisarg Upadhyay
原文地址:https://www.sqlshack.com/add-sql-databases-in-an-existing-availability-group/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论