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的安装配置自动化、备份恢复自动化、性能监控自动化、安全维护自动化,大幅降低运维成本,提升系统稳定性。