SQL Server在CentOS上的备份恢复流程
导读: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_name
和your_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