Ubuntu環境下SQL Server自動化運維操作指南
在實現自動化運維前,需先完成SQL Server在Ubuntu上的安裝及基礎配置:
# 導入微軟公鑰
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# 注冊SQL Server Ubuntu倉庫
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/mssql-server-2022.list)"
# 更新包列表并安裝
sudo apt-get update && sudo apt-get install -y mssql-server
sudo systemctl start mssql-server # 啟動服務
sudo systemctl enable mssql-server # 設置開機自啟
sudo /opt/mssql/bin/mssql-conf setup
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server
Ansible是Ubuntu下實現SQL Server自動化運維的高效工具,可通過Playbook定義并執行安裝、配置、備份等任務:
sudo apt-get update && sudo apt-get install -y ansible
sqlserver_setup.yml
,包含安裝、啟動、配置等任務:---
- name: Automate SQL Server setup on Ubuntu
hosts: all
become: yes
tasks:
# 添加Microsoft GPG密鑰
- name: Add Microsoft GPG key
apt_key:
url: https://packages.microsoft.com/keys/microsoft.asc
state: present
# 注冊SQL Server倉庫
- name: Register SQL Server repository
apt_repository:
repo: "deb [arch=amd64] https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod $(lsb_release -cs) main"
state: present
# 更新包列表并安裝SQL Server
- name: Install mssql-server
apt:
name: mssql-server
state: latest
update_cache: yes
# 啟動SQL Server服務
- name: Start mssql-server service
service:
name: mssql-server
state: started
enabled: yes
# 啟用SQL Server Agent
- name: Enable SQL Server Agent
command: /opt/mssql/bin/mssql-conf set sqlagent.enabled true
# 重啟SQL Server服務
- name: Restart mssql-server for Agent changes
service:
name: mssql-server
state: restarted
inventory_file
指定目標主機,運行Playbook:ansible-playbook -i inventory_file sqlserver_setup.yml
定期備份是數據庫運維的關鍵環節,可通過Shell腳本結合Cron定時任務實現:
backup_sqlserver.sh
,實現全量備份(帶壓縮與日期標記):#!/bin/bash
# 配置參數
DB_USER="sa"
DB_PASSWORD="your_strong_password"
DB_NAME="your_database"
BACKUP_DIR="/var/opt/mssql/backup"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${DATE}.bak"
# 創建備份目錄(若不存在)
sudo mkdir -p "$BACKUP_DIR"
sudo chown mssql:mssql "$BACKUP_DIR"
sudo chmod 700 "$BACKUP_DIR"
# 執行備份(使用sqlcmd)
sqlcmd -S localhost -U "$DB_USER" -P "$DB_PASSWORD" -Q \
"BACKUP DATABASE [$DB_NAME] TO DISK='$BACKUP_FILE' WITH INIT, SKIP, STATS=10, COMPRESSION"
chmod +x /path/to/backup_sqlserver.sh
crontab -e
添加以下內容:0 2 * * * /path/to/backup_sqlserver.sh >> /var/log/sql_backup.log 2>&1
(日志會記錄到/var/log/sql_backup.log
,便于后續排查問題)監控SQL Server性能與系統資源,可通過Linux自帶工具或第三方解決方案實現:
top -p $(pgrep -f mssql)
過濾SQL Server進程)。vmstat 1 5
每1秒采樣1次,共5次)。sar -u 1 3
查看CPU使用率,sar -d 1 3
查看磁盤IO)。mysqld_exporter
或SQL Server原生Exporter),Grafana可視化展示(如CPU使用率趨勢圖、內存占用餅圖)。#!/bin/bash
THRESHOLD=100 # 連接數閾值
EMAIL="admin@example.com"
CONNECTIONS=$(sqlcmd -S localhost -U sa -P your_password -Q "SELECT COUNT(*) FROM sys.dm_exec_connections" -h -1 | tail -n 1)
if [ "$CONNECTIONS" -gt "$THRESHOLD" ]; then
echo "SQL Server連接數超過閾值:$CONNECTIONS(閾值:$THRESHOLD)" | mail -s "SQL Server連接數報警" "$EMAIL"
fi
通過Cron每小時執行一次:0 * * * * /path/to/connection_monitor.sh
安全是自動化運維的重要環節,需定期執行以下任務:
sudo /opt/mssql/bin/mssql-conf set-sa-password
按提示輸入新密碼即可。/var/opt/mssql/log
),避免日志占滿磁盤:# 清空所有.log文件(謹慎操作,建議先備份)
sudo truncate -s 0 /var/opt/mssql/log/*.log
sudo apt update && sudo apt upgrade -y # 更新系統
sudo apt install --only-upgrade mssql-server # 升級SQL Server
通過以上步驟,可實現Ubuntu環境下SQL Server的安裝配置自動化、備份恢復自動化、性能監控自動化、安全維護自動化,大幅降低運維成本,提升系統穩定性。