温馨提示×

centos下sqlserver数据备份技巧

小樊
47
2025-08-21 01:59:05
栏目: 云计算

以下是在CentOS下备份SQL Server数据的实用技巧:

一、基础备份操作

  1. 安装工具
    需先安装mssql-toolsunixODBC-devel

    sudo yum install -y mssql-tools unixODBC-devel
    
  2. 使用sqlcmd命令行备份

    • 完整数据库备份
      sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/备份名.bak' WITH FORMAT"
      
    • 差异备份
      sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/备份名_diff.bak' WITH DIFFERENTIAL"
      
    • 事务日志备份(需启用完整恢复模式):
      sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP LOG 数据库名 TO DISK='/var/opt/mssql/backup/备份名_log.trn' WITH NORECOVERY"
      
  3. 指定备份路径与压缩

    • 路径需提前创建(如/var/opt/mssql/backup),建议包含日期参数:
      BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/数据库名_$(date +%F).bak' WITH COMPRESSION
      

二、自动化备份策略

  1. 通过crontab定时任务
    编辑定时任务脚本:

    sudo crontab -e
    

    添加如下内容(每日凌晨2点执行完整备份):

    0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P '密码' -Q "BACKUP DATABASE 数据库名 TO DISK='/var/opt/mssql/backup/数据库名_$(date +\%F).bak' WITH FORMAT"
    
  2. 远程备份到其他服务器
    通过SMB或NFS挂载远程目录,或使用scp传输备份文件:

    scp /var/opt/mssql/backup/备份名.bak user@远程服务器:/远程路径/
    

三、安全与优化建议

  1. 权限管理

    • 确保备份目录权限仅允许SQL Server服务账户和备份脚本访问:
      sudo chown -R mssql:mssql /var/opt/mssql/backup
      sudo chmod -R 700 /var/opt/mssql/backup
      
  2. 备份验证
    定期检查备份文件完整性,可通过RESTORE VERIFYONLY命令测试:

    sqlcmd -S localhost -U sa -P '密码' -Q "RESTORE VERIFYONLY FROM DISK='/var/opt/mssql/backup/备份名.bak'"
    
  3. 保留策略
    结合find命令清理过期备份(如保留7天):

    find /var/opt/mssql/backup -name "*.bak" -mtime +7 -exec rm -f {} \;
    

四、工具选择参考

  • 图形化工具:通过SQL Server Management Studio(SSMS)连接后直接操作,适合新手。
  • 命令行工具sqlcmd适合自动化场景,支持脚本批量执行。
  • 高级需求:对于大规模数据库,可考虑使用第三方工具(如Vinchin Backup)实现多线程备份和压缩。

注意:备份前需确认SQL Server服务正常运行,且备份路径有足够磁盘空间。建议定期测试备份恢复流程,确保数据可正常还原。

0