溫馨提示×

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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女