Skip to content

SQLServer 在 Linux 上安装

安装前准备

1. 系统要求

发行版版本要求
Red Hat Enterprise Linux (RHEL)7.7-7.9, 8.0-8.6, 9.0-9.1
SUSE Linux Enterprise Server (SLES)12 SP5, 15 SP2-SP4
Ubuntu18.04, 20.04, 22.04

2. 硬件要求

组件最低要求推荐配置
CPU1.4 GHz 64位处理器4核或更多
内存2 GB16 GB 或更多
磁盘空间6 GB至少 100 GB SSD
文件系统XFS 或 EXT4XFS(推荐)

3. 软件要求

  • 系统必须已安装以下软件包:
    • curl
    • wget
    • gnupg2
    • ca-certificates
    • tar
    • openssl

4. 安装前检查

  1. 更新系统

    bash
    # RHEL/CentOS
    sudo yum update -y
    
    # Ubuntu
    sudo apt-get update && sudo apt-get upgrade -y
    
    # SLES
    sudo zypper update -y
  2. 检查磁盘空间

    bash
    df -h
  3. 检查内存

    bash
    free -h
  4. 规划存储

    • 数据文件和日志文件建议分开存储
    • 考虑使用LVM或RAID 10保护数据
    • 使用SSD提高性能

安装步骤

1. 使用包管理器安装

RHEL/CentOS

bash
# 添加Microsoft SQL Server仓库
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo

# 安装SQL Server
sudo yum install -y mssql-server

# 运行配置脚本
sudo /opt/mssql/bin/mssql-conf setup

Ubuntu

bash
# 导入公共存储库GPG密钥
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# 添加Microsoft SQL Server仓库
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"

# 安装SQL Server
sudo apt-get update
sudo apt-get install -y mssql-server

# 运行配置脚本
sudo /opt/mssql/bin/mssql-conf setup

SLES

bash
# 添加Microsoft SQL Server仓库
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo

# 刷新存储库缓存
sudo zypper --gpg-auto-import-keys refresh

# 安装SQL Server
sudo zypper install -y mssql-server

# 运行配置脚本
sudo /opt/mssql/bin/mssql-conf setup

2. 配置SQL Server

运行配置脚本时,需要选择:

  1. 版本选择

    • Enterprise
    • Standard
    • Evaluation
    • Developer
    • Web
  2. 语言选择

    • 0: English
    • 1: Deutsch
    • 2: Español
    • 3: Français
    • 4: Italiano
    • 5: 日本語
    • 6: 한국어
    • 7: Português (Brasil)
    • 8: Русский
    • 9: 中文(简体)
    • 10: 中文(繁體)
  3. 设置SA密码

    • 密码必须至少8个字符长
    • 包含大小写字母
    • 包含数字
    • 包含特殊字符
  4. 确认配置:输入"Yes"确认配置

3. 验证安装

bash
# 检查SQL Server服务状态
systemctl status mssql-server --no-pager

# 确认SQL Server正在监听端口
sudo ss -tuln | grep 1433

4. 安装SQL Server命令行工具

RHEL/CentOS

bash
# 添加Microsoft SQL Server工具仓库
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo

# 安装SQL Server命令行工具
sudo yum install -y mssql-tools unixODBC-devel

# 将工具路径添加到环境变量
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

Ubuntu

bash
# 添加Microsoft SQL Server工具仓库
sudo apt-get update
sudo apt-get install -y curl
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo add-apt-repository "$(curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list)"

# 安装SQL Server命令行工具
sudo apt-get update
sudo apt-get install -y mssql-tools unixodbc-dev

# 将工具路径添加到环境变量
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

SLES

bash
# 添加Microsoft SQL Server工具仓库
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/prod.repo

# 刷新存储库缓存
sudo zypper --gpg-auto-import-keys refresh

# 安装SQL Server命令行工具
sudo zypper install -y mssql-tools unixODBC-devel

# 将工具路径添加到环境变量
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

5. 测试连接

bash
# 使用sqlcmd连接到本地SQL Server实例
sqlcmd -S localhost -U sa -P '<YourPassword>'

# 执行简单查询
SELECT @@VERSION;
GO

安装后配置

1. 配置防火墙

RHEL/CentOS

bash
# 开放SQL Server默认端口1433
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

Ubuntu

bash
# 安装ufw防火墙(如果未安装)
sudo apt-get install -y ufw

# 启用防火墙
sudo ufw enable

# 开放SQL Server默认端口1433
sudo ufw allow 1433/tcp

