从配置源到数据库初始化一步步教你在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第三方工具。- 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数据库及其工具,这里安装分为两种方式,读者可以根据自己实际情况进行选择。
如果生产环境规定不能联网,读者可以在生产环境摆设一个内网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工具也能主动解决依靠而且安装成功,而且安装速度也非常快,适合大批量主动化摆设的场景。
这时间,断网安装完毕
适合生产环境可以毗连互联网的情况,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 是用来指定 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 处于试用期或必要升级到正式版本,可以通过以下命令设置产物密钥
- systemctl stop mssql-server
复制代码- /opt/mssql/bin/mssql-conf set-edition
复制代码 按照提示选择必要的版本(1-10),然后输入 25 个字符的产物密钥,并完成激活:
- systemctl start mssql-server
复制代码 读者可以通过以下 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 可用性组是SQL Server的高可用性集群架构功能。 使用下面命令启用Always On 可用性组选项- /opt/mssql/bin/mssql-conf set hadr.hadrenabled true
复制代码
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;
复制代码
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
复制代码
</p>
本文版权归作者所有,未经作者同意不得转载。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |