从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019

从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019

 

安装内容

数据库版本:SQL Server 2019 企业版

操作系统:CentOS 7.9

配置如下图:

安装环境准备

本文演示的Linux发行版是CentOS 7.9。接下来是SQL Server 2019的部署细节,包括安装源的配置、安装SQL Server数据库、配置数据库服务以及一些高级选项设置。

安装阶段

配置安装源

SQL Server支持下面的Linux发行版,下面是各个Linux发行版针对SQL Server 2019的安装源,红帽系统的yum地址同样适用于CentOS系统

Linux 发行版 安装包格式 安装源地址 第三方工具源地址 包管理系统
Red Hat Enterprise Linux 7 RPM https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/7/prod.repo yum
Red Hat Enterprise Linux 8 RPM https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/8/prod.repo yum 或 dnf
Ubuntu 20.04 LTS DEB https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list https://packages.microsoft.com/config/ubuntu/20.04/prod.list apt
Ubuntu 22.04 LTS DEB https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2019.list https://packages.microsoft.com/config/ubuntu/22.04/prod.list apt
SUSE Linux Enterprise Server 15 RPM https://packages.microsoft.com/config/sles/15/mssql-server-2019.repo https://packages.microsoft.com/config/sles/15/prod.repo zypper



配置yum安装源

CentOS 7.9平台上添加微软官方的yum源。
我们使用curl命令来下载.repo文件,然后添加SQL Server 2019的yum源到系统中。

下载.repo文件

SQL Server 2019包含了两个安装源,一个用于SQL Server安装包,另一个包含mssql-tools和unixODBC-devel第三方工具。

curl -o /etc/yum.repos.d/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
cd /etc/yum.repos.d/
ls -l

刷新yum缓存

添加新的源之后,我们需要刷新yum工具的缓存,以确保yum工具知道新添加的安装源和软件包。

yum clean all
yum makecache

一旦添加好了yum安装源,我们就可以安装 SQL Server 2019数据库及其工具,这里安装分为两种方式,读者可以根据自己实际情况进行选择。

  1. 断网安装

如果生产环境规定不能联网,读者可以在生产环境部署一个内网yum源,或者在联网的机器上先下载好安装包和所有依赖包,然后把所有rpm安装包分发到需要部署数据库的机器,在部署机器上使用包管理器或者yum工具进行离线安装。
在能联网的机器上使用下面命令只下载安装包和所有依赖包

yum install -y  mssql-server  --downloadonly  --downloaddir=/usr/local/src/

yum命令已经下载好了安装包以及所有的依赖包。

上图可以看到下载好的安装包和所有依赖包,安装包只有229MB大小,比MySQL的二进制包还要小

把所有安装包和依赖包分发到要部署数据库的机器之后,用下面命令进行安装,安装过程中,yum命令会自动解决安装包的依赖关系。

cd /usr/local/src/
yum  localinstall -y  --nogpgcheck  mssql-server-15.0.4375.4-1.x86_64.rpm

下图显示了断网环境下,yum工具也能自动解决依赖并且安装成功,并且安装速度也非常快,适合大批量自动化部署的场景。

这时候,断网安装完毕

 

  1. 联网安装

适合生产环境可以连接互联网的情况,yum工具会自动连接yum安装源并下载所需的rpm包并解决依赖问题。

yum install -y mssql-server

 

  • 安装第三方工具

第三方工具mssql-tools 包含命令行工具,如 sqlcmd、bcp等。另外,unixODBC-devel 是 ODBC 驱动的开发包。 使用下面命令安装第三方工具:

ACCEPT_EULA=Y yum install -y mssql-tools unixODBC-devel

我们需要把目录添加到当前用户的环境变量 PATH 中。添加之后,用户可以在终端中直接运行 sqlcmd 和bcp命令,而不需要每次都输入完整路径。

执行下面命令把安装目录路径添加到当前用户环境变量中并使用source命令立刻生效

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssq1-tools/bin"' >> ~/.bashrc
source   ~/.bashrc
source   ~/.bash_profile  

 

  • 安装后的的目录结构

安装后的的目录结构和文件位置如下

默认数据目录:/var/opt/mssql/

默认配置文件(不建议修改,保持默认即可):/var/opt/mssql/mssql.conf,

默认系统数据库目录:/var/opt/mssql/data/

默认错误日志和代理日志文件目录:/var/opt/mssql/log/

默认安装目录:/opt/mssql/

其中,数据目录需要在配置阶段进行修改,其他目录和文件保持默认即可。

 

  • 数据库简单初始化

在安装完SQL Server之后,需要进行简单的初始化配置。

MSSQL_SA_PASSWORD='******' MSSQL_PID=Enterprise  ACCEPT_EULA=Y SQL_INSTALL_AGENT=Y  /opt/mssql/bin/mssql-conf -n setup

