APP下载

SQL Server基于Linux系统的可用性组安装与部署

2022-07-26陈海琼赵觅

网络安全技术与应用 2022年5期
关键词:副本可用性脚本

◆陈海琼 赵觅

SQL Server基于Linux系统的可用性组安装与部署

◆陈海琼 赵觅

(贵州广播电视台 贵州 550002)

随着互联网云计算的发展,以Linux操作系统为核心的开源生态逐渐成为云计算服务的主流,微软公司发布了Linux版McroSoft SQL Server,提供数据同步的可用性组。本文详细阐述了SQL Server数据库如何基于Linux系统安装和配置可用性组。

Linux;SQL Server;可用性组

互联网云计算的发展,以Linux操作系统为核心的开源生态逐渐成为云计算服务的主流,免费开源的Linux服务器系统如centos、ubuntu server,能为企业节约一笔可观的操作系统购置经费。近年来微软逐渐把自己的业务重心转向云计算市场,微软也发布提供Linux版本的McroSoft SQL Server(以下简称MSSQL),包括rpm、deb包安装,还提供了官方的Docker容器镜像。

Linux平台的MSSQL与Windows平台拥有相同的数据库引擎,具有相似的功能与服务。其中就有支持数据业务安全、读取扩展的Always On 可用性组(Availability Group 以下简称AG)。AG可以实现High Availability(高可用性)或read-scale(读取缩放)。本文将介绍基于Linux的MSSQL安装配置read-scale可用性组。

1 read-scale可用性组的介绍

read-scale可用性组可以不使用群集管理器的情况下使用,提供了只读副本横向扩展,read-scale可用性组可以做到多个数据库的同步,但并不提供高可用性。在构建可用性组之前,需要了解两个概念。

1.1 可用性副本

每个可用性组包含两个或多个可用性副本的集合。每个可用性副本都承载可用性组中的可用性数据库的一个副本。每个可用性副本都被分配一个初始角色(“主角色”或“辅助角色”),角色由该副本的可用性数据库继承。给定副本的角色确定它承载的是读写数据库还是只读数据库。其中一个主要副本被分配主角色,它承载读写数据库(称为“主数据库” )。至少一个辅助副本被分配辅助角色,辅助副本承载只读数据库(称为“辅助数据库”)。

1.2 可用性模式AVAILABILITY_MODE

可用性模式是可用性副本的一个属性,决定主副本是否在辅助副本将事务日志记录写入磁盘之前,等待提交数据库上的事务。共有两种可用性模式:

(1)异步提交模式(ASYNCHRONOUS_COMMIT):主副本无需等待确认异步提交辅助副本已硬化日志,便可提交事务。异步提交模式可最大限度地减少辅助数据库上的事务滞后时间,但允许它们滞后于主数据库,因此可能会导致某些数据丢失。

(2)同步提交模式(SYNCHRONOUS_COMMIT):在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完成硬化日志。同步提交模式可确保在给定的辅助数据库与主数据库同步时,充分保护已提交的事务。这种保护的代价是延长事务滞后时间。

2 Linux安装MSSQL并配置AlwaysOn高可用组

Linux服务器通常使用非图形界面的命令行模式,因此安装过程只能采用命令输入的方式。本文安装过程,是连接互联网的环境下进行在线安装,如果在非联网环境安装,可以提前下载离线安装包。数据库程序安装完毕后,可以用数据库控制客户端远程连接MSSQL数据库,进行后续数据库配置流程。整个安装配置流程如图1所示。

图1 安装配置流程图

2.1 安装Linux版本MSSQL2019

准备两台centos7系统服务器,分别命名并分配IP地址为mssql1(172.17.0.201)和mssql2(172.17.0.202),把命名和IP地址分别加入他们的hosts文件中。然后分别在两台服务器上安装MSSQL2019数据库服务端程序。

2.1.1安装官方源

运行以下命令,下载MSSQL2019官方源到本机源仓库。

2.1.2安装MSSQL

运行以下命令,安装MSSQL程序。

2.1.3配置MSSQL

运行以下命令,选择要安装功能版本,并设置SA账户密码。

MSSQL提供了多个功能个版本,Express Edition、Standard、Enterpirise、Developer。

(1)Express Edition:入门级的免费数据库,用于学习和构建小型服务器数据库,不支持AG。

(2)Standard:付费标准版本,支持本地和云部署。AG 可拥有的副本总数为两个:一个主要副本以及一个仅能用作可用性目的的次要副本。次要副本不能用于任何其他目的,例如可读查询。

(3)Enterprise:付费,提供了全面的高端数据中心功能,可为关键任务工作负荷提供较高服务级别。 AG 最多可拥有的副本总数为九个:一个主要副本,以及最多八个次要副本,并且最多可以对其中3个副本(包括主要副本)进行同步。

(4)Developer:允许开发人员在MSSQL之上构建任何类型的应用程序。它包括Enterprise版本的所有功能,但是仅被许可作为开发和测试系统使用,而不是作为生产服务器使用。如果要用于正式正产系统,请根据功能需求选择购买对应的版本。

实验测试环境可安装Developer版本,如果要在生产环境使用可用性组,请根据实际需求,购买并安装Standard或者Enterpise版本。

2.1.4系统配置防火墙

