达梦8单机规范化部署

1. 安装前准备工作

1.1. 软件环境

  • CPU查询

    ##系统的 cpu 线程数:

    cat /proc/cpuinfo | grep "processor" | wc -l

    ##物理 CPU 个数:

    cat /proc/cpuinfo | grep "physical id" | sort|uniq | wc -l

    ##每个物理 CPU 的逻辑核数:

    cat /proc/cpuinfo |grep "core id"|sort -u|wc -l

  • 操作系统查询

    --(iSoft3.0/Kylin6.0/CentOS6.0/Kylin4/NFS3.0)

    cat /etc/issue

    --(iSoft3.0/Kylin6.0/CentOS6.0/Kylin4)

    lsb_release -a|grep "Description"

    --(iSoft4.0/Kylin7.0/CentOS7.0/Kylin4/Kylin10/NFS3.0/NFS4.0)

    cat /etc/os-release | grep "PRETTY_NAME"

    --(Kylin6.0/Kylin7.0/Kylin10)

    cat /etc/.productinfo

    --(Kylin7.0/Kylin10)

    nkvers

  • 内核查询

    --(iSoft3.0/iSoft4.0/Kylin6.0/Kylin7.0/CentOS6.0/CentOS7.0/Kylin4/Kylin10)

    cat /proc/version

    uname -r

    uname -a

  • 系统位数查询

    --(iSoft3.0/iSoft4.0/Kylin6.0/Kylin7.0/CentOS6.0/CentOS7.0/Kylin4/Kylin10)

    getconf LONG_BIT

  • 系统架构

    --(iSoft3.0/iSoft4.0/Kylin6.0/Kylin7.0/CentOS6.0/CentOS7.0/Kylin4/Kylin10)

    uname -m

  • CPU型号

    --(Intel/鲲鹏/飞腾/龙芯)

    lscpu

    --(Intel/飞腾/龙芯)

    cat /proc/cpuinfo|grep name|cut -f2 -d:|uniq -c

1.2. 配置防火墙

启动防火墙

bash 复制代码
systemctl enable firewalld --now

开启端口

bash 复制代码
firewall-cmd --zone=public --add-port=5236/tcp --permanent
firewall-cmd --zone=public --add-port=5236/tcp
firewall-cmd --reload
firewall-cmd --list-all-zone

可以使用富规则允许指定IP访问5236端口

bash 复制代码
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.25.102" port protocol="tcp" port="5236" accept" --permanent

Redhat6 添加端口到防火墙(iptables)

##方式一:修改系统文件,永久更改,需重启防火墙服务

bash 复制代码
[root@~]# vi /etc/sysconfig/iptables
  -A INPUT -p tcp -m tcp --dport 5236 -j ACCEPT   #添加 5236 端口到防火墙
##保存设置
[root@~]# service iptables save
##重启防火墙
[root@~]# service iptables restart

##方式二:命令行添加端口,永久更改,需重启防火墙服务