数据库安装完毕之后需要使用几个简单参数进行初始化配置,数据库初始化配置完毕之后,就会自动启动SQL Server服务。

 

  • 数据库初始化配置

参数解释如下

MSSQL_SA_PASSWORD:设置sa用户的密码,命令中的*号需要替换为实际的密码

MSSQL_PID:设置产品密钥

ACCEPT_EULA:接受产品许可条款

SQL_INSTALL_AGENT:安装SQL代理组件

 

  • MSSQL_PID 参数的说明

MSSQL_PID 是用来指定 SQL Server 版本或激活模式的参数,该参数有以下几种取值:

Evaluation:180 天试用版,提供企业版的功能,但到期后停止运行。

Developer:免费版,开发者版,功能和 Enterprise 完全相同,不适用于生产环境。

Express:免费版,具有一定的限制。

Web:网络版,付费版,为托管服务提供商设计。

Standard:标准版,付费版,功能较少但适合中小型企业。

Enterprise:企业版,付费版,提供完整的 SQL Server 功能集。

EnterpriseCore:核心版本的企业版,付费版,按CPU核心数付费。

ProductKey:输入 25 个字符的产品密钥来激活上面提到的特定版本。

 

  • 授权和评估模式

当用户输入产品密钥的时候,SQL Server会根据产品密钥激活相应的版本,如果用户没有输入产品密钥,只是输入特定的版本,那么就会进入对应版本的180天试用版,默认激活的是企业版,试用期结束后,SQL Server 将停止工作,直到输入有效的产品密钥再次进行激活。可以使用Windows版的SQL Server盗版密钥输入到Linux版。

产品重新激活 如果 SQL Server 处于试用期或需要升级到正式版本,可以通过以下命令设置产品密钥

  1. 停止 SQL Server 服务
systemctl stop mssql-server
  1. 运行命令并输入所需的版本和产品密钥
/opt/mssql/bin/mssql-conf set-edition

按照提示选择需要的版本(1-10),然后输入 25 个字符的产品密钥,并完成激活:

  1. 启动 SQL Server服务
systemctl start mssql-server
  1. 检查当前版本和授权状态

读者可以通过以下 T-SQL 查询检查 SQL Server 的版本和授权状态

SELECT SERVERPROPERTY('Edition') AS Edition,  --当前版本类型(如 Enterprise)
       SERVERPROPERTY('ProductVersion') AS Version,
       SERVERPROPERTY('LicenseType') AS LicenseType,  --如果显示 DISABLED,表示当前处于180天企业版试用模式
       SERVERPROPERTY('EngineEdition') AS EngineEdition;
GO

 

  • 验证安装 我们首先使用下面命令启动和查看SQL Server服务
systemctl start mssql-server
systemctl status mssql-server

使用sqlcmd和SSMS工具连接数据库实例然后查询数据库版本信息,默认端口1433,执行下面命令输入sa的密码即可查询数据库版本号

/opt/mssql-tools/bin/sqlcmd   -S localhost,1433  -U sa  -Q "SELECT @@version"  
--返回以下数据
-------------------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM-CU27) (KB5037331) - 15.0.4375.4 (X64) 
 Jun 10 2024 18:00:07 
 Copyright (C) 2019 Microsoft Corporation
 Enterprise Edition (64-bit) on Linux (CentOS Linux 7 (Core)) <X64>                                                                                                  (1 rows affected)

在SSMS管理器里会看到有Linux的企鹅图标



配置阶段

在Linux平台上,服务器级别的配置项可以通过mssql-conf命令来设置,而非服务器级别配置项只能使用SQL语句来设置,

在这里说明mssql-conf命令的主要参数如下

/opt/mssql/bin/mssql-conf 
setup             初始化并设置 Microsoft SQL Server。
set               设置某个设置的值
unset             取消设置某个设置的值
list              列出受支持的设置
get               获取节中所有设置的值或各个设置的值
traceflag         启用/禁用一个或多个跟踪标志
set-sa-password   设置系统管理员(SA)密码
set-collation     设置系统数据库的排序规则
validate          验证配置文件
set-edition       设置 SQL Server 实例的版本

 

  • 配置默认数据和日志目录

磁盘布局
/data/是一个单独挂载的数据盘,专门用于存放数据的,遵循最佳实践

数据目录:/data/mssql/1433/database
备份目录:/data/mssql/1433/dbbackup
转储目录:/data/mssql/1433/dump

为SQL Server指定默认的数据、日志和备份目录,在安装好SQL Server之后会自动创建好mssql这个系统用户

mkdir -p /data/mssql/1433/{dump,dbbackup,database,tempdb}
chown -R mssql:mssql /data/mssql/

设置默认数据库、日志和备份目录

/opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/1433/database
/opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/1433/database
/opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /data/mssql/1433/dbbackup
/opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /data/mssql/1433/dump

 

  • 启用死锁跟踪标志

使用下面命令启用死锁跟踪的相关标志

/opt/mssql/bin/mssql-conf traceflag 1211 1222 1204 on

 

  • 配置数据库最大内存

根据调整公式进行数据库最大内存的调整。笔者计算机的内存为3GB,所以这里最大服务器内存设置为3GB。使用下面命令进行设置

/opt/mssql/bin/mssql-conf set memory.memorylimitmb 3000

  • 启用 Always On 可用性组(高可用性)

如果需要使用数据库的高可用性集群架构,那么建议开启Always On 可用性组选项,Always On 可用性组是SQL Server的高可用性集群架构功能。 使用下面命令启用Always On 可用性组选项

/opt/mssql/bin/mssql-conf set hadr.hadrenabled true

 

  • 启用 SQL Server Agent

SQL Server Agent 是用于调度和自动化 SQL Server 任务的服务。在Linux平台上,微软把SQL Server服务和SQL Server Agent服务合二为一,默认在安装完SQL Server之后已经自带了SQL Server Agent服务,这个跟Windows平台上的SQL Server有比较大的区别。 使用以下命令启用 SQL Server Agent

/opt/mssql/bin/mssql-conf set sqlagent.enabled true--如果要查看SQL Server Agent服务是否已经启用,可以通过下面SQL命令来查看
SELECT * FROM sys.dm_server_services

 

  • 配置高级选项

使用下面SQL语句配置高级选项

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'contained database authentication', 1;
EXEC sp_configure 'backup checksum default', 1;
EXEC sp_configure 'backup compression default', 1;
EXEC sp_configure 'blocked process threshold (s)', 5;
EXEC sp_configure 'max degree of parallelism', 2;
RECONFIGURE;

 

  • 配置TempDB数据库

Linux平台上的SQL Server已经为用户优化了TempDB数据库的数据文件个数,默认是生成4个TempDB数据文件,这里只需要更改 TempDB的数据文件放置位置。
我们之前已经新建好目录/data/mssql/1433/tempdb/,使用下面SQL语句修改TempDB的数据文件位置。

USE master;
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = '/data/mssql/1433/tempdb/tempdb.mdf');
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev2, FILENAME = '/data/mssql/1433/tempdb/tempdb2.ndf');
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev3, FILENAME = '/data/mssql/1433/tempdb/tempdb3.ndf');
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev4, FILENAME = '/data/mssql/1433/tempdb/tempdb4.ndf');
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = '/data/mssql/1433/tempdb/templog.ldf');

 

上面介绍的配置在设置完毕后,都需要重启SQL Server服务来使配置生效,我们使用下面命令来设置SQL Server服务为自动启动,然后重启SQL Server服务

systemctl enable mssql-server.service
systemctl restart mssql-server.service

 

  • 检查配置

我们使用下面SQL语句检查各个配置项,下图可以看到各个配置项都已经配置生效。

SELECT   name,  value,  value_in_use,  is_dynamic,  description 
FROM    sys.configurations 
WHERE  name IN (
        'max degree of parallelism', 
        'max server memory (MB)', 
        'blocked process threshold (s)', 
        'contained database authentication', 
        'max degree of parallelism',  
        'backup compression default', 
        'backup checksum default', 
        'ADR Cleaner Thread Count', 
        'contained database authentication', 
        'Agent XPs'
    );
DBCC TRACESTATUS(1211,1222,1204)
SELECT SERVERPROPERTY('InstanceDefaultDataPath') AS DefaultDataPath;
SELECT SERVERPROPERTY('InstanceDefaultLogPath') AS DefaultLogPath;
SELECT SERVERPROPERTY ('IsHadrEnabled');
SELECT * FROM sys.dm_server_services;
SELECT  'TempDB',  name , physical_name  FROM sys.master_files WHERE database_id = DB_ID('tempdb');
systemctl restart mssql-server.service

下上图可以看到目录配置是正常的

另外,从图可以看到,SQL Server Agent服务也已经正常启用。

 

  • 主要配置文件

Linux平台上,mssql.conf是SQL Server的主要配置文件,用于管理各种设置。 该文件位于/var/opt/mssql/mssql.conf路径下,通过调整其中配置项可以控制SQL Server的行为和特性。

配置文件是基于节(section)的结构,常见的节包括: [sqlagent]:控制SQL Server代理服务的设置。

[EULA]:管理最终用户许可协议的接受情况。

[filelocation]:定义数据库文件、日志文件、备份文件和转储文件的默认存储位置。

[traceflag]:设置跟踪标志,用于调试和性能优化。

[memory]:管理SQL Server使用的内存设置。