配置系统防火墙,将两台Linux服务器的TCP的1433和5022端口开放。1433端口是MSSQL默认端口;5022端口是可用性组端点默认端口。

2.1.5安装控制客户端

在一台PC机上安装数据库控制客户端SQL Server Management Studio(以下简称SSMS),使用SSMS的查询编辑器,编写执行Transact-SQL(以下简称T-SQL)脚本语句与数据库交互。

2.2 配置可用性组

2.2.1开启可用性组

运行命令,开启MSSQL可用性组,重启MSSQL服务,该设置才能生效。

2.2.2启用Alwayson_health事件会话

运行以下T-SQL脚本,启用Alwayson_health事件会话,可对可用性组进行故障排查时帮助诊原因。

2.2.3创建证书

Linux需要使用证书验证各个镜像节点之间的通信。在主数据库运行以下T-SQL脚本创建密钥和证书,然后备份证书,并使用私钥保护文件。

dbm_certificate.cer是主副本的证书,dbm_certificate.pvk私钥。将这两个文件复制到其他辅助数据库的服务器同一位置,并且赋予MSSQL用户访问权限。在所有辅助数据库运行以下T-SQL脚本,创建证书。

2.2.4在所有副本上创建镜像端点和监听端口

数据库镜像端点是可用性组的重要组成部分,它的主要作用有两个:主副本和辅助副本之间通过端点传送日志块和消息,同步数据;主副本和每个辅助副本通过端点互相发送ping来确定彼此是否互相连通。端点使用TCP协议,监听端口一般默认为5022。在所有副本服务器上运行以下T-SQL脚本创建端点。

2.2.5新建read-scale可用性组群集

在主数据库运行以下T-SQL脚本创建一个可用性组“Linux_ag”。请注意,群集类型CLUSTER_TYPE为 NONE,,创建read-scale可用性组。可用性模式AVAILABILITY_MODE选择同步模式,确保数据库事务的一致性。

2.2.6把辅助副本加入可用性组中

在辅助数据库中执行以下T-SQL脚本,将辅助副本加入刚才创建的可用性组“Linux_ag”。

2.2.7添加数据库到可用性组

在主数据库中执行以下T-SQL 脚本,将名为test1的数据库添加到名为Linux_ag的可用性组。可用性组配置完成。

用SSMS客户端查看数据库服务器可用性组面板状态,如图2,可用性组Linux_ag中有两个可用性副本,mssql1(主要副本)和mssql2(辅助副本),mssql1的test1数据库与mssql2的test1数据库实时主从同步。

2.3 切换主节点

当需要切换主角色所在服务器时,可在执行以下T-SQL脚本,切换主节点。

3 使用Docker安装MSSQL并配置AlwaysOn高可用组

Docker是一个开源的应用容器引擎,基于golang语言开发,并遵从Apache2.0协议开源。Docker是一种新型虚拟化方式,和传统虚拟机技术相比,有很多优势。Docker采用进程隔离技术,无需消耗额外模拟系统的资源,容器部署启动速度快,迁移扩展便利,利用k8s进行多台服务器批量集群部署。

3.1 安装与配置

3.1.1拉取镜像

运行以下命令,拉取官方MSSQL2019的Docker镜像。

3.1.2运行容器

运行以下命令,运行Docker容器。环境变量“SA_PASSWORD=your_password”,表示SA账户的密码。环境变量“MSSQL_PID=Developer”,表示要指定的版本。环境变量“ACCEPT_EULA=Y”,表示在Docker容器映像中运行的MSSQL的使用将受MSSQL许可证条款的约束,你同意并使用它。

3.3.3 Always On可用性组群集配置

用SSMS连接Docker运行的MSSQL服务,可用性组的配置操作与之前普通安装的可用性组配置一致。

3.2 注意事项

Docker运行数据库,需要volume外挂数据卷,才能长期保存数据,但是如果容器突然崩溃,导致数据库非正常关闭,有可能会损坏数据。所以用Docker部署数据库,适合对与数据丢失不敏感的业务,且对分布式横向扩展部署有需求的场景。

4 结束语

本文详细阐述了SQL Server数据库在Linux系统中高可用组的安装配置,增强了数据库读取横向扩展能力,实现数据在线安全备份,同时增加系统数据库业务的读取服务器节点。如果原本在Windows平台的业务需要迁移到Linux上,这个方案可以避免更换数据库厂家,避免一些不必要的代码改动与兼容性问题。对于数据库业务访问和数据安全的探讨,本文也只是涉及部分内容,希望能与各位同行共同探讨与借鉴。

[1]叶杨婕,官磊.AlwaysOn可用性组在电子选举系统中的应用[J].计算机用,2018,38(S2):258-261+278.

[2]郭绪晶. 服务器集群系统高可用模块设计与实现[D].北京邮电大学,2013.

[3]赵学作.Docker部署SQL Server数据库[J].网络安全和信息化,2019(07):80-81.

猜你喜欢

副本可用性脚本
基于文献计量学的界面设计可用性中外对比研究
酒驾
基于辐射传输模型的GOCI晨昏时段数据的可用性分析
安奇奇与小cool 龙(第二回)
面向流媒体基于蚁群的副本选择算法①
数据库系统shell脚本应用
快乐假期
副本放置中的更新策略及算法*
树形网络中的副本更新策略及算法*
空客A320模拟机FD1+2可用性的讨论