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

打印 上一主题 下一主题

主题 1832|帖子 1832|积分 5496

从配置源到数据库初始化一步步教你在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 7RPMhttps://packages.microsoft.com/config/rhel/7/mssql-server-2019.repohttps://packages.microsoft.com/config/rhel/7/prod.repoyumRed Hat Enterprise Linux 8RPMhttps://packages.microsoft.com/config/rhel/8/mssql-server-2019.repohttps://packages.microsoft.com/config/rhel/8/prod.repoyum 或 dnfUbuntu 20.04 LTSDEBhttps://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.listhttps://packages.microsoft.com/config/ubuntu/20.04/prod.listaptUbuntu 22.04 LTSDEBhttps://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2019.listhttps://packages.microsoft.com/config/ubuntu/22.04/prod.listaptSUSE Linux Enterprise Server 15RPMhttps://packages.microsoft.com/config/sles/15/mssql-server-2019.repohttps://packages.microsoft.com/config/sles/15/prod.repozypper


配置yum安装源

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

SQL Server 2019包含了两个安装源,一个用于SQL Server安装包,另一个包含mssql-tools和unixODBC-devel第三方工具。
  1. curl -o /etc/yum.repos.d/mssql-server-2019.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
  2. curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
  3. cd /etc/yum.repos.d/
  4. ls -l
复制代码
刷新yum缓存

添加新的源之后,我们必要刷新yum工具的缓存,以确保yum工具知道新添加的安装源和软件包。
  1. yum clean all
  2. yum makecache
复制代码
一旦添加好了yum安装源,我们就可以安装 SQL Server 2019数据库及其工具,这里安装分为两种方式,读者可以根据自己实际情况进行选择。

  • 断网安装
如果生产环境规定不能联网,读者可以在生产环境摆设一个内网yum源,或者在联网的机器上先下载好安装包和所有依靠包,然后把所有rpm安装包分发到必要摆设数据库的机器,在摆设机器上使用包管理器或者yum工具进行离线安装。
在能联网的机器上使用下面命令只下载安装包和所有依靠包
  1. yum install -y  mssql-server  --downloadonly  --downloaddir=/usr/local/src/
复制代码
yum命令已经下载好了安装包以及所有的依靠包。

上图可以看到下载好的安装包和所有依靠包,安装包只有229MB大小,比MySQL的二进制包还要小
把所有安装包和依靠包分发到要摆设数据库的机器之后,用下面命令进行安装,安装过程中,yum命令会主动解决安装包的依靠关系。
  1. cd /usr/local/src/
  2. yum  localinstall -y  --nogpgcheck  mssql-server-15.0.4375.4-1.x86_64.rpm
复制代码
下图表现了断网环境下,yum工具也能主动解决依靠而且安装成功,而且安装速度也非常快,适合大批量主动化摆设的场景。

这时间,断网安装完毕
 

  • 联网安装
适合生产环境可以毗连互联网的情况,yum工具会主动毗连yum安装源并下载所需的rpm包并解决依靠标题。
  1. yum install -y mssql-server
复制代码
 

  • 安装第三方工具
第三方工具mssql-tools 包含命令行工具,如 sqlcmd、bcp等。别的,unixODBC-devel 是 ODBC 驱动的开发包。 使用下面命令安装第三方工具:
  1. ACCEPT_EULA=Y yum install -y mssql-tools unixODBC-devel
复制代码

我们必要把目录添加到当前用户的环境变量 PATH 中。添加之后,用户可以在终端中直接运行 sqlcmd 和bcp命令,而不必要每次都输入完整路径。
实行下面命令把安装目录路径添加到当前用户环境变量中并使用source命令立即生效
  1. echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
  2. echo 'export PATH="$PATH:/opt/mssq1-tools/bin"' >> ~/.bashrc
  3. source   ~/.bashrc
  4. source   ~/.bash_profile  
复制代码
 

  • 安装后的的目录结构
安装后的的目录结构和文件位置如下
默认数据目录:/var/opt/mssql/
默认配置文件(不建议修改,保持默认即可):/var/opt/mssql/mssql.conf,
默认体系数据库目录:/var/opt/mssql/data/
默认错误日记和代理日记文件目录:/var/opt/mssql/log/
默认安装目录:/opt/mssql/
其中,数据目录必要在配置阶段进行修改,其他目录和文件保持默认即可。
 

  • 数据库简朴初始化
在安装完SQL Server之后,必要进行简朴的初始化配置。
  1. 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 处于试用期或必要升级到正式版本,可以通过以下命令设置产物密钥

  • 停止 SQL Server 服务
  1. systemctl stop mssql-server
复制代码

  • 运行命令并输入所需的版本和产物密钥
  1. /opt/mssql/bin/mssql-conf set-edition
复制代码
按照提示选择必要的版本(1-10),然后输入 25 个字符的产物密钥,并完成激活:

  • 启动 SQL Server服务
  1. systemctl start mssql-server
复制代码

  • 检查当前版本和授权状态
读者可以通过以下 T-SQL 查询检查 SQL Server 的版本和授权状态
  1. SELECT SERVERPROPERTY('Edition') AS Edition,  --当前版本类型(如 Enterprise)
  2.        SERVERPROPERTY('ProductVersion') AS Version,
  3.        SERVERPROPERTY('LicenseType') AS LicenseType,  --如果显示 DISABLED,表示当前处于180天企业版试用模式
  4.        SERVERPROPERTY('EngineEdition') AS EngineEdition;
  5. GO
复制代码
 

  • 验证安装 我们首先使用下面命令启动和检察SQL Server服务
  1. systemctl start mssql-server
  2. systemctl status mssql-server
复制代码
使用sqlcmd和SSMS工具毗连数据库实例然后查询数据库版本信息,默认端口1433,实行下面命令输入sa的密码即可查询数据库版本号
  1. /opt/mssql-tools/bin/sqlcmd   -S localhost,1433  -U sa  -Q "SELECT @@version"  
  2. --返回以下数据
  3. -------------------------------------------------------------------------------------------
  4. Microsoft SQL Server 2019 (RTM-CU27) (KB5037331) - 15.0.4375.4 (X64) 
  5.  Jun 10 2024 18:00:07 
  6.  Copyright (C) 2019 Microsoft Corporation
  7.  Enterprise Edition (64-bit) on Linux (CentOS Linux 7 (Core)) <X64>                                                                                                  
  8. (1 rows affected)
复制代码

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




配置阶段

在Linux平台上,服务器级别的配置项可以通过mssql-conf命令来设置,而非服务器级别配置项只能使用SQL语句来设置,
在这里说明mssql-conf命令的重要参数如下
  1. /opt/mssql/bin/mssql-conf 
  2. setup             初始化并设置 Microsoft SQL Server。
  3. set               设置某个设置的值
  4. unset             取消设置某个设置的值
  5. list              列出受支持的设置
  6. get               获取节中所有设置的值或各个设置的值
  7. traceflag         启用/禁用一个或多个跟踪标志
  8. set-sa-password   设置系统管理员(SA)密码
  9. set-collation     设置系统数据库的排序规则
  10. validate          验证配置文件
  11. set-edition       设置 SQL Server 实例的版本
复制代码
 

  • 配置默认数据和日记目录
磁盘布局
/data/是一个单独挂载的数据盘,专门用于存放数据的,遵照最佳实践
  1. 数据目录:/data/mssql/1433/database
  2. 备份目录:/data/mssql/1433/dbbackup
  3. 转储目录:/data/mssql/1433/dump
复制代码
为SQL Server指定默认的数据、日记和备份目录,在安装好SQL Server之后会主动创建好mssql这个体系用户
  1. mkdir -p /data/mssql/1433/{dump,dbbackup,database,tempdb}
  2. chown -R mssql:mssql /data/mssql/
复制代码
设置默认数据库、日记和备份目录
  1. /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/1433/database
  2. /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/1433/database
  3. /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /data/mssql/1433/dbbackup
  4. /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /data/mssql/1433/dump
复制代码
 

  • 启用死锁跟踪标志
使用下面命令启用死锁跟踪的相关标志
  1. /opt/mssql/bin/mssql-conf traceflag 1211 1222 1204 on
复制代码
 

  • 配置数据库最大内存
根据调整公式进行数据库最大内存的调整。笔者计算机的内存为3GB,所以这里最大服务器内存设置为3GB。使用下面命令进行设置
  1. /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3000
复制代码


  • 启用 Always On 可用性组(高可用性)
