温馨提示×

SQL Server在CentOS上的备份恢复流程

小樊
47
2025-10-13 12:28:18
栏目: 云计算

SQL Server在CentOS上的备份恢复流程

一、备份流程

1. 准备工作

  • 安装必要工具:确保已安装mssql-tools(包含sqlcmd命令行工具),用于执行T-SQL命令。
    sudo yum install -y mssql-tools unixODBC-devel 
  • 创建备份目录:选择安全路径(如/var/opt/mssql/backups)并设置权限,仅允许mssql用户访问。
    sudo mkdir -p /var/opt/mssql/backups sudo chown mssql:mssql /var/opt/mssql/backups sudo chmod 700 /var/opt/mssql/backups 

2. 执行备份(两种方式)

(1)使用T-SQL命令(推荐自动化)

通过sqlcmd连接SQL Server,执行BACKUP DATABASE命令。以下脚本实现完整备份(可扩展为差异/日志备份):

#!/bin/bash BACKUP_DIR="/var/opt/mssql/backups" DB_NAME="your_database_name" DATE=$(date +"%Y%m%d_%H%M%S") BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.bak" # 执行备份(覆盖已有备份文件) /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "your_sa_password" -Q \ "BACKUP DATABASE [$DB_NAME] TO DISK = N'$BACKUP_FILE' WITH FORMAT, INIT, STATS = 10;" 
  • 参数说明
    • FORMAT, INIT:覆盖现有备份文件;
    • STATS = 10:每完成10%显示进度;
    • 替换your_database_nameyour_sa_password为实际值。

(2)使用SQL Server Management Studio(SSMS,图形化操作)

  • 打开SSMS,连接至CentOS上的SQL Server实例(默认端口1433);
  • 展开数据库节点,右键目标数据库→任务备份
  • 备份类型中选择完整(或差异/日志);
  • 点击添加,指定备份文件路径(如/var/opt/mssql/backups/your_db.bak);
  • 点击确定开始备份,完成后可查看进度日志。

3. 自动化备份(可选)

通过crontab设置定时任务,例如每天凌晨2点执行备份脚本

sudo crontab -e 

添加以下内容(替换脚本路径):

0 2 * * * /path/to/backup_script.sh >> /var/opt/mssql/backups/backup.log 2>&1 

保存后,cron会自动执行备份任务。

二、恢复流程

1. 准备工作

  • 停止SQL Server服务(若恢复系统数据库或需要独占访问):
    sudo systemctl stop mssql-server 
  • 复制备份文件:将备份文件(如.bak)复制到SQL Server备份目录(/var/opt/mssql/backups)。

2. 执行恢复(两种方式)

(1)使用T-SQL命令(推荐)

通过sqlcmd连接SQL Server,执行RESTORE DATABASE命令。以下为完整恢复流程:

# 以单用户模式启动SQL Server(确保无其他连接干扰) sudo /opt/mssql/bin/sqlservr -m & # 连接到SQL Server /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "your_sa_password" <<EOF RESTORE DATABASE [your_database_name] FROM DISK = N'/var/opt/mssql/backups/your_db.bak' WITH REPLACE, RECOVERY; -- REPLACE覆盖现有数据库,RECOVERY恢复正常模式 GO EOF # 停止单用户模式,重启SQL Server服务 sudo systemctl stop mssql-server sudo systemctl start mssql-server 
  • 参数说明
    • REPLACE:若数据库已存在,强制覆盖;
    • RECOVERY:恢复完成后将数据库设为可用状态(若需恢复后续日志,用NORECOVERY)。

(2)使用SQL Server Management Studio(SSMS,图形化操作)

  • 打开SSMS,连接至SQL Server实例;
  • 右键数据库节点→任务还原数据库
  • 选择设备浏览,定位备份文件(如/var/opt/mssql/backups/your_db.bak);
  • 选项页签中,勾选覆盖现有数据库,设置恢复状态还原后恢复正常模式
  • 点击确定开始恢复,完成后验证数据库状态。

3. 验证恢复结果

  • 连接到SQL Server,执行以下命令查看数据库是否在线:
    SELECT name, state_desc FROM sys.databases WHERE name = 'your_database_name'; 
  • 查询表数据,确认数据完整性:
    USE your_database_name; SELECT TOP 10 * FROM your_table_name; 

三、注意事项

  • 备份策略:建议结合完整备份(每日)、差异备份(每小时)、事务日志备份(每15分钟),满足不同恢复场景需求;
  • 权限管理:备份目录仅允许mssql用户访问,避免未授权修改;
  • 备份验证:定期执行RESTORE VERIFYONLY命令检查备份文件完整性:
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "your_sa_password" -Q \ "RESTORE VERIFYONLY FROM DISK = N'/var/opt/mssql/backups/your_db.bak';" 
  • 日志管理:保留备份日志(如cron输出),便于排查恢复失败问题;
  • 安全保护:加密备份文件(如使用gpg),并将备份存储至远程存储(如S3兼容对象存储),防止数据丢失。

0