1、环境描述
2、安装前准备
2.1 操作系统信息调研
Linux平台需要通过命令查看操作系统版本、位数、磁盘空间、内存等信息。
CPU信息
[root@ray1 ~]# cat /proc/cpuinfo | grep -E "physical id|core id|cpu cores|siblings|cpu MHz|model name|cache size"|tail -n 7
model name : AMD Ryzen 9 7945HX with Radeon Graphics
cpu MHz : 2495.312
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
操作系统位数
[root@ray1 ~]# getconf LONG_BIT
64
内核版本
[root@ray1 ~]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@x86-034.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Feb 18 16:39:12 EST 2020
操作系统版本
[root@ray1 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.8 (Maipo)
[root@ray1 ~]#
[root@ray1 ~]# uname -a
Linux ray1 3.10.0-1127.el7.x86_64 #1 SMP Tue Feb 18 16:39:12 EST 2020 x86_64 x86_64 x86_64 GNU/Linux
内存信息
[root@ray1 ~]# free -g
total used free shared buff/cache available
Mem: 3 0 3 0 0 3
Swap: 3 0 3
磁盘信息
[root@ray1 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 13M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 46G 3.9G 42G 9% /
/dev/sda1 xfs 997M 170M 828M 18% /boot
tmpfs tmpfs 394M 0 394M 0% /run/user/0
网卡信息
[root@ray1 ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::8e68:33f4:c4a:b8bf prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3a:5f:91 txqueuelen 1000 (Ethernet)
RX packets 1035 bytes 115699 (112.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 594 bytes 98878 (96.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 68 bytes 5448 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 5448 (5.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:bb:76:33 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:bb:76:33 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.2 下载达梦数据库安装介质
可通过达梦官网根据操作系统类型、版本、CPU等信息下载相应版本的数据库安装介质。达梦官网下载链接为:https://eco.dameng.com/download/。
2.3 操作系统配置
2.3.1 配置主机名
[root@ray1 ~]# hostnamectl set-hostname ray1
[root@ray1 ~]# vi /etc/hosts
添加:
192.168.0.1 ray1
2.3.2 关闭防火墙
[root@ray1 ~]# systemctl stop firewalld
[root@ray1 ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ray1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Wed 2024-08-14 14:35:51 CST; 7s ago
Docs: man:firewalld(1)
Process: 876 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 876 (code=exited, status=0/SUCCESS)
Aug 14 13:54:33 ray1 systemd[1]: Starting firewalld - dynamic firewall daemon...
Aug 14 13:54:34 ray1 systemd[1]: Started firewalld - dynamic firewall daemon.
Aug 14 14:35:51 ray1 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Aug 14 14:35:51 ray1 systemd[1]: Stopped firewalld - dynamic firewall daemon.
[root@ray1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@ray1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@ray1 ~]# getenforce
Enforcing
[root@ray1 ~]# setenforce 0
[root@ray1 ~]# getenforce
Permissive
2.3.3 关闭操作系统Transparent Huge Pages
[root@ray1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@ray1 ~]# echo "[vm]">>/usr/lib/tuned/throughput-performance/tuned.conf
[root@ray1 ~]# echo "transparent_hugepages=never">>/usr/lib/tuned/throughput-performance/tuned.conf
重启操作系统后验证:
[root@ray1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
2.3.4 更改磁盘调度算法
Linux 6 上的默认磁盘调度算法为CFQ(完全公平排队I/O调度算法),该算法的I/O分配是基于进程/线程平均分配的,并不适用于数据库这样希望大部分I/O都应用到数据库进程的系统。DEADLINE算法(截止时间调度)确保一个截止时间内服务请求,更适用与数据库系统。但是LINUX 7已经将默认的磁盘调度算法更改为DEADLINE。查看磁盘的调度算法:
[root@ray1 ~]# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
若调度算法为cfq,需要更改为deadline,可通过如下命令:
[root@ray1 ~]# echo "deadline" > noop anticipatory deadline [cfq]
2.3.5 关闭NUMA
NUMA(Non-Uniform Memory Access)架构是为了解决多CPU下内存访问冲突,简单来说不在将整个物理内存作为一个整体,而是根据不同的CPU区分不同的内存块,如2颗CPU每颗CPU使用64G内存。当NUMA参数zone_reclaim_mode在设置为1时,内核将要求多路CPU 尽量从距离较近的系统内存节点(服务器的整体内存在numa架构下将被分成若干个节点)分配内存而不是在整个服务器可访问内存的范围内进行内存分配,因此在较高内存占用压力下内存申请会触发内存频繁回收整理的机制严重影响了系统整体性能(长期处于内核态sys很高)。进而可能导致SQL卡顿问题的发生。
查看NUMA是否启用:
[root@ray1 ~]# dmesg|grep -i numa
[ 0.000000] NUMA: Node 0 [mem 0x00000000-0x0009ffff] + [mem 0x00100000-0x7fffffff] -> [mem 0x00000000-0x7fffffff]
#NUMA:Node 0表示NUMA已启用
关闭NUMA:
1、修改grub文件
[root@ray1 ~]# vi /etc/default/grub
2、重建grub文件
[root@ray1 ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1127.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1127.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-5df2d14ceffd4a389d53b7508bc2bb0e
Found initrd image: /boot/initramfs-0-rescue-5df2d14ceffd4a389d53b7508bc2bb0e.img
done
3、重启操作系统后检查numa状态
[root@ray1 ~]# dmesg | grep -i numa
[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet numa=off
[ 0.000000] NUMA turned off
[ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-1127.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quietnuma=off
[root@ray1 ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-1127.el7.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet numa=off
2.3.6 创建用户组和用户
[root@ray1 ~]# groupadd dinstall -g 2001
[root@ray1 ~]# useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
[root@ray1 ~]# passwd dmdba
Changing password for user dmdba.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
2.4 配置内核参数
[root@ray1 ~]# vi /etc/security/limits.conf
添加:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
重启后验证:
[root@ray1 ~]# su - dmdba
Last login: Wed Aug 14 15:16:38 CST 2024 on pts/0
[dmdba@ray1 ~]$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 15594
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 65536
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
2.5 创建目录并赋权
-
数据库软件安装目录:/dmdba/dmrdbms
-
实例保存目录:/dmdba/data
-
归档保存目录:/dmdba/arch
-
备份保存目录:/dmdba/dmbak
[root@ray1 ~]# mkdir -p /dmdba/dmrdbms
[root@ray1 ~]# mkdir -p /dmdba/data
[root@ray1 ~]# mkdir -p /dmdba/arch
[root@ray1 ~]# mkdir -p /dmdba/dmbak
[root@ray1 ~]# chown -R dmdba:dinstall /dmdba
[root@ray1 ~]# chmod -R 775 /dmdba
2.6 挂载镜像
将下载好的达梦数据库安装介质传输至服务器,并解压.zip文件。
[root@ray1 ~]# cd /soft/
[root@ray1 soft]# ll
total 1060656
-rw-r--r-- 1 root root 1086108981 Aug 14 12:52 dm8_20240712_x86_rh7_64.zip
[root@ray1 soft]# unzip dm8_20240712_x86_rh7_64.zip
Archive: dm8_20240712_x86_rh7_64.zip
inflating: dm8_20240712_x86_rh7_64.README
inflating: dm8_20240712_x86_rh7_64.iso
inflating: dm8_20240712_x86_rh7_64.iso_SHA256.txt
[root@ray1 soft]# ll
total 2138612
-rw-r--r-- 1 root root 1103818752 Jul 26 17:36 dm8_20240712_x86_rh7_64.iso
-rw-r--r-- 1 root root 100 Jul 26 17:37 dm8_20240712_x86_rh7_64.iso_SHA256.txt
-rw-r--r-- 1 root root 240 Jul 26 17:36 dm8_20240712_x86_rh7_64.README
-rw-r--r-- 1 root root 1086108981 Aug 14 12:52 dm8_20240712_x86_rh7_64.zip
将ISO文件挂载至光驱
[root@ray1 soft]# mount -o loop dm8_20240712_x86_rh7_64.iso /mnt/
mount: /dev/loop0 is write-protected, mounting read-only
[root@ray1 soft]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 12M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs 46G 5.9G 40G 14% /
/dev/sda1 xfs 997M 170M 828M 18% /boot
tmpfs tmpfs 394M 0 394M 0% /run/user/0
/dev/loop0 iso9660 1.1G 1.1G 0 100% /mnt
3、 数据库软件安装
3.1 图形界面安装
[dmdba@ray1 ~]$ export DISPLAY=192.168.0.201:0.0
[dmdba@ray1 ~]$ cd /mnt/
[dmdba@ray1 mnt]$ ./DMInstall.bin
Extract install files.........
选择需要的语言、时区,点击确定。
点击下一步。
接受许可协议,点击下一步。
选择key文件路径,点击下一步。
选择【典型安装】,点击下一步。
输入达梦数据库软件安装目录,点击下一步。
点击确定、下一步。
再次确认各项配置、所需资源等,确认无误点击安装。
等待安装结束。
以root用户运行脚本,运行完成后点击确定。
[root@ray1 ~]# /dmdba/dmrdbms/script/root/root_installer.sh
移动 /dmdba/dmrdbms/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink from /etc/systemd/system/multi-user.target.wants/DmAPService.service to /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
点击完成。
3.2 配置环境变量
切换到 root 用户进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。
[root@ray1 ~]# vi /home/dmdba/.bash_profile
添加:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dmdba/dmrdbms/bin"
export DM_HOME="/dmdba/dmrdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
[root@ray1 ~]# su - dmdba
Last login: Wed Aug 14 15:35:08 CST 2024 on pts/0
[dmdba@ray1 ~]$ source .bash_profile
3.3 图形界面初始化数据库实例
[root@ray1 ~]# su - dmdba
Last login: Wed Aug 14 15:48:02 CST 2024 on pts/1
[dmdba@ray1 ~]$ export DISPLAY=192.168.0.201:0.0
[dmdba@ray1 ~]$ cd $DM_HOME/tool
[dmdba@ray1 tool]$ ./dbca.sh
选择创建数据库实例,点击开始。
选择一般用途、自动调整数据库性能参数、高性能,点击下一步。
选择数据库事先规划的数据库实例目录,点击下一步。
按需填入数据库名、实例名、端口号、是否需要路径拼接数据库名。点击下一步。
按需输入数据库各类文件路径、名称等,点击下一步。
按需设置簇大小、页大小、日志文件大小、字符集、大小写敏感等相关参数,点击下一步。
配置数据库口令,点击下一步。
是否要创建示例数据库,点击下一步。
再次确认数据库各项信息,点击完成。
等待数据库创建完成。
以root用户执行脚本,运行完成后点击确定。
[root@ray1 ~]# mv /dmdba/dmrdbms/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
[root@ray1 ~]# systemctl enable DmServiceDMSERVER.service
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
[root@ray1 ~]# systemctl start DmServiceDMSERVER.service
脚本已经执行完成,点击是。
点击确定。
root用户执行脚本,重启数据库服务。
[root@ray1 ~]# systemctl restart DmServiceDMSERVER.service
脚本执行完成后点击是。
数据库创建完成,点击完成。
3.4 图形界面注册数据库实例服务
通过dbca图形界面完成的初始化数据库实例,数据库实例服务会自动注册,无需单独执行注册数据库实例服务步骤。
至此,DM8数据库在RHEL7.8 x86 64bit上安装完成。
关于数据库连接、启停以及其他日常运维操作,参考其他篇博客,感谢关注。