首页主机资讯SQL Server在CentOS上的备份恢复流程

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

时间2025-10-13 22:48:03发布访客分类主机资讯浏览1450
导读:SQL Server在CentOS上的备份恢复流程 一、备份流程 1. 准备工作 安装必要工具:确保已安装mssql-tools(包含sqlcmd命令行工具),用于执行T-SQL命令。sudo yum install -y mssql-t...

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兼容对象存储),防止数据丢失。

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


若转载请注明出处: SQL Server在CentOS上的备份恢复流程
本文地址: https://pptw.com/jishu/725221.html
CentOS SQL Server安装失败怎么办 Centos Zookeeper故障排查有哪些方法

游客 回复需填写必要信息