在Ubuntu上管理SQL Server资源,通常涉及以下几个关键步骤:安装SQL Server、配置SQL Server、性能优化、备份与恢复。以下是这些步骤的详细说明:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
对于Ubuntu 20.04:
sudo add-apt-repository "deb [archamd64] https://packages.microsoft.com/ubuntu/20.04/mssql-server-2022 main"
对于Ubuntu 18.04:
sudo add-apt-repository "deb [archamd64] https://packages.microsoft.com/ubuntu/18.04/mssql-server-2019 main"
sudo apt-get update
sudo apt-get install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
按照提示设置SA密码及选择数据库版本。
sudo systemctl start mssql-server
sudo systemctl status mssql-server --no-pager
确保系统和所有软件包都是最新版本,使用命令 sudo apt update && sudo apt upgrade
进行更新。
将服务器的所有CPU和NUMA节点关联,使用 PROCESS AFFINITY for Node
和 PROCESS AFFINITY for CPU
命令,这有助于实现更高效的Linux和SQL Server性能。
启用交换分区或调整 vm.swappiness
值以提高I/O效率,避免频繁换页到硬盘。使用命令 sudo sysctl vm.swappiness=10
。将数据库文件和日志文件放在高性能的存储设备上,如SSD。
进行数据库规范化设计,减少数据冗余,提高查询效率。创建合适的索引,特别是针对频繁查询的列。
使用性能监视器(SQL Server Profiler)找出低效的查询,并进行优化。确保查询中没有不必要的数据返回,尽量减少查询的数据量。
使用 sqlcmd
进行备份:
完全备份:
sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP DATABASE [XXDatabase] TO DISK N'/var/opt/mssql/data/backup/XXDatabase_full.bak' WITH INIT, SKIP, NAME 'XXDatabase-full'"
差异备份:
sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP DATABASE [XXDatabase] TO DISK N'/var/opt/mssql/data/backup/GDQXCENT_diff.bak' WITH DIFFERENTIAL,INIT,SKIP, NAME 'XXDatabase-diff'"
日志备份:
sqlcmd -S localhost -U SA -P 'XXXX' -Q "BACKUP LOG [XXDatabase] TO DISK N'/var/opt/mssql/data/backup/GDQXCENT_log.bak' WITH INIT, SKIP"
使用 sqlcmd
进行恢复:
完全恢复:
sqlcmd -S localhost -U SA -P 'XXXX' -Q "RESTORE DATABASE [XXDatabase] FROM DISK N'/var/opt/mssql/data/backup/XXDatabase_full.bak' WITH NORECOVERY"
差异恢复:
sqlcmd -S localhost -U SA -P 'XXXX' -Q "RESTORE DATABASE [XXDatabase] FROM DISK N'/var/opt/mssql/data/backup/GDQXCENT_diff.bak' WITH NORECOVERY"
请注意,以上步骤是基于Ubuntu 20.04和SQL Server 2022的配置指南。如果你使用的是不同版本的Ubuntu或SQL Server,可能需要调整命令和步骤。