openGaussdb5.0单点企业版部署_KylinV10SP1

本文档环境:Kylin-Server-10-SP1 python2.7.16 交互式初始化环境方式

介绍

openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。

openGauss社区版本分为长期支持版本和创新版本:

· 长期支持版本 (LTS) ------规模上线使用,发布间隔周期为1年,提供3年社区支持。

· 社区创新版本 (Preview) ------联创测试使用,发布间隔周期为1年,提供6个月社区支持。

openGauss支持单机部署和单机HA部署两种部署方式。单机部署时,可在一个主机部署多个数据库实例,但为了数据安全,不建议用户这样部署。单机HA部署支持一台主机和最少一台备机,备机一共最多8台的配置方式。

说明: 通过openGauss提供的脚本安装时,只允许在单台物理机部署一个数据库系统。如果您需要在单台物理机部署多个数据库系统,建议您通过命令行安装,不需要通过openGauss提供的安装脚本执行安装。

安装前准备

软硬件要求

仅作参考,自测环境低一些也可以,本文档是Kylin-Server-10-SP1 aarch64 Kunpeng-920 64G96C1.1T的配置

硬件环境

表1 硬件环境要求列出了openGauss服务器应具备的最低硬件要求。在实际产品中,硬件配置的规划需考虑数据规模及所期望的数据库响应速度。请根据实际情况进行规划。

表 1 硬件环境要求

|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 项目 | 配置描述 |
| 内存 | 功能调试建议32GB以上。 性能测试和商业部署时,单实例部署建议128GB以上。 复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。 |
| CPU | 功能调试最小1×8 核 2.0GHz。 性能测试和商业部署时,建议1×16核 2.0GHz。 CPU超线程和非超线程两种模式都支持。 说明: 个人开发者最低配置2核4G, 推荐配置4核8G。 目前,openGauss仅支持ARM服务器和基于X86_64通用PC服务器的CPU。 |
| 硬盘 | 用于安装openGauss的硬盘需最少满足如下要求: * 至少1GB用于安装openGauss的应用程序。 * 每个主机需大约300MB用于元数据存储。 * 预留70%以上的磁盘剩余空间用于数据存储。 建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。 openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。 |
| 网络要求 | 300兆以上以太网。 建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。 该文档只采用了1块网卡。 |

软件环境

表 2 软件环境要求

|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 软件类型 | 配置描述 |
| Linux操作系统 | * ARM: * * openEuler 20.3LTS(推荐采用此操作系统) * 麒麟V10 * Asianux 7.5 * X86: * * openEuler 20.3LTS * CentOS 7.6 * Asianux 7.6说明:当前安装包只能在英文操作系统上安装使用。 |
| Linux文件系统 | 剩余inode个数 > 15亿(推荐) |
| 工具 | bzip2 |
| Python | * openEuler:支持Python 3.7.X, Python 3.9.X * CentOS:支持Python 3.6.X * 麒麟:支持Python 3.7.X * Asianux:支持Python 3.6.X说明:python需要通过--enable-shared方式编译。 |

若用户修改过系统python版本,则在安装数据库之前,还需手动安装下列python模块(pip安装即可)。

|--------|-----------|------|-----------|--------------|--------|--------|----------|
| psutil | netifaces | cffi | pycparser | cryptography | pynacl | bcrypt | paramiko |

并且在预安装时,需要加上--unused-third-party选项。

软件依赖要求

openGauss的软件依赖要求如表3 软件依赖要求所示。

建议使用上述操作系统安装光盘或者源中,下列依赖软件的默认安装包,若不存在下列软件,可参看软件对应的建议版本。

表 3 软件依赖要求

|--------------------------|----------------------|
| 所需软件 | 建议版本 |
| libaio-devel | 建议版本:0.3.109-13 |
| flex | 要求版本:2.5.31 以上 |
| bison | 建议版本:2.7-4 |
| ncurses-devel | 建议版本:5.9-13.20130511 |
| glibc-devel | 建议版本:2.17-111 |
| patch | 建议版本:2.7.1-10 |
| redhat-lsb-core | 建议版本:4.1 |
| readline-devel | 建议版本:7.0-13 |
| libnsl(openEuler+x86环境中) | 建议版本 :2.28-36 |

系统参数配置

操作系统主机命名(可选)

如果采用默认主机名,可忽略该步骤,默认的主机名localhost.localdomain,xml文件中的主机名也需要改成localhost.localdomain

hostnamectl set-hostname topnet31

/etc/hosts配置(可选)

如果采用默认主机名,可忽略该步骤,预安装会自动追加127.0.0.1 localhost #Gauss OM IP Hosts Mapping

cp /etc/hosts /etc/hosts.bak
cat >>/etc/hosts<<EOF
192.168.3.31      topnet31  
EOF

limits.conf

不用配置该文件,会自动追加如下内容:

cat /etc/security/limits.conf
....
root       soft    as  unlimited
omm       soft    as  unlimited
root       hard    as  unlimited
omm       hard    as  unlimited
root       soft    nproc  unlimited
omm       soft    nproc  unlimited
root       hard    nproc  unlimited
omm       hard    nproc  unlimited

关闭透明页

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

--加入开机启动
echo '
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag' >>/etc/rc.local
chmod +x /etc/rc.local

防火墙配置

