温馨提示×

centos sqlserver如何迁移

小樊
43
2025-08-06 20:36:47
栏目: 云计算

在CentOS上进行SQL Server迁移,可参考以下方案:

一、环境准备

  1. 安装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 mssql-tools unixODBC-devel
      
    • 初始化数据库并设置SA密码:
      sudo /opt/mssql/bin/mssql-conf setup
      
  2. 配置网络与防火墙

    • 开放1433端口:
      sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
      sudo firewall-cmd --reload
      

二、数据迁移方法

1. 基于文件的迁移(适合全量迁移)

  • 备份源数据库
    使用SQL Server Management Studio(SSMS)在源服务器生成.bak文件,或通过命令行:

    BACKUP DATABASE [源数据库名] TO DISK = '/path/to/backup.bak'
    
  • 还原到目标服务器
    .bak文件复制到目标CentOS服务器,执行:

    RESTORE DATABASE [目标数据库名] FROM DISK = '/path/to/backup.bak'
    

2. 基于工具的迁移(支持结构与数据同步)

  • 使用sqlpackage工具(推荐,支持BACPAC格式)

    • 安装工具:
      sudo yum install -y mssql-tools
      
    • 导出源数据库为BACPAC文件:
      sqlpackage export -ServerName <源服务器IP> -DatabaseName <源库名> -Username <用户名> -Password <密码> -OutputFile /path/to/export.bacpac
      
    • 导入到目标数据库:
      sqlpackage import -ServerName <目标服务器IP> -DatabaseName <目标库名> -Username <用户名> -Password <密码> -File /path/to/export.bacpac
      
  • 使用bcp工具(适合批量数据迁移)

    • 导出数据为CSV:
      bcp <源数据库名>.<架构名>.<表名> out /path/to/data.csv -c -t, -S <源服务器IP> -U <用户名> -P <密码>
      
    • 导入数据到目标表:
      bcp <目标数据库名>.<架构名>.<表名> in /path/to/data.csv -c -t, -S <目标服务器IP> -U <用户名> -P <密码>
      

三、验证与优化

  1. 数据一致性校验
    对比源与目标数据库的表记录数、关键字段值,可使用sqlcmd执行查询:

    sqlcmd -S <服务器IP> -U <用户名> -P <密码> -Q "SELECT COUNT(*) FROM <表名>"
    
  2. 性能优化

    • 调整目标服务器内存、CPU资源(通过mssql-conf配置)。
    • 对大表迁移可分批次处理,避免锁表。

注意事项

  • 确保目标服务器SQL Server版本与源服务器兼容(如SQL Server 2017+支持Linux)。
  • 迁移前备份源数据库,避免数据丢失。
  • 若需跨平台迁移(如Windows→CentOS),优先使用sqlpackage或SSMA工具。

0