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:
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0:
inet 192.168.1.51/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
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之前,需要进行一系列准备工作,包括配置存储库、安装依赖包等。
# 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
4. 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
# 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
# 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的安装和配置。
# 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;”
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’);”
from:fengge
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
