首页主机资讯Debian下SQL Server的备份与恢复流程是怎样的

Debian下SQL Server的备份与恢复流程是怎样的

时间2025-10-04 12:31:03发布访客分类主机资讯浏览204
导读:Debian下SQL Server备份与恢复流程 一、备份流程 备份是保护数据的核心环节,Debian下主要通过命令行工具(sqlcmd)或自动化脚本实现,支持完整备份(Full Backup)、差异备份(Differential Back...

Debian下SQL Server备份与恢复流程

一、备份流程

备份是保护数据的核心环节,Debian下主要通过命令行工具sqlcmd)或自动化脚本实现,支持完整备份(Full Backup)、差异备份(Differential Backup)、事务日志备份(Transaction Log Backup)三种类型。

1. 前提准备
  • 确保已安装SQL Server及mssql-tools(包含sqlcmd):
    sudo apt update &
        &
     sudo apt install -y mssql-tools unixodbc-dev
    
  • 授权备份目录:默认备份路径为/var/opt/mssql/backup,需确保SQL Server服务对该目录有写入权限(通常默认可写)。
2. 使用sqlcmd执行备份

通过命令行工具sqlcmd连接SQL Server实例,执行BACKUP DATABASE命令:

sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "BACKUP DATABASE [YourDatabaseName] 
TO DISK = '/var/opt/mssql/backup/YourDatabaseName_Full_$(date +%Y%m%d).bak' 
WITH FORMAT, INIT, STATS = 10"
  • 参数说明
    • -S:SQL Server实例地址(本地为localhost);
    • -U/-P:登录凭据(sa为用户,YourStrongPassword为密码);
    • FORMAT:覆盖现有备份文件;
    • INIT:初始化备份设备;
    • STATS = 10:每完成10%显示进度。
3. 自动化备份(可选)

通过cron定时任务实现定期备份,避免手动操作:

  • 编辑备份脚本/usr/local/bin/backup_sql.sh
    #!/bin/bash
    BACKUP_DIR="/var/opt/mssql/backup"
    DB_NAME="YourDatabaseName"
    DATE=$(date +%Y%m%d)
    BACKUP_FILE="$BACKUP_DIR/${
    DB_NAME}
        _Full_$DATE.bak"
    
    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "BACKUP DATABASE [$DB_NAME] TO DISK = '$BACKUP_FILE' WITH FORMAT, INIT, STATS = 10"
    
    # 检查备份是否成功
    if [ $? -eq 0 ];
         then
      echo "$(date): Backup of $DB_NAME succeeded." >
        >
         /var/log/sql_backup.log
    else
      echo "$(date): Backup of $DB_NAME failed!" >
        >
         /var/log/sql_backup.log
    fi
    
  • 赋予执行权限并添加cron任务:
    chmod +x /usr/local/bin/backup_sql.sh
    echo "0 2 * * * /usr/local/bin/backup_sql.sh" | sudo tee -a /etc/crontab
    
    上述配置表示每天凌晨2点执行备份。
4. 验证备份

备份完成后,检查备份文件是否存在及大小是否符合预期:

ls -lh /var/opt/mssql/backup/

二、恢复流程

恢复是将备份文件还原到SQL Server实例的过程,需根据备份类型(完整/差异/日志)选择对应命令。

1. 准备工作
  • 确保备份文件路径正确且未被损坏;
  • 若恢复到现有数据库,需先删除原数据库(或使用WITH REPLACE覆盖)。
2. 使用sqlcmd执行恢复
  • 恢复完整备份(首次恢复需使用完整备份):

    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] 
    FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_Full_20250929.bak' 
    WITH REPLACE, RECOVERY, STATS = 10"
    
    • REPLACE:覆盖现有数据库;
    • RECOVERY:将数据库恢复至可用状态(若需应用事务日志,改为NORECOVERY)。
  • 恢复差异备份(需在完整备份后执行):

    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] 
    FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_Diff_20250929.bak' 
    WITH RECOVERY, STATS = 10"
    
  • 恢复事务日志备份(需在完整备份+差异备份后执行):

    # 先恢复完整备份(NORECOVERY)
    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] 
    FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_Full_20250929.bak' 
    WITH NORECOVERY, STATS = 10"
    
    # 再恢复事务日志(NORECOVERY)
    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "RESTORE LOG [YourDatabaseName] 
    FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_Log_20250929.trn' 
    WITH NORECOVERY, STATS = 10"
    
    # 最后恢复最新事务日志(RECOVERY)
    sqlcmd -S localhost -U sa -P 'YourStrongPassword' -Q "RESTORE LOG [YourDatabaseName] 
    FROM DISK = '/var/opt/mssql/backup/YourDatabaseName_Log_20250930.trn' 
    WITH RECOVERY, STATS = 10"
    
3. 使用SSMS恢复(图形界面)

若习惯图形操作,可通过SQL Server Management Studio(SSMS)恢复:

  • 打开SSMS,连接至Debian上的SQL Server实例;
  • 右键点击“数据库”→“还原数据库”;
  • 在“常规”页签中,选择“设备”→“浏览”→添加备份文件(.bak);
  • 在“选项”页签中,勾选“覆盖现有数据库”,点击“确定”即可。
4. 处理恢复挂起状态

若数据库处于“恢复挂起”状态(如恢复失败),可通过以下命令修复:

-- 设置为紧急模式(允许访问)
ALTER DATABASE [YourDatabaseName] SET EMERGENCY;
    

-- 检查数据库一致性(修复错误)
DBCC CHECKDB([YourDatabaseName], REPAIR_ALLOW_DATA_LOSS);
    

-- 设置为多用户模式(恢复正常)
ALTER DATABASE [YourDatabaseName] SET MULTI_USER;
    

三、注意事项

  • 备份路径权限:确保/var/opt/mssql/backup目录对mssql用户可写;
  • 备份验证:定期测试备份文件的可用性(如尝试恢复到测试数据库);
  • 安全存储:敏感备份文件建议加密或存储至异地;
  • 恢复测试:生产环境恢复前,务必在测试环境验证流程;
  • 日志模式:若需事务日志恢复,需将数据库设置为“完整恢复模式”(Full Recovery Mode)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian下SQL Server的备份与恢复流程是怎样的
本文地址: https://pptw.com/jishu/720035.html
Debian中如何安装新软件 Debian系统如何配置SQL Server的内存使用

游客 回复需填写必要信息