systemctl stop firewalld.service
systemctl disable firewalld.service 

如果启用防火墙需进行如下配置:

如果数据库端口和ssh端口不是15400和22,需视情况更改

firewall-cmd --zone=public --add-port=15400/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --reload

selinux配置

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0 

关闭 numa和禁用透明大页

sed -i "s/quiet/quiet numa=off transparent_hugepage=never/g"  /etc/default/grub 
grub2-mkconfig -o /etc/grub2.cfg

设置字符集参数

echo "export LANG=en_US.UTF-8"  >> /etc/profile
source /etc/profile

设置时区和时间

如果服务器时间和当前时间相差8小时或者12小时,需要查看时区,分析是否决定更改。

非可视化更改步骤
--查看当前时间
[root@topnet31 ~]# date
Fri Jan 26 16:50:55 CST 2024

--查看当前时区
root@HKSZF-ZW-172-19-146-176:/topsoft# timedatectl
                      Local time: Wed 2024-01-24 05:51:05 UTC
                  Universal time: Wed 2024-01-24 05:51:05 UTC
                        RTC time: Wed 2024-01-24 05:51:56
                       Time zone: Etc/UTC (UTC, +0000)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

--更改时区  执行tzselect命令

root@HKSZF-ZW-172-19-146-176:/topsoft# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent, ocean, "coord", or "TZ".
 1) Africa
 2) Americas
 3) Antarctica
 4) Asia
 5) Atlantic Ocean
 6) Australia
 7) Europe
 8) Indian Ocean
 9) Pacific Ocean
10) coord - I want to use geographical coordinates.
11) TZ - I want to specify the time zone using the Posix TZ format.

--找到Asia,输入4,回车
Please select a country whose clocks agree with yours.
 1) Afghanistan           18) Israel                35) Palestine
 2) Armenia               19) Japan                 36) Philippines
 3) Azerbaijan            20) Jordan                37) Qatar
 4) Bahrain               21) Kazakhstan            38) Russia
 5) Bangladesh            22) Korea (North)         39) Saudi Arabia
 6) Bhutan                23) Korea (South)         40) Singapore
 7) Brunei                24) Kuwait                41) Sri Lanka
 8) Cambodia              25) Kyrgyzstan            42) Syria
 9) China                 26) Laos                  43) Taiwan
10) Cyprus                27) Lebanon               44) Tajikistan
11) East Timor            28) Macau                 45) Thailand
12) Georgia               29) Malaysia              46) Turkmenistan
13) Hong Kong             30) Mongolia              47) United Arab Emirates
14) India                 31) Myanmar (Burma)       48) Uzbekistan
15) Indonesia             32) Nepal                 49) Vietnam
16) Iran                  33) Oman                  50) Yemen
17) Iraq                  34) Pakistan

--找到china,输入9,回车
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time

--找到北京时间,输入1,回车
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time

--选择yes,输入1,回车
The following information has been given:

        China
        Beijing Time

Therefore TZ='Asia/Shanghai' will be used.
Selected time is now:   Wed Jan 24 21:40:32 CST 2024.
Universal Time is now:  Wed Jan 24 13:40:32 UTC 2024.
Is the above information OK?
1) Yes
2) No

--更新设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

--查看是否更改成功
root@HKSZF-ZW-172-19-146-176:/topsoft# date
Wed Jan 24 21:42:00 CST 2024

root@HKSZF-ZW-172-19-146-176:/topsoft# timedatectl
                      Local time: Wed 2024-01-24 21:42:06 CST
                  Universal time: Wed 2024-01-24 13:42:06 UTC
                        RTC time: Wed 2024-01-24 06:09:59
                       Time zone: Asia/Shanghai (CST, +0800)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no
可视化更改步骤
--查看当前时间
[root@topnet31 ~]# date
Fri Jan 26 16:50:55 CST 2024

--查看当前时区
root@HKSZF-ZW-172-19-146-176:/topsoft# timedatectl
                      Local time: Wed 2024-01-24 05:51:05 UTC
                  Universal time: Wed 2024-01-24 05:51:05 UTC
                        RTC time: Wed 2024-01-24 05:51:56
                       Time zone: Etc/UTC (UTC, +0000)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

在可视化界面中查看

选择进入 Applications -> System Tools -> Settings -> Details -> Date & Time

调整时间

点击"Date & Time"行中任意位置,弹出弹窗,调整时间为当前北京时间,再关闭弹窗,即保存。如下图所示:

再次使用命令查看,本地时间已显示为北京时间

[root@localhost src]# timedatectl
      Local time: Mon 2022-04-04 13:14:03 CST
  Universal time: Mon 2022-04-04 05:14:03 UTC
        RTC time: Mon 2022-04-04 05:14:03
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

关闭swap交换内存(可选)

关闭swap交换内存是为了保障数据库的访问性能,避免把数据库的缓冲区内存淘汰到磁盘上。 如果服务器内存比较小,内存过载时,可打开swap交换内存保障正常运行。

swapoff -a

关闭RemoveIPC