[hadr]:用于启用或禁用高可用性功能,如Always On。

如果配置文件中没有某些设置项,SQL Server会使用其默认配置。下面是设置所有配置项后的配置文件内容

cat /var/opt/mssql/mssql.conf 
[sqlagent]
enabled = true[EULA]
accepteula = Y[filelocation]
defaultdatadir = /data/mssql/1433/database
defaultlogdir = /data/mssql/1433/database
defaultbackupdir = /data/mssql/1433/dbbackup
defaultdumpdir = /data/mssql/1433/dump[traceflag]
traceflag0 = 1211
traceflag1 = 1222
traceflag2 = 1204[memory]
memorylimitmb = 3000[hadr]
hadrenabled = true

 

 

 

 

本文版权归作者所有,未经作者同意不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/833255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.11.13 Gusare 编程日志

2024.11.13 Gusare 编程日志前言 摆了好多天,没写日志,嘻嘻 最近一直在按顺序刷luogu的题单,刷完了【入门3循环】【入门4数组】【算法1-6 二分】【数据结构1-1 线性表】 看着很多,实际都是手速题,博主是大水比 有个叫许根瑞的家伙和我打赌2024前要是我没上蓝我就得请他吃甜…

如何在微信小程序中使用less开发

VScode的Esay-less插件第一步:直接先在 vscode 安装 easy-less 插件 第二步:点击微信开发者工具的扩展按钮,再点击扩展下的三个小点,选择从已解包的扩展文件夹安装第三步:选择这个less文件夹第四步:设置输出.wxss到这里还差最后一步,因为Easy-less,默认输出的css,但是…

WLAN学习-11.13

来源:1.无线网络发展历程2.WLAN频段类比人:迈的步子大,频率小;迈的步子小,频率大。 迈的步子大,穿墙能力强,适合应用在更加复杂的环境中,用2.4连信号会更好802.11协议介绍

iman——冲刺日志(第一天)

团队成员分工与进度组别 成员 完成的任务 完成任务所用时间 (小时) 剩余时间 (小时)前端 阿依娜孜 完成了“行程总览”页面的设计与制作,实现了页面的基本布局和功能框架。 5 4前端 郭剑敏 完成了“账单管理”页面的设计与开发,包括添加账单记录的功能和行李清单页面的基本框…

关于北航程设考试题目的一点研究

评价 没想到北航程设题竟然这么有实力,难怪会作弊 一种可能是对的做法 不难想到一个贪心,每次都作弊,直到不能作弊时,就停止作弊 然后接下来想到直接二分作弊次数,然后剩下的时间都不作弊,判断就看最终警觉值会不会\(<L\) 仔细一想,因为警觉值应该不能为负数,所以有…

免费云服务器推荐——阿贝云

阿贝云的免费虚拟主机和免费云服务器为我提供了稳定的性能和简便的操作体验,适合个人和小型网站使用。虽然免费资源有限,但其服务质量和性能让我非常满意。强烈推荐给有需求的朋友!访问阿贝云官网申请吧!

golang接收alertmanager的告警并发送钉钉

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.配置钉钉 1.钉钉自定义机器人接入参考文档参考链接:https://open.dingtalk.com/document/orgapp/custom-robot-access2.配置钉钉机器人如上图所示,注册钉钉拉群聊,然后添加“自定义机器人”,并配置自定…

python第八章课后习题

8.4 求微分方程组的数值解 x=-x3-y,x(0)=1,y=x-y3,y(0)=0.5,0<=t<=30,要求画出x(t)和y(t)的解曲线图形,再相平面上画出轨线点击查看代码 import matplotlib.pyplot as plt from scipy.integrate import solve_ivpdef system(t, state):x, y = statedxdt = -x**3 - …

手动安装ROS2

手动安装ROS2本文以ROS2-jazzy作为示例版本,默认已经安装好ubuntu24.04设置区域 确保你的语言环境支持UTF-8。只要系统是UTF-8语言环境,基本没有问题,可以不设置。 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-loc…

第七章

7.1 在区间[0,10]上等间距取1000个点Xi(i为下标,i=1,2,3,...,1000),并计算在这些点Xi处函数g(x)=((3x2+4x+6)sinx)/(x2+8x+6)的函数值yi(i为下标),利用观测点(Xi,Yi)(i=1,2,3,...,1000),求三次样条插值函数h(x),并求积分g(x)从0到10和h(x)从0到10。点击查看代码 impor…

识海社区打卡-4

今天打卡大模拟 Problem - 1365D - Codeforces大模拟确实恶心人,但作为最臭的屎平时还是得多吃点,大模拟的特点是思路不算很难但代码真的很长很长,一个不小心哪里写得有问题查错就是半天,各种细节都要很注意,对于提升自己查错能力和快速写题能力还是很有帮助的,这种屎虽然…