首页主机资讯SQL Server在Ubuntu上的备份恢复流程是什么

SQL Server在Ubuntu上的备份恢复流程是什么

时间2025-10-24 23:47:03发布访客分类主机资讯浏览1271
导读:一、准备工作 安装SQL Server及工具 在Ubuntu上安装SQL Server和sqlcmd命令行工具(参考Microsoft官方文档):sudo apt-get update sudo apt-get install -y ms...

一、准备工作

  1. 安装SQL Server及工具
    在Ubuntu上安装SQL Server和sqlcmd命令行工具(参考Microsoft官方文档):
    sudo apt-get update
    sudo apt-get install -y mssql-server mssql-tools unixodbc-dev
    sudo ln -sfn /opt/mssql-tools/bin/sqlcmd /usr/bin/sqlcmd  # 添加sqlcmd到系统路径
    
  2. 配置备份目录权限
    创建专用备份目录并设置正确的属主和权限(避免权限问题导致备份失败):
    sudo mkdir -p /var/opt/mssql/backup
    sudo chown mssql:mssql /var/opt/mssql/backup
    sudo chmod 700 /var/opt/mssql/backup
    

二、备份流程

1. 使用sqlcmd命令行备份(手动/脚本)

  • 完整备份(Full Backup)
    完整备份是基础,包含数据库所有数据,建议每周执行1次(或根据业务需求调整):
    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, COMPRESSION, STATS=10"  # FORMAT覆盖旧备份,COMPRESSION节省空间,STATS显示进度
    
  • 差异备份(Differential Backup)
    仅备份自上次完整备份后修改的数据,建议每天执行1次(在完整备份基础上):
    sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "BACKUP DATABASE [YourDatabaseName] 
    TO DISK='/var/opt/mssql/backup/YourDatabaseName_Diff_$(date +%Y%m%d).bak' 
    WITH DIFFERENTIAL, INIT, STATS=10"  # DIFFERENTIAL仅增量,INIT覆盖上次差异备份
    
  • 事务日志备份(Transaction Log Backup)
    备份自上次日志备份后的事务日志,用于实现“时间点恢复”,建议每1-2小时执行1次(在完整/差异备份基础上):
    sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "BACKUP LOG [YourDatabaseName] 
    TO DISK='/var/opt/mssql/backup/YourDatabaseName_Log_$(date +%Y%m%d_%H%M).bak' 
    WITH INIT, STATS=10"  # INIT覆盖上次日志备份
    

2. 自动化备份(可选但推荐)

通过crontab定时执行备份脚本,减少人工干预:

  • 创建备份脚本(如/opt/mssql/scripts/backup.sh):
    #!/bin/bash
    BACKUP_DIR="/var/opt/mssql/backup"
    DB_NAME="YourDatabaseName"
    DATE=$(date +%Y%m%d)
    
    # 完整备份(每周日凌晨2点执行,可通过crontab判断星期几)
    if [ $(date +%u) -eq 1 ];
     then
      sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "BACKUP DATABASE [$DB_NAME] 
      TO DISK='$BACKUP_DIR/${
    DB_NAME}
    _Full_$DATE.bak' WITH FORMAT, COMPRESSION, STATS=10"
    else
      # 差异备份(其他时间)
      sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "BACKUP DATABASE [$DB_NAME] 
      TO DISK='$BACKUP_DIR/${
    DB_NAME}
        _Diff_$DATE.bak' WITH DIFFERENTIAL, INIT, STATS=10"
    fi
    
  • 添加可执行权限
    chmod +x /opt/mssql/scripts/backup.sh
    
  • 配置crontab(每天凌晨2点执行):
    crontab -e
    # 添加以下行(根据需求调整频率)
    0 2 * * * /opt/mssql/scripts/backup.sh
    

三、恢复流程

1. 手动恢复(命令行)

恢复顺序:完整备份 → 差异备份(若有) → 事务日志备份(若有),最后用WITH RECOVERY使数据库可用。

  • 恢复完整备份(NORECOVERY模式)
    sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] 
    FROM DISK='/var/opt/mssql/backup/YourDatabaseName_Full_20251020.bak' 
    WITH NORECOVERY, REPLACE, STATS=10"  # REPLACE覆盖现有数据库,NORECOVERY保持数据库不可用
    
  • 恢复差异备份(NORECOVERY模式)
    sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE DATABASE [YourDatabaseName] 
    FROM DISK='/var/opt/mssql/backup/YourDatabaseName_Diff_20251021.bak' 
    WITH NORECOVERY, STATS=10"
    
  • 恢复事务日志备份(最后一次用RECOVERY)
    sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "RESTORE LOG [YourDatabaseName] 
    FROM DISK='/var/opt/mssql/backup/YourDatabaseName_Log_20251021_1200.bak' 
    WITH RECOVERY, STATS=10"  # 最后一步用RECOVERY使数据库可用
    

2. 验证恢复结果

恢复完成后,使用DBCC CHECKDB检查数据库完整性(避免数据损坏):

sqlcmd -S localhost -U SA -P 'YourStrongPassword' -Q "DBCC CHECKDB([YourDatabaseName]) WITH NO_INFOMSGS"

若输出无错误,则恢复成功。

四、注意事项

  • 备份策略:根据业务重要性选择备份类型(如关键业务用“完整+差异+日志”,非关键业务用“完整+差异”)。
  • 备份存储:定期将备份文件复制到异地(如云存储),防止本地磁盘故障导致数据丢失。
  • 权限管理:备份目录仅允许mssql用户访问,避免未授权修改。
  • 测试恢复:定期在测试环境验证备份文件的可用性(避免备份文件损坏无法恢复)。
  • 监控备份:通过邮件或日志监控备份任务的执行状态(如crontab执行结果)。

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


若转载请注明出处: SQL Server在Ubuntu上的备份恢复流程是什么
本文地址: https://pptw.com/jishu/735122.html
Linux僵尸进程对系统稳定有何危害 Ubuntu上SQL Server的网络配置怎么做

游客 回复需填写必要信息