sqlserver 自动初始化从节点数据

sqlserver 自动初始化从节点数据

背景

在 SQL Server 2012 和 2014 中,初始化 SQL Server Always On 可用性组中的次要副本的唯一方法是使用备份、复制和还原。

在一个高可用组里面添加一个数据库需要很多手动任务和一些必要条件。需要完成的这些工作中,有一些是有些困难的,比如:

  • 我们需要从主副本中备份数据库,并将这个备份分发到可用组的其他副本中。这是基于手动操作的,因为这需要你从主数据库备份还原数据库到次要副本。
  • 有时候,我们不能通过网络防火墙在副本之间传送数据库备份文件。这种情况下,需要开放SMB协议端口,以便能在节点间传输备份文件。
  • 通常,复制一个备份文件会占用更多空间,这是额外的需求,更多的磁盘空间。
  • 特别是针对第三方备份的方案,会导致备份/还原链的中断。但是这又取决于数据库的备份策略。
  • 分发和还原数据库是耗时并且不透明的过程。

 

作为一个兼职DBA,我不喜欢处理这些问题。当我创建数据库在主节点上时,我想要数据库被自动创建在所有副本上,幸运的是SQLServer 2016以后这样的工作就容易多了。为了更好的帮助DBA们处理这些问题,微软引入了可用组的自动增长数据库。即SQL Server 2016 引入了用于初始化次要副本的新功能 – 我一般称之为数据库自增长(自动种子设定)

那么这个自动化如何实现的?

 

当你打算创建一个数据库在主副本上,并且加入数据库到AG里面时,自动填充就会在数据库镜像端间进行通信,并且复制数据库到次要副本中。假设有一个可用组,由N个副本组成,replicas – Replica1, Replica2, … ReplicaN。当前你的主副本是Replica2 ,然后你创建一个新的数据库在主副本上。下一步就是要尽快把数据库加入到可用组的其他副本上。这个解决方案就如下图的流程所示:

<span>sqlserver 自动初始化从节点数据</span>

 

数据库自动种子设定(自增长),没有特殊的必要条件和限制,只是需要数据和日志文件路径在可用组中是完全一致的。这个可用组配置自增长,数据库在可用组中一定是完整还原模式,需要有一个完成备份以及事务日志备份。如果在可用组中用手动同步加入的数据库也需要上述一样的条件。

启动自动种子设定功能

在每一个需要自增长数据库的副本上,需要允许可用组创建数据库。下面的脚本用来允许AG创建数据库,但是确保你可以连接到master数据库并且能够对所有可用组中的副本执行这个脚本:

ALTER AVAILABILITY GROUP [{your_AG_name}]
GRANT CREATE ANY DATABASE;
GO

 

可用组必须被切换为自动增长模式。该模式可以通过在每个副本中执行下面额T-SQL代码来实现(或者每个副本中启动自增模式):

ALTER AVAILABILITY GROUP [{your_AG_name}] MODIFY REPLICA ON '{your_replica_name}' WITH (SEEDING_MODE = AUTOMATIC); GO

 

 

另外,对于Always On 的可用组来说,自增期间能够使用跟踪标记trace flag 9567压缩数据流,从而大大减少传输时间。相关内容可以再找个连接看到: https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

添加一个带有自增长属性的数据库

打开SSMS并且连接可用组主节点。导航到AlwaysOn 高可用(AlwaysOn High Availability)文件,打开“Availability Groups”,然后找到打算添加数据库的可用组。在打开”Availability Databases” 文件夹。右击”Availability Databases”,右键菜单”Add databases..”, 这个菜单选项将会激活配置向导如下:

 

<span>sqlserver 自动初始化从节点数据</span>

选择打算加入到可用组的数据库:

<span>sqlserver 自动初始化从节点数据</span>

 

注意,这个数据库一定满足一下必要条件。选择选项“Skip initial data synchronization”:

<span>sqlserver 自动初始化从节点数据</span>

在次要节点,你会看到数据库已经被还原的信息:

<span>sqlserver 自动初始化从节点数据</span>

 

因此,你也可以在msdb.dbo.restorehistory 表中看到每个数据库的增加信息。在主服务器,可以在表msdb.dbo.backupmediafamily 中看到每个数据库信息,数据库可以shiyo8ng下面的T-SQL语句实现:

ALTER AVAILABILITY GROUP {your_AG_name} ADD DATABASE {your_database_name};

<span>sqlserver 自动初始化从节点数据</span>

 

这个脚本必须在可用组的每个数据库上执行。

优缺点

我通常使用自动数据库填充为可用组并且发现它很有价值。例如,微软SharePoint 支持组有权去创建新的数据库在主副本上,但是他们不能直接把数据库加入到可用组中,因为这样做影响了数据库的高可用。当我们使用自动数据填充在指定的可用组上时,我们可以自动添加新的Sharepoint 数据库在可用组上,使用一个将所有最近创建的Sharepoint 数据库添加到可用组上的脚本,使用2016这个特性不在需要使用手动操作。

 

综上所述,使用自动填充的优势有如下几点:

  • 操作过程简单.
  • 节省磁盘空间.
  • 节省备份还原事件,因为SQLServer复制数据库使用网络.
  • 使用追踪标记9567,能够大大减少同步时间。

 

在可用组中使用自动增长的缺点:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言 Socket TCP通信

    C语言 Socket TCP通信TCP简介传输控制协议(TCP)是一种网络通信协议,旨在通过Internet发送数据包。TCP是OSI层中的传输层协议,用于通过传输和确保通过支持网络和Internet传递消息来在远程计算机之间创建连接。

    2022年7月13日
    19
  • Center OS 7 下的安装Apache「建议收藏」

    Center OS 7 下的安装Apache「建议收藏」使用yum安装,直接yuminstallhttpd

    2022年9月21日
    2
  • ftp 命令详解_ftp连接命令

    ftp 命令详解_ftp连接命令1、ftp&gt;!从ftp子系统退出到外壳2、ftp&gt;?显示ftp命令说明,与help相同格式:?[command]说明:[command]指定需要帮助的命令名称,如果没有指定command,ftp将显示全部命令的列表3、ftp&gt;append使用当前文件类型设置,将本地文件附加到远程计算机的文件格式:appendlocal-file[remote…

    2022年9月21日
    3
  • 此工作站和主域间的信任关系失败 原因及解决办法[通俗易懂]

    此工作站和主域间的信任关系失败 原因及解决办法[通俗易懂]原因:域控服务器没有客户端的主机名(可能删除了,或重装系统后没添加到域控)处理:在域控上确认客户端主机名是否被禁用,如已禁用,启动即可。转载于:https://www.cnblogs.com/sjdn/p/5923669.html…

    2022年10月19日
    4
  • 时序数据库应用_tsdb时序数据库

    时序数据库应用_tsdb时序数据库前言mysql可能大家都用的比较多且普遍,最近1年在使用PostgreSql,其大体DML语句与mysql类似,只是部分DDL语句有些区别,写一篇文章给正在应用该数据库或者准备选型该数据库的朋友,分享下使用方式与心得PostgreSqlPostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才…

    2022年9月27日
    3
  • DENSENET_rennet

    DENSENET_rennet1.首先对深度学习做一个简单的回顾2.介绍DenseNet1.1DNN回顾如下图所示是一个基本DNN结构,通过forward传播和backword传播来训练一个模型包含input层,L个隐藏层和一个output隐层使用的sigmoid激活函数一般的优化方法有如下几种GD:对所有样本计算完一次梯度然后更新权重SGD:每个样本计算一次梯度就更新权重

    2022年9月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号