外观
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 |
| Ubuntu | 18.04, 20.04, 22.04 |
2. 硬件要求
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1.4 GHz 64位处理器 | 4核或更多 |
| 内存 | 2 GB | 16 GB 或更多 |
| 磁盘空间 | 6 GB | 至少 100 GB SSD |
| 文件系统 | XFS 或 EXT4 | XFS(推荐) |
3. 软件要求
- 系统必须已安装以下软件包:
- curl
- wget
- gnupg2
- ca-certificates
- tar
- openssl
4. 安装前检查
更新系统:
bash# RHEL/CentOS sudo yum update -y # Ubuntu sudo apt-get update && sudo apt-get upgrade -y # SLES sudo zypper update -y检查磁盘空间:
bashdf -h检查内存:
bashfree -h规划存储:
- 数据文件和日志文件建议分开存储
- 考虑使用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 setupUbuntu
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 setupSLES
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 setup2. 配置SQL Server
运行配置脚本时,需要选择:
版本选择:
- Enterprise
- Standard
- Evaluation
- Developer
- Web
语言选择:
- 0: English
- 1: Deutsch
- 2: Español
- 3: Français
- 4: Italiano
- 5: 日本語
- 6: 한국어
- 7: Português (Brasil)
- 8: Русский
- 9: 中文(简体)
- 10: 中文(繁體)
设置SA密码:
- 密码必须至少8个字符长
- 包含大小写字母
- 包含数字
- 包含特殊字符
确认配置:输入"Yes"确认配置
3. 验证安装
bash
# 检查SQL Server服务状态
systemctl status mssql-server --no-pager
# 确认SQL Server正在监听端口
sudo ss -tuln | grep 14334. 安装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 ~/.bashrcUbuntu
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 ~/.bashrcSLES
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 ~/.bashrc5. 测试连接
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 --reloadUbuntu
bash
# 安装ufw防火墙(如果未安装)
sudo apt-get install -y ufw
# 启用防火墙
sudo ufw enable
# 开放SQL Server默认端口1433
sudo ufw allow 1433/tcp
# 验证配置
sudo ufw statusSLES
bash
# 开放SQL Server默认端口1433
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload2. 配置SQL Server选项
使用mssql-conf工具配置SQL Server选项:
bash
# 设置最大内存为12GB
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 12288
# 重启SQL Server服务
sudo systemctl restart mssql-server3. 配置数据目录(可选)
默认情况下,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-server4. 启用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实例
排查步骤:
- 检查SQL Server服务是否正在运行
- 检查防火墙是否允许SQL Server端口
- 检查TCP/IP协议是否启用
- 检查连接字符串是否正确
- 检查账户权限
3. 安装后无法启动SQL Server服务
解决方案:
- 检查系统日志:
journalctl -u mssql-server --no-pager - 检查数据目录权限:确保mssql用户有读写权限
- 检查磁盘空间是否足够
- 检查配置文件:
/var/opt/mssql/mssql.conf
4. 如何升级SQL Server版本
升级步骤:
- 备份所有数据库和系统数据库
- 更新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 - 重启SQL Server服务
- 验证所有数据库状态
- 更新统计信息和重建索引
卸载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-server2. 删除数据文件
bash
# 删除SQL Server数据和日志文件
sudo rm -rf /var/opt/mssql
# 如果更改了数据目录,也需要删除
sudo rm -rf /data/mssql总结
SQLServer在Linux上的安装过程相对简单,通过包管理器可以快速完成安装和配置。DBA需要根据业务需求和系统资源,合理配置SQLServer选项,遵循最佳实践,确保SQLServer实例的安全、稳定和高效运行。随着SQLServer在Linux上的支持不断增强,越来越多的企业开始在Linux环境中部署SQLServer,享受Linux的稳定性和灵活性。
