悠悠楠杉
CentOS下SQLServer数据库迁移全流程指南:从备份到灾备的深度实践
一、迁移前的关键准备工作
在CentOS 7/8系统上进行SQL Server迁移,首先需要确认基础环境兼容性。根据微软官方文档,SQL Server 2017及以上版本才支持Linux平台。我们最近在金融级系统迁移中验证的关键步骤包括:
版本核对:bash
查看当前SQL Server版本
sudo /opt/mssql/bin/mssql-conf -h | grep 'Version'
存储规划:
- 建议采用LVM分区方案便于后期扩容
- 数据库文件目录应独立挂载(建议/var/opt/mssql采用XFS文件系统)
网络调优:bash
修改内核参数提升网络性能
echo 'net.core.rmem_max=4194304' >> /etc/sysctl.conf
sysctl -p
二、实战迁移六步法
2.1 源数据库备份加密
采用Copy-Only模式避免破坏备份链:
sql
BACKUP DATABASE [YourDB]
TO DISK = N'/var/opt/mssql/backup/YourDB.bak'
WITH COMPRESSION, COPY_ONLY,
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = [BackupCert])
2.2 跨平台传输优化
使用split命令处理大文件传输:bash
压缩分割(每份2GB)
tar czvf - YourDB.bak | split -b 2G - YourDBpart
传输后合并
cat YourDBpart* | tar xzvf -
2.3 目标端环境预配置
调整Linux版SQL Server内存限制:
bash
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 16384
sudo systemctl restart mssql-server
2.4 数据库还原技术细节
处理Windows-Linux路径差异:
sql
RESTORE DATABASE [YourDB]
FROM DISK = N'/var/opt/mssql/backup/YourDB.bak'
WITH
MOVE 'YourDB_Data' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/log/YourDB.ldf',
RECOVERY, REPLACE
2.5 迁移后验证策略
建议采用校验和验证:
sql
DBCC CHECKDB ('YourDB') WITH NO_INFOMSGS, ALL_ERRORMSGS;
2.6 性能调优要点
调整Linux下的IO调度策略:
bash
echo 'mq-deadline' > /sys/block/sdb/queue/scheduler
三、高阶迁移场景处理
3.1 增量迁移方案
使用事务日志备份实现最小停机:
sql
-- 主库持续备份日志
BACKUP LOG [YourDB] TO DISK = N'/backup/YourDB.trn'
3.2 容器化迁移
Docker环境下的特殊处理:
bash
docker exec -it sqlserver2019 \
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "YourPassword" \
-Q "RESTORE DATABASE [YourDB] FROM DISK='/backup/YourDB.bak'"
3.3 监控指标配置
建议部署的Prometheus监控项:
yaml
- job_name: 'mssql'
static_configs:
- targets: ['localhost:9100']
metrics_path: '/metrics'
params:
target: ['sqlserver']
四、灾备建设最佳实践
日志传送配置:
sql ALTER DATABASE [YourDB] SET PARTNER = 'TCP://secondary.server:5022'
备份验证自动化脚本示例:bash
!/bin/bash
if ! /opt/mssql-tools/bin/sqlcmd -Q "RESTORE VERIFYONLY FROM DISK='/backup/$(ls -t /backup | head -1)'"; then
echo "$(date): Backup verification failed" >> /var/log/mssql/migrate.log
exit 1
fi
经验总结:在最近某证券系统的迁移案例中,通过采用LVM快照+日志传送的组合方案,将3TB级数据库的停机时间控制在47秒。关键点在于前期充分的性能基准测试(建议使用HammerDB),以及迁移后的执行计划重新编译:
sql
EXEC sp_updatestats;