bash 复制代码
[root@~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -p tcp --dport 5236 -j ACCEPT 
##保存设置
[root@~]# service iptables save
##重启防火墙
[root@~]# service iptables restart

1.3. 关闭SELinux

很多额外的配置项。如果了解这些配置项,可以进行相应设置,但如果不了解,那么 SELinux 可能不仅没有一些实际性的帮助,反而会带来很多不确定因素。

SELinux 有 3 种模式,分别是 Enforcing,Permissive 和 Disabled 状态。

Enforcing:强制模式。代表 SELinux 在运行中,且已经开始限制 domain/type 之间的验证关系;

Permissive:宽容模式。代表 SELinux 在运行中,不会限制 domain/type 之间的验证关系,即使验证不正确,进程仍可以对文件进行操作,但会发出警告。

Disabled:关闭模式。SELinux 并没有实际运行。

可以通过 setenforce 命令来设置前面两种状态,而如果想修改为 disable 状态,需要修改配置文件,同时重启系统。Enforcing 状态的值是 1,permissive 状态是 0,因此设置为 permissive,命令为:setenforce 0|1。

bash 复制代码
[root@node1 ~]# vi /etc/selinux/config 
SELINUX=disabled
[root@node1 ~]# init 6

Tips

修改 SELinux 永久关闭,必须重启服务器,才能生效。且永久关闭后,不能通过 setenforce 1 命令临时打开

1.4. 磁盘和网络性能测试

真实模拟 20K 次磁盘写入(IO)

[root@node1 ~]# dd bs=32k count=20k if=/dev/zero of=/opt/ddtest oflag=dsync

20480+0 records in

20480+0 records out

671088640 bytes (671 MB) copied, 10.749 s, 62.4 MB/s

##拷贝一个文件,指定端口到远程服务器的 /opt 目录下

[root@~]# scp -r -P 22 /tmp/dd_test dmdba@ip:/opt/

1.5. 修改磁盘调度算法

达梦数据库的稳定运行,需要将磁盘的调度算法设置为 deadline,特别是 arm 平台,必须要设置为 deadline。如存储为 nvme 等高性能的设备时,此类设备 IO 调度算法只有 none,则无需设置。

查看当前系统支持的IO调度算法

[root@node1 ~]# dmesg | grep -i scheduler

查看数据库所在磁盘的调度算法

[root@node1 ~]# cat /sys/block/sda/queue/scheduler

noop [deadline] cfq

临时更改 I/O 调度方法,重启后失效

[root@~]# echo deadline > /sys/block/sda/queue/scheduler

##永久修改-CentOS6

##修改内核引导参数,加入 elevator=deadline

[root@~]# vi /boot/grub/menu.lst

kernel /boot/vmlinuz-2.6.32-504.el6 ro root=LABEL=/ elevator=deadline rhgb quiet

##重新确认调度算法

[root@~]# cat /sys/block/vdc/queue/scheduler

##永久修改-CentOS7

[root@node1 ~]# grubby --update-kernel=ALL --args="elevator=deadline"

[root@node1 ~]# reboot

1.6. 关闭swap

在 Linux 下,SWAP 的作用类似 Windows 系统下的"虚拟内存"。当物理内存不足时,拿出部分硬盘空间当 SWAP 分区(虚拟成内存)使用,从而解决内存容量不足的情况。

##临时关闭 swap 分区,重启后失效

[root@~]# swapoff -a

##永久关闭 swap 分区

[root@~]# sed -ri 's/.swap. /#&/' /etc/fstab

##重启操作系统

[root@~]# reboot

##再次确认

[root@~]# free -m

1.7. 关闭numa

NUMA(Non-Uniform Memory Access)架构是为了解决多 CPU 下内存访问冲突,即不再将整个物理内存作为一个整体,而是根据不同的 CPU 区分不同的内存块,如 2 颗 CPU 每颗 CPU 使用 64G 内存。当 NUMA 参数 zone_reclaim_mode 设置为 1 时,内核将要求多路 CPU 尽量从距离较近的系统内存节点(服务器的整体内存在 numa 架构下将被分成若干个节点)分配内存,而不是在整个服务器可访问内存的范围内进行内存分配。因此,在较高内存占用压力下,内存申请会触发内存频繁回收整理的机制,严重影响系统整体性能(长期处于内核态 sys 很高),进而可能导致 SQL 卡顿问题的发生。

bash 复制代码
[root@node1 ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet numa=off"

重新生成 /etc/grub2.cfg 配置文件

当节点使用UEFI安装和启动时,使用如下命令:

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

当节点使用传统BIOS安装和启动时,使用如下命令:

grub2-mkconfig -o /boot/grub2/grub.cfg

还有一个软连接文件/etc/grub2.cfg

查看系统是 BIOS 引导还是 UEFI 引导

[root@node1 ~]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

##重启操作系统

[root@~]# reboot

##重启之后进行确认

[root@~]# dmesg | grep -i numa

[root@~]# cat /proc/cmdline

1.8. 禁用透明大页

++512G及以下内存,不建议配置标准大页。禁用透明大页不代表开启标准大页。++

查看是否启用透明大页

[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] 表示透明大页启用

[never] 表示透明大页禁用

[madvise] 表示只在MADV_HUGEPAGE标志的VMA中使用THP

##临时禁用透明大页

[root@node1 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

##永久修改

##编辑grub文件,加上:transparent_hugepage=never

bash 复制代码
[root@node1 ~]# vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet numa=off transparent_hugepage=never"

##重新生成 /etc/grub2.cfg 配置文件:

[root@node1 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

##重启操作系统后再次确认

[root@node1 ~]# reboot

[root@node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

通常Linux内核还会有一个叫做khugepaged的进程,它会一直扫描所有进程占用的内存,在可能的情况下会把 4Kpage交换为Transparent HugePages,在这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能,并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为4Kpage优化的程序来说,可能会造成随机的性能下降现象。

可以通过echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag 和echo never > /sys/kernel/mm/transparent_hugepage/defrag来关闭这个功能。

如需永久修改配置为 "never",需在 /etc/rc.local 中添加如下内容。

bash 复制代码
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

Tips

/etc/rc.local是软链接文件,确保/etc/rc.local和/etc/rc.d/rc.local都有执行权限,否则不会开机执行

[root@node1 ~]# chmod +x /etc/rc.d/rc.local

1.9. 关闭RemoveIPC

在RHEL7.2中,systemd-logind服务引入了一个新特性,该新特性是:当一个user完全退出os之后,remove掉所有的IPC objects。

当RemoveIPC参数设置为yes时,操作系统会在对应用户退出时删除IPC资源(共享内存和信号量),引发数据库宕机。

CentOS操作系统无该参数,可以跳过该步骤。

bash 复制代码
[root@node1 ~]# vi /etc/systemd/logind.conf
RemoveIPC=no

重启服务

systemctl daemon-reload

systemctl restart systemd-logind

结果验证确认

loginctl show-session | grep RemoveIPC

systemctl show systemd-logind | grep -i removeipc

1.10. 调整sysctl.conf参数

/etc/sysctl.conf 是一个允许改变正在运行中的 Linux 系统接口,它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项,修改内核参数永久生效。/proc/sys 下内核文件与配置文件 sysctl.conf 中变量存在着对应关系。

配置参数 overcommit_memory 表示系统的内存分配策略可以选值为 0,1,2。

0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

1:表示内核允许分配所有的物理内存,不管当前的内存状态如何。

2:表示内核允许分配超过所有物理内存和交换空间总和的内存。

bash 复制代码
[root@node1 ~]# vi /etc/sysctl.conf
vm.overcommit_memory=0
[root@node1 ~]# sysctl -p
[root@node1 ~]# sysctl -n vm.overcommit_memory

1.11. 调整limits.conf参数

在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对程序使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。

bash 复制代码
[root@node1 ~]# vi /etc/security/limits.conf
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
dmdba soft nice 65536
dmdba hard nice 65536
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@node1 ~]# su - dmdba

[dmdba@node1 ~]$ ulimit -a

1.12 调整system.conf参数

达梦数据库服务注册为系统服务的进程,如通过 systemctl 或者 service 方式设定随机自启动的数据库服务,其能打开的最大文件描述符、proc 数量等不受 limits.conf 控制,需要修改 /etc/systemd/system.conf 文件。

调整项介绍

(1) DefaultLimitNOFILE:用户默认最大打开文件数。

(2) DefaultLimitNPROC:用户默认最大进程数。

bash 复制代码
[root@node1 ~]# vi /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=10240

保存退出后需要重启服务器才能生效。

1.13. 调整nproc.conf参数

nproc 是操作系统级别对每个用户创建的进程数的限制。文件路径为 /etc/security/limits.d/nproc。不同操作系统文件名略有不同,其中麒麟 10 中是 nproc.conf;centos6 中是 90-nproccentos,centos7 中是 20-nproc.conf。

是先读取limits.conf,接着如果limits.d目录下有配置文件的话,也会读取,所以意味着limits.d下面的配置会覆盖limits.conf中相同的配置,默认情况下limits.conf和limits.d目录下的配置文件不会冲突。

bash 复制代码
[root@node1 ~]# vi /etc/security/limits.d/20-nproc.conf
dmdba soft nproc 65536
dmdba hard nproc 65536

确定是否生效:

[dmdba@node1 ~]$ ulimit -u

1.14. 配置时间同步服务

操作系统时间不正确会导致产生以下问题:

1.试用授权产品,会导致试用授权过期,无法使用;

2.集群自动切换场景,可能会导致集群检测节点服务异常,引发误切换;

3.数据库运行日志、数据库服务日志、归档日志、备份集等时间记录错误,会导致相关分析和排查工作难度增大。

配置DNS地址

bash 复制代码
[root@node1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=114.114.114.114
PEERDNS=no

阿里云ntp服务器地址

ntp1.aliyun.com

配置ntp或chrony都可以,ntp和chrony同时只能存在一个服务运行

修改对应的/etc/ntp.conf或/etc/chrony.conf文件

/etc/sysconfig/ntpd或/etc/sysconfig/chronyd文件可以配置一些额外的参数,例如禁止时间的跃变和自动调整硬件时钟(使用hwclock命令)等

修改完配置后启动并设置为开机启动chrony服务

systemctl enable chronyd --now

查看时间同步源

watch ntpq -p

watch chronyc sources -v

手动修改时间的方法

date -s "yyyy-mm-dd HH:MM:SS"

chronyd -q 'server ntp1.aliyun.com iburst'

ntpdate ntp1.aliyun.com

1.15. 调整时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2. 单机安装部署

2.1. 创建用户和组

userdel -r dmdba

groupadd dinstall -g 2001

useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba

echo 123456 | passwd --stdin dmdba

2.2. 创建相关目录

mkdir /opt/dmdbms

chown -R dmdba:dinstall /opt/dmdbms

chmod -R 755 /opt/dmdbms/

2.3. 挂载数据库iso文件

[root@node1 ~]# unzip /opt/dm8_20240408_x86_rh7_64.zip -d /opt/

[root@node1 ~]# mount -o loop /opt/dm8_20240408_x86_rh7_64.iso /mnt/

2.4. 安装数据库软件

++严禁使用 root 用户安装数据库及数据库相关操作。必须使用 dmdba 用户执行安装以及数据库相关操作。++

bash 复制代码
[root@node1 ~]# su - dmdba 
[dmdba@node1 ~]$ /mnt/DMInstall.bin -i
Installer Language: 
[1]: 简体中文
[2]: English
Please select the installer's language [2]:1
解压安装程序......... 
欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: (GTM-12:00) 日界线西
[ 2]: (GTM-11:00) 萨摩亚群岛
[ 3]: (GTM-10:00) 夏威夷
[ 4]: (GTM-09:00) 阿拉斯加
[ 5]: (GTM-08:00) 太平洋时间(美国和加拿大)
[ 6]: (GTM-07:00) 亚利桑那
[ 7]: (GTM-06:00) 中部时间(美国和加拿大)
[ 8]: (GTM-05:00) 东部部时间(美国和加拿大)
[ 9]: (GTM-04:00) 大西洋时间(美国和加拿大)
[10]: (GTM-03:00) 巴西利亚
[11]: (GTM-02:00) 中大西洋
[12]: (GTM-01:00) 亚速尔群岛
[13]: (GTM) 格林威治标准时间
[14]: (GTM+01:00) 萨拉热窝
[15]: (GTM+02:00) 开罗
[16]: (GTM+03:00) 莫斯科
[17]: (GTM+04:00) 阿布扎比
[18]: (GTM+05:00) 伊斯兰堡
[19]: (GTM+06:00) 达卡
[20]: (GTM+07:00) 曼谷,河内
[21]: (GTM+08:00) 中国标准时间
[22]: (GTM+09:00) 首尔
[23]: (GTM+10:00) 关岛
[24]: (GTM+11:00) 所罗门群岛
[25]: (GTM+12:00) 斐济
[26]: (GTM+13:00) 努库阿勒法
[27]: (GTM+14:00) 基里巴斯
请选择时区 [21]:21

安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 2310M

请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdbms
可用空间: 84G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y

安装前小结
安装位置: /opt/dmdbms
所需空间: 2310M
可用空间: 84G
版本信息: 
有效日期: 
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2024-06-21 14:40:08 
[INFO] 安装 基础 模块...
2024-06-21 14:40:08 
[INFO] 安装达梦数据库...
2024-06-21 14:40:13 
[INFO] 安装 服务器 模块...
2024-06-21 14:40:14 
[INFO] 安装 客户端 模块...
2024-06-21 14:40:18 
[INFO] 安装 驱动 模块...
2024-06-21 14:40:25 
[INFO] 安装 手册 模块...
2024-06-21 14:40:26 
[INFO] 安装 服务 模块...
2024-06-21 14:40:27 
[INFO] 移动日志文件。
2024-06-21 14:40:28 
[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:
/opt/dmdbms/script/root/root_installer.sh

安装结束

数据库安装完成后,需要切换至 root 用户执行上图中的命令 /dmdbms/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。

bash 复制代码
[root@node1 ~]# /opt/dmdbms/script/root/root_installer.sh
移动 /opt/dmdbms/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服务

2.5. 配置环境变量

su username和su - username的区别:

命令su将启动非登录shell,而命令su - (带有短划线选项)会启动登录shell。两个命令的主要区别在于,su -会将shell环境设置为如同以该用户身份重新登录一样,而su仅以该用户身份启动shell,但使用的是原始用户的环境设置。

"-"、"-l"、"--login"意思是一样的,username省略时,代表切换到root账户。

登录shell执行顺序:/etc/profile -> ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

非登录shell执行顺序: ~/.bashrc -> /etc/bashrc

bash 复制代码
[dmdba@node1 ~]$ vi /home/dmdba/.bash_profile 
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/dmdbms/bin"
export DM_HOME="/opt/dmdbms"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
[dmdba@node1 ~]$ source .bash_profile

2.6. 2.6.初始化数据库实例

bash 复制代码
[dmdba@node1 ~]$ /opt/dmdbms/bin/dminit path=/opt/dmdbms/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DM LOG_SIZE=256 PORT_NUM=5236
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2025-03-21
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL

 log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log


 log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log

write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2024-06-21 14:57:58

/opt/dmdbms/data/目录是自动创建的

部分参数说明:

PAGE_SIZE 数据文件使用的页大小。取值:8、16、32,单位:K。缺省值为 8。

EXTENT_SIZE 数据文件使用的簇大小。取值:16、32、64。单位:页数。缺省值为 16。

LOG_SIZE 重做日志文件大小。取值:32 位版本时,取值为 256 和 2048 之间的整数;64 位版本时,取值为 256 和 8192 之间的整数,单位 MB。缺省值为 256MB。现版本无最大限制。

CHARSET 字符集选项。取值:0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR。缺省值为 0。

BLANK_PAD_MODE:设置字符串比较时,结尾空格填充模式是否兼容 ORACLE。1:兼容;0:不兼容。缺省值为 0。当BLANK_PAD_MODE=0时,除去group by 这种分组操作时严格区分外,其他比较、count等操作不严格区分'a'和'a ',认为这两个字符串是相等的。

实例配置完成后使用root用户注册服务

bash 复制代码
[root@node1 ~]# /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DM -dm_ini /opt/dmdbms/data/DAMENG/dm.ini
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDM.service to /usr/lib/systemd/system/DmServiceDM.service.
创建服务(DmServiceDM)完成

启动实例服务

[root@node1 ~]# /opt/dmdbms/bin/DmServiceDMSERVER start

[root@node1 ~]# systemctl start DmServiceDM

2.7. 内存池管理调整

达梦数据库针对从操作系统申请的内存资源进行内存池管理,所有的数据库线程从自己的内存池中进行处理,但是若 glibc 版本大于 2.10,操作系统会给数据库线程再分配一个内存池,这个内存池数据库是无法管理和释放的。所以导致数据库进程的 VIRT(虚拟内存)占用过高,通过添加操作系统参数 MALLOC_ARENA_MAX 禁止操作系统额外为数据库线程分配内存,数据库相关线程只从数据库已申请的内存池中进行资源分配,从而有效控制内存资源使用大小。

bash 复制代码
[root@node1 ~]# rpm -qa|grep glibc
glibc-common-2.17-260.el7.x86_64
glibc-devel-2.17-260.el7.x86_64
glibc-headers-2.17-260.el7.x86_64
glibc-2.17-260.el7.x86_64

##修改操作系统参数
[dmdba@node1 ~]$ vi /opt/dmdbms/bin/DmServiceDM
export MALLOC_ARENA_MAX=4

达梦社区地址
https://eco.dameng.com

相关推荐
Java探秘者3 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2301_786964363 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
阿维的博客日记4 小时前
图文并茂解释水平分表,垂直分表,水平分库,垂直分库
数据库·分库分表
wrx繁星点点5 小时前
事务的四大特性(ACID)
java·开发语言·数据库
小小娥子6 小时前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK6 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
-XWB-6 小时前
【MySQL】数据目录迁移
数据库·mysql
老华带你飞6 小时前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计
我明天再来学Web渗透7 小时前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
Data 3177 小时前
Hive数仓操作(十一)
大数据·数据库·数据仓库·hive·hadoop