# 验证配置
sudo ufw status

SLES

bash
# 开放SQL Server默认端口1433
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

2. 配置SQL Server选项

使用mssql-conf工具配置SQL Server选项:

bash
# 设置最大内存为12GB
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 12288

# 重启SQL Server服务
sudo systemctl restart mssql-server

3. 配置数据目录(可选)

默认情况下,SQL Server数据文件存储在/var/opt/mssql/data,日志文件存储在/var/opt/mssql/log。如果需要更改位置:

bash
# 停止SQL Server服务
sudo systemctl stop mssql-server

# 创建新的数据和日志目录
sudo mkdir -p /data/mssql/data
sudo mkdir -p /data/mssql/log
sudo mkdir -p /data/mssql/backup

# 设置权限
sudo chown -R mssql:mssql /data/mssql
sudo chmod -R 700 /data/mssql

# 复制现有数据文件
sudo cp -R /var/opt/mssql/data/* /data/mssql/data/
sudo cp -R /var/opt/mssql/log/* /data/mssql/log/

# 配置SQL Server使用新目录
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql/data
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql/log
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /data/mssql/backup

# 启动SQL Server服务
sudo systemctl start mssql-server

4. 启用SQL Server代理(可选)

bash
# 启用SQL Server代理
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true

# 重启SQL Server服务
sudo systemctl restart mssql-server

最佳实践

1. 安全配置

  • 禁用不必要的服务和功能
  • 定期更改sa密码
  • 限制sa账户的使用
  • 启用登录审核
  • 配置强密码策略
  • 启用TLS加密

2. 性能优化

  • 使用SSD存储数据和日志文件
  • 分离TempDB到独立磁盘
  • 配置合适的最大服务器内存
  • 启用Instant File Initialization
  • 配置合适的自动增长设置
  • 使用XFS文件系统

3. 高可用性考虑

  • 对于生产环境,考虑配置Always On可用性组
  • 对于关键业务,考虑配置故障转移集群
  • 定期备份数据库

4. 监控与维护

  • 配置定期备份
  • 监控磁盘空间
  • 监控内存使用情况
  • 定期更新统计信息
  • 定期重建索引

常见问题与解决方案

1. 安装失败,提示缺少依赖包

解决方案

  • 确保系统已更新到最新版本
  • 检查是否添加了正确的仓库
  • 对于缺少的依赖包,手动安装:
    bash
    # RHEL/CentOS
    sudo yum install -y <missing-package>
    
    # Ubuntu
    sudo apt-get install -y <missing-package>
    
    # SLES
    sudo zypper install -y <missing-package>

2. 无法连接到SQL Server实例

排查步骤

  1. 检查SQL Server服务是否正在运行
  2. 检查防火墙是否允许SQL Server端口
  3. 检查TCP/IP协议是否启用
  4. 检查连接字符串是否正确
  5. 检查账户权限

3. 安装后无法启动SQL Server服务

解决方案

  • 检查系统日志:journalctl -u mssql-server --no-pager
  • 检查数据目录权限:确保mssql用户有读写权限
  • 检查磁盘空间是否足够
  • 检查配置文件:/var/opt/mssql/mssql.conf

4. 如何升级SQL Server版本

升级步骤

  1. 备份所有数据库和系统数据库
  2. 更新SQL Server包:
    bash
    # RHEL/CentOS
    sudo yum update -y mssql-server
    
    # Ubuntu
    sudo apt-get update && sudo apt-get upgrade -y mssql-server
    
    # SLES
    sudo zypper update -y mssql-server
  3. 重启SQL Server服务
  4. 验证所有数据库状态
  5. 更新统计信息和重建索引

卸载SQL Server

1. 卸载SQL Server

bash
# RHEL/CentOS
sudo yum remove -y mssql-server

# Ubuntu
sudo apt-get remove -y mssql-server
sudo apt-get purge -y mssql-server

# SLES
sudo zypper remove -y mssql-server

2. 删除数据文件

bash
# 删除SQL Server数据和日志文件
sudo rm -rf /var/opt/mssql

# 如果更改了数据目录,也需要删除
sudo rm -rf /data/mssql

总结

SQLServer在Linux上的安装过程相对简单,通过包管理器可以快速完成安装和配置。DBA需要根据业务需求和系统资源,合理配置SQLServer选项,遵循最佳实践,确保SQLServer实例的安全、稳定和高效运行。随着SQLServer在Linux上的支持不断增强,越来越多的企业开始在Linux环境中部署SQLServer,享受Linux的稳定性和灵活性。