阅读量:36
CentOS与SQL Server集成解决方案
一、安装前准备
- 系统要求:确保CentOS版本为7或更高(推荐CentOS Stream 8/9),内存≥2GB,硬盘空间≥10GB,网络连接正常(用于下载安装包)。
- 依赖包安装:通过YUM安装必要依赖,避免后续配置错误:
sudo yum install -y wget openssl11-devel libaio libcurl libxml2-devel bzip2-devel libjpeg-turbo-devel freetype-devel libpng-devel - 添加SQL Server YUM源:根据CentOS版本选择对应repo文件(以CentOS 7为例):
sudo curl -o /etc/yum.repos.d/mssql-release.repo https://packages.microsoft.com/config/rhel/7/prod.repo sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc # 导入Microsoft GPG密钥
二、SQL Server安装与初始化
- 安装SQL Server核心包:通过YUM直接安装SQL Server(以2019版本为例):
sudo yum install -y mssql-server - 配置实例参数:运行配置脚本,设置SA账户密码(需符合复杂度要求,如包含大小写字母、数字和特殊字符)及版本类型(Developer/Express/Standard):
sudo /opt/mssql/bin/mssql-conf setup - 启动服务并设置开机自启:
sudo systemctl start mssql-server # 启动服务 sudo systemctl enable mssql-server # 开机自启
三、客户端工具安装(命令行与图形化)
- 安装sqlcmd(命令行工具):用于SQL Server的命令行操作:
sudo yum install -y mssql-tools unixodbc-devel echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc # 添加环境变量 source ~/.bashrc # 生效配置 - 验证连接:使用SA账户连接本地实例(默认端口1433):
连接成功后,可执行sqlcmd -S localhost -U sa -P 'YourStrongPassword'SELECT @@VERSION;查看SQL Server版本信息。
四、高级配置(可选但推荐)
- 启用SQL Server代理:用于调度作业(如备份、维护任务):
USE master; EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'Agent XPs', 1; RECONFIGURE; - 配置防火墙允许远程访问:若需远程连接,需开放1433端口:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent # 永久添加端口 sudo firewall-cmd --reload # 重新加载防火墙规则 - 修改默认端口(增强安全性):避免默认端口1433被扫描攻击:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'tcp port', 1434; -- 修改为新端口(如1434) RECONFIGURE; sudo systemctl restart mssql-server # 重启服务使配置生效 - 删除匿名登录(减少安全风险):
EXEC sp_droplogin 'ANONYMOUS'; -- 删除匿名账户
五、性能调优
- 内存配置:限制SQL Server最大内存使用,避免占用过多系统资源(如设置为8GB):
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'max server memory (MB)', 8192; RECONFIGURE; - 查询优化:
- 创建合适的索引(如为常用查询字段添加索引);
- 避免使用游标,改用集合操作(如
SELECT、INSERT INTO ... SELECT); - 优化查询语句(如避免
SELECT *,只查询所需字段)。
- TempDB优化:将TempDB文件分散到不同磁盘(如4个数据文件),减少争用:
ALTER DATABASE tempdb MODIFY FILE (NAME = 'tempdev', FILENAME = '/var/opt/mssql/tempdb/tempdb1.mdf'); ALTER DATABASE tempdb ADD FILE (NAME = 'tempdev2', FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf');
六、安全性保障
- 使用强密码策略:SA账户及其他管理员账户需设置复杂密码,定期更换。
- 限制访问控制:通过防火墙规则限制SQL Server端口(1433/自定义端口)的访问IP(如仅允许公司内网IP访问)。
- 加密数据:
- 静态数据加密:启用透明数据加密(TDE),加密数据库文件;
- 传输加密:使用SSL/TLS证书加密客户端与服务器之间的数据传输。
- 定期更新补丁:及时安装SQL Server安全更新,修复已知漏洞。
七、备份与恢复策略
- 定期备份:使用SSMS或
sqlcmd创建完整备份(每周)、差异备份(每日)和事务日志备份(每小时):BACKUP DATABASE [YourDatabase] TO DISK = '/var/opt/mssql/backup/YourDatabase_Full.bak' WITH INIT; BACKUP DATABASE [YourDatabase] TO DISK = '/var/opt/mssql/backup/YourDatabase_Diff.bak' WITH DIFFERENTIAL; BACKUP LOG [YourDatabase] TO DISK = '/var/opt/mssql/backup/YourDatabase_Log.trn'; - 测试恢复:定期模拟恢复过程(如从备份文件还原数据库),确保备份有效性。
八、监控与维护
- 资源占用监控:通过SQL Server动态管理视图(DMV)监控内存、CPU使用情况:
-- 查看系统内存使用 SELECT total_physical_memory_kb/1024 AS Total_Memory_MB, available_physical_memory_kb/1024 AS Available_Memory_MB FROM sys.dm_os_sys_memory; -- 查看数据库内存使用 SELECT d.name AS Database_Name, SUM(a.total_pages)*8/1024 AS Memory_Usage_MB FROM sys.dm_os_memory_clerks a JOIN sys.databases d ON a.database_id = d.database_id GROUP BY d.name ORDER BY Memory_Usage_MB DESC; - 维护任务:定期执行索引重建(减少碎片)、统计信息更新(优化查询计划):
-- 重建索引(针对特定表) ALTER INDEX ALL ON [YourTable] REBUILD; -- 更新统计信息 UPDATE STATISTICS [YourTable];