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
通過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為實際值。1433);/var/opt/mssql/backups/your_db.bak);通過crontab設置定時任務,例如每天凌晨2點執行備份腳本:
sudo crontab -e
添加以下內容(替換腳本路徑):
0 2 * * * /path/to/backup_script.sh >> /var/opt/mssql/backups/backup.log 2>&1
保存后,cron會自動執行備份任務。
sudo systemctl stop mssql-server
.bak)復制到SQL Server備份目錄(/var/opt/mssql/backups)。通過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)。/var/opt/mssql/backups/your_db.bak);SELECT name, state_desc FROM sys.databases WHERE name = 'your_database_name';
USE your_database_name;
SELECT TOP 10 * FROM your_table_name;
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兼容對象存儲),防止數據丟失。