1. 首页 > 软件安装教程 > 正文

SQL Server安装-SQL Server 2022 RHEL 9安装配置及升级迁移详细过程

1. 硬件环境检查

在安装SQL Server 2022之前,必须对服务器的硬件环境进行全面检查,确保满足最低要求。更多学习教程www.fgedu.net.cn

# 检查处理器信息
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
Stepping: 10
CPU MHz: 2900.000

# 检查内存信息
# free -h
total used free shared buff/cache available
Mem: 16Gi 1.2Gi 14Gi 1.0Mi 883Mi 14Gi
Swap: 8.0Gi 0B 8.0Gi

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.4M 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda1 50G 5.8G 42G 13% /
/dev/sdb1 200G 30G 160G 16% /var/opt/mssql

# 检查网络适配器
# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.1.51/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever

生产环境建议:最小内存4GB(测试环境),生产环境建议16GB以上。CPU至少2核,建议4核以上。磁盘空间至少6GB,建议50GB以上。网络带宽至少1Gbps,建议10Gbps。

2. 操作系统检查

SQL Server 2022支持RHEL 8.0-9.0、Oracle Linux 8.0-9.0等操作系统。本文以RHEL 9为例。学习交流加群风哥微信: itpux-com

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.0 (Plow)

# 检查内核版本
# uname -r
5.14.0-70.22.1.el9_0.x86_64

# 检查SELinux状态
# getenforce
Enforcing

# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-03-29 10:00:00 CST; 1h ago

3. 安装前准备

安装SQL Server 2022之前,需要进行一系列准备工作,包括配置存储库、安装依赖包等。

# 配置Microsoft SQL Server存储库
# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/9/mssql-server-2022.repo

# 安装必要的依赖包
# yum install -y glibc krb5 libicu openssl libsss_nss_idmap

# 配置防火墙规则
# firewall-cmd –zone=public –add-port=1433/tcp –permanent
# firewall-cmd –zone=public –add-port=1434/udp –permanent
# firewall-cmd –reload

# 关闭SELinux(或配置SELinux规则)
# setenforce 0
# sed -i ‘s/^SELINUX=.*/SELINUX=permissive/’ /etc/selinux/config

风哥提示:在安装SQL Server 2022之前,确保RHEL 9已经安装了最新的补丁,并且启用了必要的依赖包。

4. SQL Server 2022安装

现在开始安装SQL Server 2022,按照以下步骤进行操作。

# 安装SQL Server 2022
# yum install -y mssql-server

# 配置SQL Server
# /opt/mssql/bin/mssql-conf setup

# 安装过程中会提示选择版本、设置SA密码等
# 选择版本:Enterprise Edition
# 设置SA密码:YourStrongPassword123!

# 验证服务状态
# systemctl status mssql-server
● mssql-server.service – Microsoft SQL Server Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-03-29 10:30:00 CST; 10min ago

# 安装SQL Server命令行工具
# curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/9/prod.repo
# yum install -y mssql-tools unixODBC-devel

# 添加工具路径到环境变量
# echo ‘export PATH=”$PATH:/opt/mssql-tools/bin”‘ >> ~/.bash_profile
# source ~/.bash_profile

5. 安装后配置

SQL Server 2022安装完成后,需要进行一些必要的配置,以确保数据库正常运行。学习交流加群风哥QQ113257174

# 配置SQL Server自动启动
# systemctl enable mssql-server

# 配置SQL Server内存限制
# /opt/mssql/bin/mssql-conf set memory.memorylimitmb 12288
# systemctl restart mssql-server

# 配置SQL Server网络
# /opt/mssql/bin/mssql-conf set network.tcpport 1433
# systemctl restart mssql-server

6. 数据库创建

现在创建一个测试数据库,用于验证SQL Server的安装和配置。

# 使用SQL Server命令行工具创建数据库
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “CREATE DATABASE fgedudb ON PRIMARY (NAME = ‘fgedudb_Data’, FILENAME = ‘/var/opt/mssql/data/fgedudb.mdf’, SIZE = 10GB, MAXSIZE = UNLIMITED, FILEGROWTH = 1GB) LOG ON (NAME = ‘fgedudb_Log’, FILENAME = ‘/var/opt/mssql/data/fgedudb.ldf’, SIZE = 2GB, MAXSIZE = 10GB, FILEGROWTH = 512MB);”

# 验证数据库创建成功
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “SELECT name, state_desc FROM sys.databases WHERE name = ‘fgedudb’;”

name state_desc
——————————————————————————————————————————– ———–
fgedudb ONLINE

7. 参数配置

SQL Server的参数配置对数据库性能有重要影响,需要根据服务器硬件配置进行调整。

# 配置内存参数
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “EXEC sp_configure ‘max server memory’, 12288; RECONFIGURE;”

# 配置并行度
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “EXEC sp_configure ‘max degree of parallelism’, 4; RECONFIGURE;”

# 配置最大连接数
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “EXEC sp_configure ‘user connections’, 1000; RECONFIGURE;”

# 配置填充因子
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “EXEC sp_configure ‘fill factor’, 80; RECONFIGURE;”

# 查看配置结果
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “EXEC sp_configure;”

生产环境建议:max server memory设置为物理内存的75%-80%,max degree of parallelism设置为CPU核心数或其一半,fill factor设置为70%-90%以减少索引碎片。

8. 备份配置

备份是数据库安全的重要保障,需要配置合理的备份策略。

# 创建备份目录
# mkdir -p /var/opt/mssql/backup
# chown mssql:mssql /var/opt/mssql/backup

# 执行完整备份
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP DATABASE fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Full.bak’ WITH INIT, COMPRESSION;”

# 执行差异备份
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP DATABASE fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Diff.bak’ WITH DIFFERENTIAL, COMPRESSION;”

# 执行事务日志备份
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP LOG fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Log.trn’ WITH COMPRESSION;”

# 配置备份计划
# 使用cron创建备份计划
# crontab -e
# 添加以下内容
0 2 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP DATABASE fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Full_$(date +\%Y\%m\%d).bak’ WITH INIT, COMPRESSION;”
0 12 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP DATABASE fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Diff_$(date +\%Y\%m\%d).bak’ WITH DIFFERENTIAL, COMPRESSION;”
0 */4 * * * /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “BACKUP LOG fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Log_$(date +\%Y\%m\%d\%H\%M).trn’ WITH COMPRESSION;”

9. 升级过程

如果需要从旧版本SQL Server升级到SQL Server 2022,按照以下步骤进行操作。

# 升级前准备
# 1. 备份所有数据库
# 2. 检查应用程序兼容性
# 3. 确保有足够的磁盘空间

# 停止SQL Server服务
# systemctl stop mssql-server

# 升级SQL Server
# yum update -y mssql-server

# 启动SQL Server服务
# systemctl start mssql-server

# 升级后验证
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “SELECT @@VERSION;”

————————————————————————————————————————————————————————————————————————————————————————————————————
Microsoft SQL Server 2022 (RTM) – 16.0.1000.6 (X64)
Oct 8 2022 05:58:25
Copyright (C) 2022 Microsoft Corporation
Enterprise Edition (64-bit) on Linux (Red Hat Enterprise Linux 9.0 (Plow))

(1 rows affected)

风哥提示:升级过程中可能会出现各种问题,建议在非生产环境中先进行测试升级,确保应用程序兼容性。

10. 迁移过程

如果需要将数据库从一个服务器迁移到另一个服务器,按照以下步骤进行操作。

# 源服务器:备份数据库
# sqlcmd -S SOURCE-SQL -U sa -P YourStrongPassword123! -Q “BACKUP DATABASE fgedudb TO DISK = ‘/var/opt/mssql/backup/fgedudb_Full.bak’ WITH INIT, COMPRESSION;”

# 传输备份文件
# scp /var/opt/mssql/backup/fgedudb_Full.bak root@TARGET-SQL:/var/opt/mssql/backup/

# 目标服务器:恢复数据库
# sqlcmd -S TARGET-SQL -U sa -P YourStrongPassword123! -Q “RESTORE DATABASE fgedudb FROM DISK = ‘/var/opt/mssql/backup/fgedudb_Full.bak’ WITH REPLACE, MOVE ‘fgedudb_Data’ TO ‘/var/opt/mssql/data/fgedudb.mdf’, MOVE ‘fgedudb_Log’ TO ‘/var/opt/mssql/data/fgedudb.ldf’;”

# 迁移登录名
# 使用Microsoft SQL Server Migration Assistant (SSMA)或手动脚本迁移登录名

# 更新应用程序连接字符串
# 将连接字符串中的服务器名称从SOURCE-SQL改为TARGET-SQL

11. 测试验证

安装、升级或迁移完成后,需要进行全面的测试验证,确保数据库正常运行。

# 测试数据库连接
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “SELECT @@SERVERNAME;”

————————
fgedudb01

(1 rows affected)

# 测试数据库功能
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -d fgedudb -Q “CREATE TABLE fgedu_employees (id INT PRIMARY KEY, name VARCHAR(100), salary DECIMAL(10,2));”
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -d fgedudb -Q “INSERT INTO fgedu_employees VALUES (1, ‘John Doe’, 5000.00);”
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -d fgedudb -Q “SELECT * FROM fgedu_employees;”

id name salary
———– ——————————————————————————————————————————– —————————————
1 John Doe 5000.00

(1 rows affected)

# 测试性能
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “SET STATISTICS TIME ON; SELECT TOP 1000 * FROM sys.objects; SET STATISTICS TIME OFF;”

12. 常见问题处理

在SQL Server的安装、升级和迁移过程中,可能会遇到各种问题,以下是一些常见问题的处理方法。更多学习教程公众号风哥教程itpux_com

# 服务启动失败
# systemctl status mssql-server
# journalctl -u mssql-server

# 端口占用
# netstat -tulpn | grep 1433

# 权限问题
# chown -R mssql:mssql /var/opt/mssql

# 连接失败
# ping localhost
# telnet localhost 1433

# 数据库一致性问题
# sqlcmd -S localhost -U sa -P YourStrongPassword123! -Q “DBCC CHECKDB(‘fgedudb’);”

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息