在各数据库节点上,关闭RemoveIPC。CentOS操作系统默认为关闭,可以跳过该步骤。

  1. 修改/etc/systemd/logind.conf文件中的"RemoveIPC"值为"no"。a. 使用VIM打开logind.conf文件。

    --更改后的/etc/systemd/logind.conf
    vim /etc/systemd/logind.conf
    RemoveIPC=no

    --更改后的
    vim /usr/lib/systemd/system/systemd-logind.service
    RemoveIPC=no

    --重新加载配置参数
    systemctl daemon-reload
    systemctl restart systemd-logind

    --检查修改是否生效
    loginctl show-session | grep RemoveIPC
    systemctl show systemd-logind | grep RemoveIPC

关闭HISTORY记录(可选)

为避免指令历史记录安全隐患,需关闭各主机的history指令。

更改/etc/profile中HISTSIZE值
vim /etc/profile
HISTSIZE默认值为1000 更改为 HISTSIZE=0

--生效
source /etc/profile

配置yum源

将操作系统镜像上传至/opt目录下

mount /opt/*.iso /mnt/
cat << EOF >> /etc/fstab
/dev/sr0    /mnt        iso9660 loop            0 0
EOF

mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
cat >> /etc/yum.repos.d/os.repo <<"EOF"
[OS1]
name=OS
baseurl=file:///mnt
enabled=1
gpgcheck=0
EOF

安装依赖包

--kylinV10 操作系统下安装依赖包如下:
yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel \
patch  readline-devel 

注意:openEuler+x86环境中  yum install -y libnsl  kylinV10中无redhat-lsb-core,如果是Centos
操作系统采用如下步骤:

补充:
Centos操作系统下安装依赖包如下:
yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel \
patch redhat-lsb-core readline-devel 

python版本升级

python版本如果是3.6.x,可跳过该步骤

python版本2.7.5需升级至3.6.x版本,centos7 用python3.6 ,欧拉20用python3.7,kylinV10使用python3.7其实不需要去编译安装python,直接用操作系统自带的包管理器yum install python3或dnf install python3,装上去就是对应的版本了。切不要编译安装,不然跳坑,预安装时报错。

kylinV10使用python3.7,操作系统中已经安装的有,该步骤可省略

--查看python版本
[root@topnet31 ~]# python --version
Python 2.7.18

[root@topnet31 ~]# python3 --version
Python 3.7.9

若未安装python3 采用yum方式安装
--采用yum方式安装操作系统自带的包管理器中的python3
yum install python3

创建用户及用户组(可选)

可以创建也可以不创建,gs_preinstall初始化安装时会自行操作

--创建用户组dbgrp
groupadd dbgrp

--创建用户组dbgroup下的普通用户omm,并设置密码为Gauss_234 
useradd -g dbgrp omm
passwd omm

为了实现安装过程中安装帐户权限最小化,及安装后openGauss的系统运行安全性,安装脚本在安装过程中会自动按照用户指定内容创建安装用户,并将此用户作为后续运行和维护openGauss的管理员帐户。

|-----------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 用户/组名 | 所属类型 | 规划建议 |
| dbgrp | 操作系统 | 建议规划单独的用户组,例如dbgrp。 初始化安装环境时,由-G参数所指定的安装用户所属的用户组。该用户组如果不存在,则会自动创建,也可提前创建好用户组。在执行gs_preinstall脚本时会检查权限。gs_preinstall脚本会自动赋予此组中的用户对安装目录、数据目录的访问和执行权限。 创建dbgrp用户组命令: groupadd dbgrp |
| omm | 操作系统 | 建议规划用户用于运行和维护openGauss,例如omm。 初始化安装环境时,由-U参数所指定和自动创建的操作系统用户,如果已经存在该用户,请清理该用户或更换初始化用户。从安全性考虑,对此用户的所属组规划如下: 所属组:dbgrp |

在安装openGauss过程中root用户运行 openGauss-5.0.1-openEuler-64bit-om.tar.gz中scripts目录中的"gs_preinstall"时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。

目录规划

--创建存放安装包的目录
mkdir -p /opt/openGauss
chmod 777 -R /opt/openGauss

--创建目录  gs_preinstall初始化安装时目录会自动创建,可选择不创建
mkdir -p /opt/huawei/openGauss/install/app  #数据库安装目录
mkdir -p /opt/huawei/openGauss/log/omm  #日志目录
mkdir -p /opt/huawei/openGauss/tmp  #临时文件目录
mkdir -p /opt/huawei/openGauss/install/om  #数据库工具目录
mkdir -p /opt/huawei/openGauss/corefile  #数据库core文件目录

不建议把安装包的存放目录规划到openGauss用户的根目录或其子目录下,可能导致权限问题。安装目录和数据目录在统一目录下也会导致权限问题,建议安装目录和数据目录分开。

openGauss用户须具有/opt/openGauss目录的读写权限。

下载并上传安装包

登录openGauss开源社区软件包 | openGauss,选择对应平台的企业版安装包。

上传至/opt/openGauss目录,安装包"openGauss-5.0.1-openEuler-64bit-all.tar.gz"和配置文件"cluster_config.xml"都上传至上一步所创建的目录中。发现x86和arm架构的安装介质名称上竟然没有区别。

配置单节点XML文件

安装openGauss前需要创建XML文件。XML文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss如何部署。用户需根据不同场景配置对应的XML文件。

关于如何配置XML文件,详细请参见创建XML配置文件

将cluster_config.xml上传至/opt/openGauss目录,安装包"openGauss-5.0.1-openEuler-64bit-all.tar.gz"和配置文件"cluster_config.xml"都上传至上一步所创建的目录中。

为确保成功安装,检查hostname与/etc/hostname是否一致。预安装过程中,会对hostname进行检查。

默认端口15400,若待用自定义端口,更改xml文件中的端口号

官方XML文件模板

cat cluster_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="node1_hostname" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/var/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/opt/huawei/corefile" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="192.168.0.1"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="node1_hostname">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="node1_hostname"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.0.1"/>
            <PARAM name="sshIp1" value="192.168.0.1"/>
               
	    <!--dbnode-->
	    <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/opt/huawei/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

根据官方模板更改后的xml文件

cat cluster_config.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <!-- openGauss整体信息 -->
    <CLUSTER>
        <!-- 数据库名称 -->
        <PARAM name="clusterName" value="dbCluster" />
        <!-- 数据库节点名称(hostname) -->
        <PARAM name="nodeNames" value="topnet31" />
        <!-- 数据库安装目录-->
        <PARAM name="gaussdbAppPath" value="/opt/openGauss/huawei/install/app" />
        <!-- 日志目录-->
        <PARAM name="gaussdbLogPath" value="/opt/openGauss/huawei/log/omm" />
        <!-- 临时文件目录-->
        <PARAM name="tmpMppdbPath" value="/opt/openGauss/huawei/tmp" />
        <!-- 数据库工具目录-->
        <PARAM name="gaussdbToolPath" value="/opt/openGauss/huawei/install/om" />
        <!-- 数据库core文件目录-->
        <PARAM name="corePath" value="/opt/openGauss/huawei/corefile" />
        <!-- 节点IP,与数据库节点名称列表一一对应 -->
        <PARAM name="backIp1s" value="192.168.3.31"/> 
    </CLUSTER>
    <!-- 每台服务器上的节点部署信息 -->
    <DEVICELIST>
        <!-- 节点1上的部署信息 -->
        <DEVICE sn="topnet31">
            <!-- 节点1的主机名称 -->
            <PARAM name="name" value="topnet31"/>
            <!-- 节点1所在的AZ及AZ优先级 -->
            <PARAM name="azName" value="AZ1"/>
            <PARAM name="azPriority" value="1"/>
            <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
            <PARAM name="backIp1" value="192.168.3.31"/>
            <PARAM name="sshIp1" value="192.168.3.31"/>
               
	    <!--dbnode-->
	    <PARAM name="dataNum" value="1"/>
	    <PARAM name="dataPortBase" value="15400"/>
	    <PARAM name="dataNode1" value="/opt/openGauss/huawei/install/data/dn"/>
            <PARAM name="dataNode1_syncNum" value="0"/>
        </DEVICE>
    </DEVICELIST>
</ROOT>

可通过以下全局替换

vi /opt/openGauss/cluster_config.xml

:%s#node1_hostname#topnet31#g   #主机名
:%s#/opt/huawei/install/app#/opt/openGauss/huawei/install/app#g   #安装目录
:%s#/opt/huawei/install/app#/opt/openGauss/huawei/install/app#g   #安装目录
:%s#/var/log/omm#/opt/openGauss/huawei/log/omm#g    #日志目录
:%s#/opt/huawei/tmp#/opt/openGauss/huawei/tmp#g   #临时文件目录
:%s#/opt/huawei/install/om#/opt/openGauss/huawei/install/om#g    #数据库工具目录
:%s#/opt/huawei/corefile#/opt/openGauss/huawei/corefile#g   #数据库core文件目录
:%s#192.168.0.1#192.168.3.31#g   #IP地址
:%s#/opt/huawei/install/data/dn#/opt/openGauss/huawei/install/data/dn#g   #数据节点目录  /opt/huawei/install/data/dn

解压安装包

对于个人开发者或非企业级环境,下载极简安装包(不安装OM等组件)即可。本文档采用的是企业版安装,因此安装OM等组件

注意:安装包"openGauss-5.0.1-openEuler-64bit-all.tar.gz"和配置文件"cluster_config.xml"需在同一目录中,本文档是/opt/openGauss目录。

--进入安装包所在目录
[root@topnet31 ~]# cd /opt/openGauss/
[root@topnet31 openGauss]# ls -l
总用量 125052
-rw------- 1 root root      1912  1月 30 10:31 cluster_config.xml
-rw------- 1 root root 128047213  1月 30 10:39 openGauss-5.0.1-openEuler-64bit-all.tar.gz

--解压openGauss-5.0.1-openEuler-64bit-all.tar.gz安装包
tar -xvf openGauss-5.0.1-openEuler-64bit-all.tar.gz 

--查看解压后的文件
[root@topnet31 openGauss]#
[root@topnet31 openGauss]# ls -lS
总用量 251128
-rw------- 1 root root 128047213  1月 30 10:39 openGauss-5.0.1-openEuler-64bit-all.tar.gz
-rw-r----- 1 root root  95319962 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.tar.bz2
-rw-r----- 1 root root  22492134 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.tar.gz
-rw-r----- 1 root root  10766779 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.tar.gz
-rw------- 1 root root    498131 12月 15 20:43 upgrade_sql.tar.gz
-rw------- 1 root root      1912  1月 30 10:31 cluster_config.xml
-rw-r----- 1 root root       108 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.sha256
-rw-r----- 1 root root        65 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.sha256
-rw-r----- 1 root root        65 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.sha256
-rw------- 1 root root        65 12月 15 20:43 upgrade_sql.sha256


参数说明:
-S :按文件类型排序

--继续解压openGauss-5.0.1-openEuler-64bit-om.tar.gz  数据库工具包 企业版安装需要解压该包极简版不需要
tar -xvf openGauss-5.0.1-openEuler-64bit-om.tar.gz

--查看解压后的文件   script目录中生成gs_preinstall等各种OM工具脚本
[root@topnet31 openGauss]# ls -lS
总用量 251140
-rw-------  1 root root 128047213  1月 30 10:39 openGauss-5.0.1-openEuler-64bit-all.tar.gz
-rw-r-----  1 root root  95319962 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.tar.bz2
-rw-r-----  1 root root  22492134 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.tar.gz
-rw-r-----  1 root root  10766779 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.tar.gz
-rw-------  1 root root    498131 12月 15 20:43 upgrade_sql.tar.gz
drwxr-x--- 14 root root      4096 12月 15 20:44 lib
drwxr-x--- 10 root root      4096 12月 15 20:44 script
-rw-------  1 root root      1912  1月 30 10:31 cluster_config.xml
-rw-r-----  1 root root       108 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.sha256
-rw-r-----  1 root root        65 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.sha256
-rw-r-----  1 root root        65 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.sha256
-rw-------  1 root root        65 12月 15 20:43 upgrade_sql.sha256
-rw-r-----  1 root root        32 12月 15 20:44 version.cfg
  • 在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。
  • 运行前置脚本gs_preinstall准备安装环境时,脚本内部会自动将openGauss配置文件、解压后的安装包同步拷贝到其余服务器的相同目录下。
  • 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。

使用gs_preinstall初始化安装环境

安装环境的初始化包含上传安装包和XML文件(二者需在同一目录)、解压安装包、使用gs_preinstall准备好安装环境。

分2种场景初始化,自行选择。

准备安装用户及环境

创建完openGauss配置文件后,在执行安装前,为了后续能以最小权限进行安装及openGauss管理操作,保证系统安全性,需要运行安装前置脚本gs_preinstall准备好安装用户及环境。在执行前置脚本gs_preinstall时,需要规划好openGauss配置文件路径、安装包存放路径、程序安装目录、实例数据目录,后续普通用户使用过程中不能再更改这些路径。

安装前置脚本gs_preinstall可以协助用户自动完成如下的安装环境准备工作:

  • 自动设置Linux内核参数以达到提高服务器负载能力的目的。这些参数直接影响数据库系统的运行状态,请仅在确认必要时调整。openGauss所设置的Linux内核参数取值请参见配置操作系统参数
  • 脚本内部会自动将openGauss配置文件、安装包拷贝到openGauss主机的相同目录下。
  • openGauss安装用户、用户组不存在时,自动创建安装用户以及用户组。
  • 读取openGauss配置文件中的目录信息并创建,将目录权限授予安装用户。
  • 只能使用root用户执行gs_preinstall命令
  • 在执行前置脚本或者互信前,请检查/etc/profile文件中是否包含错误输出信息,如果存在错误输出,需手动处理。

注意:如果是openEuler(openEuler 20.03)的操作系统,执行如下命令打开performance.sh文件,用#注释sysctl -w vm.min_free_kbytes=112640 &> /dev/null,键入"ESC"键进入指令模式,执行**:wq**保存并退出修改。

vi /etc/profile.d/performance.sh

场景1:采用交互模式执行前置

[root@topnet31 /]# cd /opt/openGauss/script/
./gs_preinstall -U omm -G dbgrp -X /opt/openGauss/cluster_config.xml

这里设置:omm用户密码omm

预安装脚本执行的详细过程如下:

[root@topnet31 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/openGauss/cluster_config.xml
Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Setting host ip env
Successfully set host ip env.
Are you sure you want to create the user[omm] (yes/no)? yes
Preparing SSH service.
Successfully prepared SSH service.
Checking OS software.
Successfully check os software.
Checking OS version.
Successfully checked OS version.
Creating cluster's path.
Successfully created cluster's path.
Set and check OS parameter.
Setting OS parameters.
Successfully set OS parameters.
Warning: Installation environment contains some warning messages.
Please get more details by "/opt/openGauss/script/gs_checkos -i A -h topnet31 --detail".
Set and check OS parameter completed.
Preparing CRON service.
Successfully prepared CRON service.
Setting user environmental variables.
Successfully set user environmental variables.
Setting the dynamic link library.
Successfully set the dynamic link library.
Setting Core file
Successfully set core path.
Setting pssh path
Successfully set pssh path.
Setting Cgroup.
Successfully set Cgroup.
Set ARM Optimization.
Successfully set ARM Optimization.
Fixing server package owner.
Setting finish flag.
Successfully set finish flag.
Preinstallation succeeded.
问题处理
[GAUSS-51400]权限不够
--问题描述
[root@topnet31 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
....
[GAUSS-51400] : Failed to execute the command: su - omm -c 'cd '/opt/openGauss/huawei/log/omm/omm''. Error:
-bash: 第 0 行:cd: /opt/openGauss/huawei/log/omm/omm: 权限不够

--问题原因
安装目录和数据目录在统一目录下
最初规划的目录  gs_preinstall初始化安装时目录会自动创建,可选择不创建
mkdir -p /opt/openGauss/huawei/install/app  #数据库安装目录
mkdir -p /opt/openGauss/huawei/log/omm  #日志目录
mkdir -p /opt/openGauss/huawei/tmp  #临时文件目录
mkdir -p /opt/openGauss/huawei/install/om  #数据库工具目录
mkdir -p /opt/openGauss/huawei/corefile  #数据库core文件目录

--解决办法
更改规划目录
mkdir -p /opt/huawei/openGauss/install/app  #数据库安装目录
mkdir -p /opt/huawei/openGauss/log/omm  #日志目录
mkdir -p /opt/huawei/openGauss/tmp  #临时文件目录
mkdir -p /opt/huawei/openGauss/install/om  #数据库工具目录
mkdir -p /opt/huawei/openGauss/corefile  #数据库core文件目录

更改 cluster_config.xml中的路径

[root@topnet31 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
成功

清除原来的目录
[root@topnet31 /opt]# cd /opt/openGauss
[root@topnet31 openGauss]# ls -l
总用量 377200
-rw-------  1 omm  dbgrp      1912  1月 30 10:59 cluster_config.xml
drwxrwxrwx  5 root root       4096  1月 30 10:46 huawei
drwxrwxrwx 15 root root       4096  1月 30 10:43 lib
drwxrwxrwx  9 root root       4096  1月 30 11:00 libcgroup
-r--------  1 root root  128047213  1月 30 10:39 openGauss-5.0.1-openEuler-64bit-all.tar.gz
-r--------  1 root root        108 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.sha256
-r--------  1 root root   22492134 12月 15 20:46 openGauss-5.0.1-openEuler-64bit-cm.tar.gz
-r--------  1 root root         65 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.sha256
-r--------  1 root root   10766779 12月 15 20:44 openGauss-5.0.1-openEuler-64bit-om.tar.gz
-r--------  1 root root         65 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.sha256
-r--------  1 root root   95319962 12月 15 20:46 openGauss-5.0.1-openEuler-64bit.tar.bz2
-r--------  1 root root  129073177  1月 30 10:59 openGauss-Package-bak_33b035fd.tar.gz
drwx------ 10 root root       4096  1月 30 10:59 script
-r--------  1 root root         65 12月 15 20:43 upgrade_sql.sha256
-r--------  1 root root     498131 12月 15 20:43 upgrade_sql.tar.gz
-r--------  1 root root         32 12月 15 20:42 version.cfg

[root@topnet31 openGauss]# rm -rf huawei/
[root@topnet31 openGauss]# rm -rf lib
[root@topnet31 openGauss]# rm -rf libcgroup/
python3: No such file or directory
--问题描述
采用交互模式执行前置时报错/usr/bin/env: python3: No such file or directory
[root@topnet31 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml
/usr/bin/env: python3: No such file or directory

--解决办法
采用上面办法进行python版本升级
--查看python版本
[root@topnet31 ~]# python --version
Python 2.7.5

[root@topnet31 ~]# python3 --version
python3命令找不到

--采用yum方式安装操作系统自带的包管理器中的python3
yum install python3

--再次查看python版本
[root@topnet31 ~]# python --version
Python 2.7.5

[root@topnet31 ~]# python3 --version
Python 3.6.8
[GAUSS-52400] : Installation environment does not meet the desired result

执行安装

使用gs_install安装openGauss。安装脚本gs_install必须以前置脚本中指定的omm执行,否则,脚本执行会报错。

/opt/openGauss/cluster_config.xml为openGauss配置文件的路径。在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证用户正常使用该数据库,请记住输入的数据库密码。这里设置为Topnet@123

设置的密码要符合复杂度要求:

  • 最少包含8个字符,最多包含16个字符。
  • 不能和用户名、当前密码(ALTER)、或当前密码反序相同。
  • 至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。

注意事项:

  • openGauss支持字符集的多种写法:gbk/GBK、UTF-8/UTF8/utf8/utf-8和Latine1/latine1。

  • 安装时若不指定字符集,默认字符集为SQL_ASCII,为简化和统一区域loacle默认设置为C,若想指定其他字符集和区域,请在安装时使用参数--gsinit-parameter="--locale=LOCALE"来指定,LOCALE为新数据库设置缺省的区域。

  • 默认端口15400

    --赋予配置文件777的权限,因为安装脚本gs_install必须以前置脚本中指定的omm执行
    chmod 777 /opt/openGauss/cluster_config.xml
    chmod 777 /opt/openGauss/

    --切换用户 omm为前置脚本gs_preinstall中-U参数指定的用户
    su - omm

    --查看配置文件/etc/profile中的语言参数
    [omm@topnet31 dn_6001]$ cat /etc/profile | grep LANG
    export LANG=en_US.UTF-8

    --查看系统支持UTF-8编码的区域
    locale -a|grep utf8

    --执行安装脚本
    cd /opt/openGauss/script
    gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"

安装过程中会生成ssl证书,证书存放路径为{gaussdbAppPath}/share/sslcert/om,其中{gaussdbAppPath}为openGauss配置文件中指定的程序安装目录。

[omm@topnet31 om]$ cd /topsoft/huawei/install/app/share/sslcert/om
[omm@topnet31 om]$ ls -l
total 64
-rw-------. 1 omm dbgrp  4399 Jan 27 08:43 cacert.pem
-rw-------. 1 omm dbgrp  4402 Jan 27 08:43 client.crt
-rw-------. 1 omm dbgrp  1766 Jan 27 08:43 client.key
-rw-------. 1 omm dbgrp    56 Jan 27 08:43 client.key.cipher
-rw-------. 1 omm dbgrp  1218 Jan 27 08:43 client.key.pk8
-rw-------. 1 omm dbgrp    24 Jan 27 08:43 client.key.rand
-rw-------. 1 omm dbgrp 10921 Jan 27 08:43 openssl.cnf
-rw-------. 1 omm dbgrp  4402 Jan 27 08:43 server.crt
-rw-------. 1 omm dbgrp  1766 Jan 27 08:43 server.key
-rw-------. 1 omm dbgrp    56 Jan 27 08:43 server.key.cipher
-rw-------. 1 omm dbgrp    24 Jan 27 08:43 server.key.rand

日志文件路径下会生成两个日志文件:"gs_install-YYYY-MMDD_HHMMSS.log"和"gs_local-YYYY-MM-DD_HHMMSS.log"。

/opt/huawei/openGauss/log/omm/omm/om/gs_install-2024-01-30_111500.log

详细过程如下:

[omm@topnet31 script]$ gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"
Parsing the configuration file.
Check preinstall on every node.
Successfully checked preinstall on every node.
Creating the backup directory.
Successfully created the backup directory.
begin deploy..
Installing the cluster.
begin prepare Install Cluster..
Checking the installation environment on all nodes.
begin install Cluster..
Installing applications on all nodes.
Successfully installed APP.
begin init Instance..
encrypt cipher and rand files for database.
Please enter password for database:
Please repeat for database:
[GAUSS-50306] : The password of database is incorrect.The two passwords are different, please enter password again.
Please enter password for database:
Please repeat for database:
begin to create CA cert files
The sslcert will be generated in /opt/huawei/openGauss/install/app/share/sslcert/om
NO cm_server instance, no need to create CA for CM.
Non-dss_ssl_enable, no need to create CA for DSS
Cluster installation is completed.
Configuring.
Deleting instances from all nodes.
Successfully deleted instances from all nodes.
Checking node configuration on all nodes.
Initializing instances on all nodes.
Updating instance configuration on all nodes.
Check consistence of memCheck and coresCheck on database nodes.
Configuring pg_hba on all nodes.
Configuration is completed.
The cluster status is Normal.
Successfully started cluster.
Successfully installed application.
end deploy..

问题处理

_psutil_linux.so_3.7没有那个文件或目录

vb 复制代码
`--问题描述
[root@topnet31 script]# ./gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"

Failed to execute cmd: rm -rf '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_linux.so' && cp -r '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_linux.so_3.7' '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_linux.so'  && rm -rf '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_posix.so' && cp -r '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_posix.so_3.7' '/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_posix.so' . Error:
cp: 无法获取'/opt/openGauss/script/gspylib/common/./../../../lib/psutil/_psutil_linux.so_3.7' 的文件状态(stat): 没有那个文件或目录...

--问题原因
未切换到omm用户导致

--解决办法
切换到omm用户执行安装
su - omm
gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"
`

执行安装提示ImportError

--问题描述
[omm@topnet31 script]$ ./gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"
Traceback (most recent call last):
  File "/opt/openGauss/script/gs_install", line 36, in <module>
    from gspylib.common.Common import DefaultValue, ClusterCommand
  File "/opt/openGauss/script/gspylib/common/Common.py", line 107, in <module>
    from base_utils.executor.local_remote_cmd import LocalRemoteCmd
  File "/opt/openGauss/script/base_utils/executor/local_remote_cmd.py", line 27, in <module>
    from base_utils.os.net_util import NetUtil
  File "/opt/openGauss/script/base_utils/os/net_util.py", line 38, in <module>
    from netifaces import interfaces, ifaddresses, AF_INET, AF_INET6
ImportError: cannot import name 'interfaces' from 'netifaces' (unknown location)

--问题原因
执行安装命令前加了./导致

--解决办法
gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"
而不是
./gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"

字符集不是UTF8

--问题描述
安装完成后登录数据库查看数据库时字符集不是UTF8

--原因
执行安装时未指定字符集参数,,未指定字符集参数执行安装时字符集默认是SQL_ASCII

--解决办法
--查看配置文件/etc/profile中的语言参数
[omm@topnet31 dn_6001]$ cat /etc/profile | grep LANG
export LANG=en_US.UTF-8
--执行安装的时候增加字符集参数
gs_install -X /opt/openGauss/cluster_config.xml --gsinit-parameter="--locale=en_US.utf8"

配置参数文件

查看进程,确定数据目录位置

--查看进程,确定数据目录位置
[root@topnet31 ~]# ps -ef | grep openGauss
omm      37699     1  4 12:35 ?        00:04:20 /opt/huawei/openGauss/install/app/bin/gaussdb -D /opt/huawei/openGauss/install/data/dn

远程访问

--更改pg_hba.conf
[root@topnet31 ~]# cd /opt/huawei/openGauss/install/data/dn
[root@topnet31 dn]# vi pg_hba.conf
增加:
host    all    all    0.0.0.0/0   md5

密码参数

--更改pg_hba.conf
[root@topnet31 ~]# cd /opt/huawei/openGauss/install/data/dn
[root@topnet31 dn]# vi postgresql.conf
更改前
#password_encryption_type = 2            #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only

更改后
password_encryption_type = 1            #Password storage type, 0 is md5 for PG, 1 is sha256 + md5, 2 is sha256 only

重启数据库服务

--停止
cd /opt/huawei/openGauss/install/om/script/
gs_om -t stop

--启动
cd /opt/huawei/openGauss/install/om/script/
gs_om -t start

创建业务用户

由于使用客户端工具通过omm用户访问数据库提示FATAL: Forbid remote connection with initial user。故需创建1个业务用户。

--登录数据库
su - omm
gsql -d postgres -p 15400

--创建业务用户
CREATE USER uxsino WITH password "Uxs!nO10";

--创建业务用户(超管角色)
CREATE USER uxsino WITH SYSADMIN password "Uxs!nO10";

访问数据库

连接数据库的客户端工具包括gsql、应用程序接口(如JDBC)。

  • gsql是openGauss自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。

  • 用户可以使用标准的数据库应用程序接口(如JDBC),开发基于openGauss的应用程序。

    --查看进程
    [omm@topnet31 ~]$ ps -ef | grep gaussdb
    omm 18228 1 4 11:17 ? 00:00:11 /opt/huawei/openGauss/install/app/bin/gaussdb -D /opt/huawei/openGauss/install/data/dn

    [omm@topnet31 ~]$ gs_ctl query -D /opt/huawei/openGauss/install/data/dn
    [2024-01-30 11:21:55.916][48406][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/openGauss/install/data/dn
    HA state:
    local_role : Normal
    static_connections : 0
    db_state : Normal
    detail_information : Normal

    Senders info:
    No information
    Receiver info:
    No information

本地连接数据库

gsql是openGauss提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考《工具与命令参考》中"客户端工具 > gsql"章节。

缺省情况下,客户端连接数据库后处于空闲状态时会根据参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置参数session_timeout为0即可。默认为0表示关闭超时设置

以操作系统用户omm登录数据库主节点。

su - omm
法一:
gsql -d postgres -p 15400

参数说明:
-d 连接的数据库名称,
-p 数据库主节点的端口号

法二:
gsql -d "host=127.0.0.1 port=15400 dbname=postgres user=omm password=Topnet@123"


--登录后如下:
[omm@localhost ~]$ gsql -d postgres -p 15400
gsql ((openGauss 5.0.1 build 33b035fd) compiled at 2023-12-15 20:28:19 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

openGauss=# \l+
                                                              List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | Access privileges | Size  | Tablespace |                Description
-----------+-------+----------+------------+------------+-------------------+-------+------------+--------------------------------------------
 postgres  | omm   | UTF8     | en_US.utf8 | en_US.utf8 |                   | 13 MB | pg_default | default administrative connection database
 template0 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +| 13 MB | pg_default | default template for new databases
           |       |          |            |            | omm=CTc/omm       |       |            |
 template1 | omm   | UTF8     | en_US.utf8 | en_US.utf8 | =c/omm           +| 13 MB | pg_default | unmodifiable empty database
           |       |          |            |            | omm=CTc/omm       |       |            |
(3 rows)

--查看数据库状态
[omm@localhost ~]$ gs_om -t status
-----------------------------------------------------------------------

cluster_name    : dbCluster
cluster_state   : Normal   #"Normal"表示数据库可正常使用
redistributing  : No

--创建数据库  不能是en_US.utf8不然报错
openGauss=# create database test with encoding 'utf8' template = template0;
CREATE DATABASE

dbeaver连接数据库

下载驱动

官方下载地址:软件包 | openGauss

创建驱动

1.数据库-->驱动管理器-->新建

类名:org.opengauss.Driver
URL模板:jdbc:opengauss://{host}[:{port}]/[{database}]

2.库中添加驱动文件

连接
问题处理
--问题描述
dbeaver连接opengauss提示Connection reset

--解决办法
不能使用omm初始管理员用户登录,创建业务用户使用业务用户访问
CREATE USER uxsino WITH SYSADMIN password "Uxs!nO10";

查数据库版本

安装目录下查看
cat /opt/huawei/openGauss/install/app/version.cfg

参考链接:centos 升级python 到3.x-腾讯云开发者社区-腾讯云

初始化安装环境

相关推荐
安迁岚几秒前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 分钟前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
HackKong10 分钟前
小白怎样入门网络安全?
网络·学习·安全·web安全·网络安全·黑客
vmlogin虚拟多登浏览器20 分钟前
虚拟浏览器可以应对哪些浏览器安全威胁?
服务器·网络·安全·跨境电商·防关联
澜世30 分钟前
2024小迪安全基础入门第三课
网络·笔记·安全·网络安全
追风赶月、1 小时前
【Linux】线程概念与线程控制
linux·运维·服务器
偶尔。5352 小时前
什么是事务?事务有哪些特性?
数据库·oracle
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验六 视图
数据库·sql·mysql·oracle·实验报告
喵叔哟2 小时前
16. 【.NET 8 实战--孢子记账--从单体到微服务】--汇率获取定时器
微服务·oracle·.net
JH30732 小时前
Oracle与MySQL中CONCAT()函数的使用差异
数据库·mysql·oracle