如果必要使用数据库的高可用性集群架构,那么建议开启Always On 可用性组选项,Always On 可用性组是SQL Server的高可用性集群架构功能。 使用下面命令启用Always On 可用性组选项
  1. /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
  1. /opt/mssql/bin/mssql-conf set sqlagent.enabled true
  2. --如果要查看SQL Server Agent服务是否已经启用,可以通过下面SQL命令来查看
  3. SELECT * FROM sys.dm_server_services
复制代码
 

  • 配置高级选项
使用下面SQL语句配置高级选项
  1. EXEC sp_configure 'show advanced options', 1;
  2. RECONFIGURE;
  3. EXEC sp_configure 'contained database authentication', 1;
  4. EXEC sp_configure 'backup checksum default', 1;
  5. EXEC sp_configure 'backup compression default', 1;
  6. EXEC sp_configure 'blocked process threshold (s)', 5;
  7. EXEC sp_configure 'max degree of parallelism', 2;
  8. RECONFIGURE;
复制代码
 

  • 配置TempDB数据库
Linux平台上的SQL Server已经为用户优化了TempDB数据库的数据文件个数,默认是天生4个TempDB数据文件,这里只必要更改 TempDB的数据文件放置位置。
我们之前已经新建好目录/data/mssql/1433/tempdb/,使用下面SQL语句修改TempDB的数据文件位置。
  1. USE master;
  2. GO
  3. ALTER DATABASE tempdb 
  4. MODIFY FILE (NAME = tempdev, FILENAME = '/data/mssql/1433/tempdb/tempdb.mdf');
  5. ALTER DATABASE tempdb 
  6. MODIFY FILE (NAME = tempdev2, FILENAME = '/data/mssql/1433/tempdb/tempdb2.ndf');
  7. ALTER DATABASE tempdb 
  8. MODIFY FILE (NAME = tempdev3, FILENAME = '/data/mssql/1433/tempdb/tempdb3.ndf');
  9. ALTER DATABASE tempdb 
  10. MODIFY FILE (NAME = tempdev4, FILENAME = '/data/mssql/1433/tempdb/tempdb4.ndf');
  11. ALTER DATABASE tempdb 
  12. MODIFY FILE (NAME = templog, FILENAME = '/data/mssql/1433/tempdb/templog.ldf');
复制代码
 
上面先容的配置在设置完毕后,都必要重启SQL Server服务来使配置生效,我们使用下面命令来设置SQL Server服务为主动启动,然后重启SQL Server服务
  1. systemctl enable mssql-server.service
  2. systemctl restart mssql-server.service
复制代码
 

  • 检查配置
我们使用下面SQL语句检查各个配置项,下图可以看到各个配置项都已经配置生效。
  1. SELECT   name,  value,  value_in_use,  is_dynamic,  description 
  2. FROM    sys.configurations 
  3. WHERE  name IN (
  4.         'max degree of parallelism', 
  5.         'max server memory (MB)', 
  6.         'blocked process threshold (s)', 
  7.         'contained database authentication', 
  8.         'max degree of parallelism',  
  9.         'backup compression default', 
  10.         'backup checksum default', 
  11.         'ADR Cleaner Thread Count', 
  12.         'contained database authentication', 
  13.         'Agent XPs'
  14.     );
  15. DBCC TRACESTATUS(1211,1222,1204)
  16. SELECT SERVERPROPERTY('InstanceDefaultDataPath') AS DefaultDataPath;
  17. SELECT SERVERPROPERTY('InstanceDefaultLogPath') AS DefaultLogPath;
  18. SELECT SERVERPROPERTY ('IsHadrEnabled');
  19. SELECT * FROM sys.dm_server_services;
  20. SELECT  'TempDB',  name , physical_name  FROM sys.master_files WHERE database_id = DB_ID('tempdb');
  21. 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会使用其默认配置。下面是设置所有配置项后的配置文件内容
  1. cat /var/opt/mssql/mssql.conf 
  2. [sqlagent]
  3. enabled = true
  4. [EULA]
  5. accepteula = Y
  6. [filelocation]
  7. defaultdatadir = /data/mssql/1433/database
  8. defaultlogdir = /data/mssql/1433/database
  9. defaultbackupdir = /data/mssql/1433/dbbackup
  10. defaultdumpdir = /data/mssql/1433/dump
  11. [traceflag]
  12. traceflag0 = 1211
  13. traceflag1 = 1222
  14. traceflag2 = 1204
  15. [memory]
  16. memorylimitmb = 3000
  17. [hadr]
  18. hadrenabled = true
复制代码
 
 
 </p> 

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表