StarRocks对服务器配置的基础要求不高,测试环境2核4G内存下也能够正常进行一些小数据规模的查询。在生产环境下或者我们比较关注性能时,StarRocks各实例推荐的硬件配置为:
实例名称 |
配置要求 |
FE |
8核16GB万兆网卡 及以上(并发不高时可与BE混布) |
BE |
16核64GB万兆网卡 及以上 CPU必需支持AVX2指令集 |
Broker |
无特别要求,通常与BE节点混布,与BE节点数量相同 |
为保证集群性能及数据安全性,我们建议生产环境最少使用三台16核32G万兆网卡的服务器。假设node01、node02、node03均为符合要求的服务器,生产环境最小部署架构示例:
集群节点 |
192.168.110.116 (node01) |
192.168.110.117 (node02) |
192.168.110.118 (node03) |
部署服务 |
1 FE(Leader) 1 BE 1 Broker 1 MySQL-Client |
1 FE(Observer) 1 BE 1 Broker |
1 BE 1 Broker |
其中,node01部署一个FE作为Leader,node02部署一个FE Observer提供元数据备份。集群三个节点各部署一个BE,可保证生产环境数据使用StarRocks默认的三副本存储(测试环境可以使用单副本)。
在node01上我们还可以安装mysql-client。StarRocks兼容MySQL协议,推荐使用mysql-client进行访问,也可以使用SQLyog、DBeaver、Navicat、Datagrip等图形化工具,将StarRocks视为MySQL进行连接访问。
特别注意,一台机器上只可以部署该集群的单个FE实例,因为同一集群中所有FE实例的http_port需要相同。
此外,虽然一台机器上可以错开端口部署多个BE实例,但如果需要3副本数据,那么至少需要3台机器各部署一个BE实例,这是因为StarRocks的副本均衡策略不会将同一个Tablet的副本部署在同一个IP的BE上。
在了解了StarRocks集群所需的硬件配置后,我们还需要对集群服务器进行必要的环境校验及系统调优。StarRocks的运行环境准备可简单分为“必需类”与“优化类”两大类。在集群部署前建议结合情况完成下文列出的全部准备工作,因为“优化类”配置对StarRocks性能也会有一定的影响。
1.2.1.1 CPU检查
StarRocks的向量化技术需要CPU的AVX2指令集支持才能发挥效果,所以部署BE服务的机器CPU必需支持AVX2指令集。在Linux中,使用如下命令检查CPU是否支持:
[root@node01 ~]# cat /proc/cpuinfo | grep avx2
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt arat
有结果输出即表明CPU支持。如果无输出,则需要更换支持AVX2的机器。部分情况下,我们会在Windows系统下使用虚拟机安装CentOS作为测试环境,此时我们可以使用CPU-Z、AIDA64等工具在Windows下检查宿主机CPU的指令集支持情况。
1.2.1.2 操作系统检查
StarRocks要求系统为Linux CentOS 7及以上版本(下文演示使用CentOS 7.6),内核版本建议在3.10以上,查看系统及内核信息:
[root@node01 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node01 ~]# uname -a
Linux node01 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
1.2.1.3 服务器IP配置
在部署FE或BE实例时,为了避免服务器多网卡情况下StarRocks无法准确判断出需要使用的IP,我们会在各实例配置文件中使用priority_networks参数绑定IP。
同时,由于当前StarRocks运行时会将集群内各实例绑定的IP等信息存储于本地目录中,若服务器节点内网IP改变,集群实例将无法正常运行(或需要通过较为繁琐的元数据恢复等操作进行处理),故运行StarRocks的服务器IP(内网)需要是固定的。服务器系统配置为固定IP操作见附录一:服务器配置固定IP。
1.2.1.4 集群校时
集群内各FE实例所在服务器最多允许5秒的时钟偏差,可使用NTP协议同步网络时间或进行集群内部校时。具体校时操作见附录二:集群时间同步。
1.2.1.5 修改打开文件数限制
当打开文件数限制过小时,BE实例可能无法正常启动,使用ulimit -n查看文件打开文件数限制:
[root@node01 ~]# ulimit -n
1024
若返回值<65535,则需要修改/etc/security/limits.conf:
[root@node01 ~]# vi /etc/security/limits.conf
在末尾加入配置(表示:所有用户所有组,软限制和硬限制,对文件打开数,设为65535):
* soft nofile 65535
* hard nofile 65535
修改后需要断开远程工具(如Xshell等)后重新连接方可生效,或者,直接再临时修改一次,使用:
[root@node01 ~]# ulimit -n 65535
确认生效:
[root@node01 ~]# ulimit -n
65535
1.2.1.6 检查时区
为避免带有时间戳的数据在数据导入过程中出现时差问题,我们需要检查设置系统时区为Asia/Shanghai:
查看时区:
[root@node01 ~]# timedatectl
Local time: Tue 2021-09-07 19:31:28 CST
Universal time: Tue 2021-09-07 11:31:28 UTC
RTC time: Tue 2021-09-07 11:31:29
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
若时区不为Asia/Shanghai,设置命令:
[root@node01 ~]# timedatectl set-timezone Asia/Shanghai
1.2.1.7 配置防火墙
为保证集群间的正常通信,我们需要根据实际情况选择关闭内网防火墙或开放防火墙中集群实例所需端口,以下操作a或b为二选一:
a)关闭防火墙
使用命令关闭防火墙:
[root@node01 ~]# systemctl stop firewalld
确认防火墙状态已关闭:
[root@node01 ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
再关闭其开机自启:
[root@node01 ~]# systemctl disable firewalld
b)开放防火墙内网端口
StarRocks各实例默认使用的端口有:8000、8030、8040、8060、9010、9020、9030、9050、9060。若上述端口不与服务器中其他服务的端口冲突,通常不建议修改。
以FE为例,部署前若需修改端口,可在配置文件fe/conf/fe.conf中修改为需要使用的端口(再次注意集群中FE的http端口需要一致,默认为8030):
# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
http_port = 8030
rpc_port = 9020
query_port = 9030
edit_log_port = 9010
mysql_service_nio_enabled = true
防火墙开放集群实例默认端口命令:
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --zone=public --add-port=8030/tcp --permanent
firewall-cmd --zone=public --add-port=8040/tcp --permanent
firewall-cmd --zone=public --add-port=8060/tcp --permanent
firewall-cmd --zone=public --add-port=9010/tcp --permanent
firewall-cmd --zone=public --add-port=9020/tcp --permanent
firewall-cmd --zone=public --add-port=9030/tcp --permanent
firewall-cmd --zone=public --add-port=9050/tcp --permanent
firewall-cmd --zone=public --add-port=9060/tcp --permanent
firewall-cmd --reload
查看开放的端口:
[root@node01 ~]# firewall-cmd --list-port
8030/tcp 8000/tcp 8060/tcp 9010/tcp 9020/tcp 9030/tcp 9050/tcp 9060/tcp 8040/tcp
这里注意,上面提到的端口均为内网端口,也即集群内部相互通信的端口,而并非暴露给外网的端口。生产环境下,通常只需要开放两个外网端口。即:
FE http_port:默认8030
FE query_port:默认9030
各端口详细说明见附录三:StarRocks相关端口。
1.2.1.8 安装JDK
StarRocks依赖JDK 1.8+环境,Oracle JDK 1.8+或OpenJDK 8+均可以使用(下文演示使用OpenJDK 1.8.0_41):
[root@node01 ~]# java -version
openjdk version "1.8.0_41"
OpenJDK Runtime Environment (build 1.8.0_41-b04)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
OpenJDK 8的安装操作见附录四:安装OpenJDK。
1.2.1.9 安装mysql-client
StarRocks采用MySQL协议进行通信,用户可通过mysql-client连接到StarRocks集群。选择mysql-client版本时要求采用5.1之后的版本,因为5.1之前不能支持长度超过16个字符的用户名(下文演示使用mysql -client-5.7.35)。
为方便集群部署和运维,我们通常建议在集群服务器中选择一个节点安装mysql-client。当然,我们也可以不安装mysql-client,通过外部的SQLyog、DBeaver、Navicat等图形化工具直接访问StarRocks。
mysql-client-5.7.35的安装操作见附录五:安装mysql-client-5.7.35。
1.2.2.1 关闭SELINUX
若我们的生产服务器已经针对安全性做了一些处理,例如VPN、跳板机、堡垒机等,那建议将SELINUX关闭掉。查看SElinux服务的运行状态:
[root@node01 ~]# getenforce
Enforcing
为避免重启服务器,我们可以先临时关闭再永久关闭。临时关闭:
[root@node01 ~]# setenforce 0
永久关闭:
[root@node01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
验证:
[root@node01 ~]# cat /etc/selinux/config
SELINUX=disabled即为永久关闭:
# 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
1.2.2.2 使用Overcommit
建议使用Overcommit,设为1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何:
[root@node01 ~]# echo 1 | sudo tee /proc/sys/vm/overcommit_memory
1
上面的配置在系统重启后会失效,永久生效的命令为:
[root@node01 ~]# echo "vm.overcommit_memory=1" > /etc/sysctl.conf
[root@node01 ~]# sysctl -p /etc/sysctl.conf
1.2.2.3 不使用交换区
消除交换内存到虚拟内存时对性能的扰动。为避免重启服务器,可先临时调整再永久调整。
查看当前值:
[root@node01 ~]# cat /proc/sys/vm/swappiness
30
临时调整:
[root@node01 ~]# echo 0 | sudo tee /proc/sys/vm/swappiness
永久修改:
[root@node01 ~]# echo vm.swappiness=0 >> /etc/sysctl.conf
[root@node01 ~]# sysctl -p
1.2.2.4 禁用Transparent Huge Pages
查看透明大页的设置和启动状态:
[root@node01 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@node01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
输出结果为[always]表示透明大页已启用,[never]表示透明大页禁用,[madvise]表示只在MADV_HUGEPAGE标志的VMA中使用THP。
临时关闭:
[root@node01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@node01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久关闭(将临时关闭命令添加到/etc/rc.d/rc.local文件中,并赋予执行权限):
[root@node01 ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
[root@node01 ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
[root@node01 ~]# chmod a+x /etc/rc.d/rc.local
验证:
[root@node01 ~]# cat /etc/rc.d/rc.local
1.2.2.5 TCP连接缓冲队列设置
1)tcp_abort_on_overflow
[root@node01 ~]# echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow
1
2)somaxconn
[root@node01 ~]# echo 1024 | sudo tee /proc/sys/net/core/somaxconn
1024
这两个设置在系统重启后也会失效,若希望永久生效,也可以将其追加至/etc/rc.d/rc.local中:
[root@node01 ~]# echo 'echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow' >> /etc/rc.d/rc.local
[root@node01 ~]# echo 'echo 1024 > /proc/sys/net/core/somaxconn' >> /etc/rc.d/rc.local
再次验证:
[root@node01 ~]# cat /etc/rc.d/rc.local
1.2.2.6 最大用户进程数设置
[root@node01 ~]# ulimit -u
14989
临时生效:
[root@node01 ~]# ulimit -u 40960
永久修改:
[root@node01 ~]# vi /etc/security/limits.conf
末尾添加下面的内容后,保存退出。
* soft nproc 40960
* hard nproc 40960
1.2.2.7高并发配置
如果集群负载的并发度较高,建议添加以下配置:
[root@node01 ~]# echo 120000 > /proc/sys/kernel/threads-max
[root@node01 ~]# echo 60000 > /proc/sys/vm/max_map_count
[root@node01 ~]# echo 200000 > /proc/sys/kernel/pid_max
若需要配置永久生效,也可以参考上文的方式将其添加至/etc/rc.d/rc.local中。
通常运维同学向我们提供服务器时,已对服务器IP进行绑定。为方便大家在本地测试,这里给出一个在虚拟机中绑定IP的方法。
配置IP前需要注意虚拟机中当前系统的网络适配器设置是“桥接模式”还是“NAT模式”,两者的区别可以简单理解为桥接模式下虚拟机系统可被同局域网内的其他电脑访问到,NAT模式仅可被安装虚拟机的那台宿主机访问,所以在配置IP时就需要留意不同模式下的网关信息。
以单机部署时使用的服务器starrocks为例,当前路由的网关为192.168.110.1,若我们需要为其绑定IP:192.168.110.98,操作如下:
[root@node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
标红配置为修改或新加配置:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.110.98
GATEWAY=192.168.110.1
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=35d2c8b5-72a1-4775-92ed-e9f089790be2
DEVICE=ens33
ONBOOT=yes
修改后重启网络服务:
[root@node01 ~]# service network restart
查看IP:
[root@node01 ~]# ifconfig
或(最小化安装时默认没有ifconfig命令):
[root@node01 ~]# ip add show
常用的集群时间同步方式有两种,集群联网校时和集群内部校时。生产环境中两种方式选取一种即可。
1、集群联网校时(root用户下进行)
在可访问外网的环境中,我们可以安装NTP服务,让集群中每台机器都与互联网时间同步。
(1)安装NTP校时包
[root@node01 ~]# yum –y install ntp
(2)执行校时命令
[root@node01 ~]# ntpdate cn.pool.ntp.org
(3)加入定时任务
[root@node01 ~]# crontab -e
输入:
00 2 * * * /usr/sbin/ntpdate cn.pool.ntp.org
(表示每隔2个小时自动同步,格式:分、时、日、月、星期)
(4)重启crontab计划任务
[root@node01 ~]# service crond reload
2、集群内部校时(root用户下进行)
内网环境下,我们可以在集群中找一台机器作为时间服务器,其他机器与这台时间服务器定时进行时间同步。这种方式下,集群时间可能是不正确的,但内部时间会保持一致。
(1)所有节点配置
查看ntp是否安装(若未安装,可yum install -y ntp进行安装):
[root@node01 ~]# rpm -qa | grep ntp
ntpdate-4.2.6p5-29.el7.centos.2.x86_64
ntp-4.2.6p5-29.el7.centos.2.x86_64
查看ntpd状态:
[root@node01 ~]# systemctl status ntpd
○ ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
若状态不是dead,可先关闭ntp服务与自启动:
[root@node01 ~]# systemctl stop ntpd
[root@node01 ~]# systemctl disable ntpd
(2)时间服务器配置
1)选择一台服务器作为时间服务器,假设为node01,修改ntp配置文件:
[root@node01 ~]# vi /etc/ntp.conf
修改内容:
a)修改1(以192.168.1.0-192.168.1.255网段为例,授权该网段的所有机器可以从这台机器上查询和同步时间),修改:
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
去掉#,网段改为自己内网的网段:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
b)修改2(集群在局域网中,不适用其他互联网的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
将其注释掉:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
2)修改/etc/sysconfig/ntpd文件
[root@node01 ~]# vi /etc/sysconfig/ntpd
增加内容如下(让硬件时间与系统时间一起同步)
SYNC_HWCLOCK=yes
3)启动ntpd服务
[root@node01 ~]# systemctl start ntpd
4)设置ntpd服务开机启动
[root@node01 ~]# systemctl enable ntpd
(3)其他机器配置
为其他所有非时间服务器的节点配置定时任务:
1)配置10分钟与时间服务器同步一次
[root@node01 ~]# crontab -e
2)编写定时任务:
*/10 * * * * /usr/sbin/ntpdate node01
[node01为时间服务器ip或主机名]
3)重启crontab计划任务
[root@node01 ~]# service crond reload
4)测试(可选)
修改任意非时间服务器机器时间,判断是否与时间服务器同步:
例如,修改node02时间:
[root@node02 ~]# date -s "2021-6-6 06:06:06"
等待10分钟(或先将定时任务修改为1分钟)
查看时间:
[root@node02 ~]# date
Fri Sep 10 04:19:13 CST 2021
实例名称 |
端口名称 |
默认端口 |
通讯方向 |
说明 |
BE |
be_port |
9060 |
FE --> BE |
BE上thrift server的端口,用于接收来自FE 的请求 |
BE |
webserver_port |
8040 |
BE <--> BE |
BE上的http server的端口 |
BE |
heartbeat_service_port |
9050 |
FE --> BE |
BE上心跳服务端口(thrift),用于接收来自FE的心跳 |
BE |
brpc_port |
8060 |
FE <--> BE BE <--> BE |
BE上的brpc端口,用于BE之间通讯 |
FE |
http_port |
8030 |
FE <--> FE 用户 <--> FE |
FE上的http server端口 |
FE |
rpc_port |
9020 |
BE --> FE FE <--> FE |
FE上的thrift server 端口 |
FE |
query_port |
9030 |
用户 <--> FE |
FE上的mysql server端口 |
FE |
edit_log_port |
9010 |
FE <--> FE |
FE上的bdbje之间通信用的端口 |
Broker |
broker_ipc_port |
8000 |
FE --> Broker BE --> Broker |
Broker上的thrift server,用于接收请求 |
方法一:使用yum在线安装
查询系统中是否已有Java环境:
[root@node01 ~]# rpm -qa | grep java
最小化安装的系统是不自带Java环境的。若当前使用的CentOS 7系统中有一些openjdk,且其中有java-1.8.0-openjdk-devel,则说明当前系统已带有Java 8开发环境,可以直接查找openjdk安装路径进行环境变量的配置。若没有openjdk-devel,则说明仅拥有Java运行环境(JRE),如下所示(标红的是openjdk相关的包),就需要再安装java-1.8.0-openjdk-devel:
[root@node01 ~]$ rpm -qa | grep java
tzdata-java-2018e-3.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
OpenJDK官方说明:The java-1.8.0-openjdk package contains just the Java Runtime Environment. If you want to develop Java programs then install the java-1.8.0-openjdk-devel package.
使用yum安装/升级OpenJDK:
[root@node01 ~]# yum -y install java-1.8.0-openjdk-devel
查找OpenJDK安装路径:
[root@node01 ~]# which java //找到java的执行路径
/usr/bin/java
[root@node01 ~]# ls -lrt /usr/bin/java //执行路径指向环境的软连接
lrwxrwxrwx 1 root root 22 Sep 10 21:23 /usr/bin/java -> /etc/alternatives/java
[root@node01 ~]# ls -lrt /etc/alternatives/java //最终指向安装路径
lrwxrwxrwx 1 root root 73 Sep 10 21:23 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre/bin/java
配置环境变量(规范配置方法):
新建/etc/profile.d/my_env.sh文件
[root@node01 java]# vi /etc/profile.d/my_env.sh
添加如下环境变量:
#JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64
export PATH=$PATH:$JAVA_HOME/bin
保存退出后刷新配置(或重启Xshell窗口):
[root@node01 java]# source /etc/profile.d/my_env.sh
[root@node01 ~]# java -version
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-b08)
OpenJDK 64-Bit Server VM (build 25.302-b08, mixed mode)
方法二:离线安装
若集群无外网,则可以使用OpenJDK二进制包进行离线部署。预先下载OpenJDK 1.8.0_41-b04:
https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gzhttps://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
检查当前系统中是否已有Java运行环境(JRE),若有,执行卸载:
检查环境命令:
[root@node01 ~]# rpm -qa | grep java
带有JRE的检查返回值参考上文。
卸载自带JRE命令:
[root@node01 ~]# yum -y remove java*
[root@node01 ~]# yum -y remove tzdata-java*
将openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz上传至/opt/software目录下:
[root@node01 ~]# mkdir /opt/software
[使用Xftp等工具上传安装包]
[root@node01 ~]# cd /opt/software/
[root@node01 software]# ll
total 170204
-rw-r--r-- 1 root root 174287938 Sep 10 19:47 openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
解压:
[root@node01 software]# tar xf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz
将解压后的目录转移至/usr/java/下:
[root@node01 software]# mv /opt/software/java-se-8u41-ri /usr/java
[root@node01 software]# cd /usr/java
[root@node01 java]# ll
total 0
drwxr-xr-x 9 10 143 219 Jan 15 2020 java-se-8u41-ri
配置环境变量(规范配置方法):
新建/etc/profile.d/my_env.sh文件
[root@node01 java]# vi /etc/profile.d/my_env.sh
添加如下环境变量:
#JAVA_HOME
export JAVA_HOME=/usr/java/java-se-8u41-ri
export PATH=$PATH:$JAVA_HOME/bin
保存退出后刷新配置(或重启Xshell窗口):
[root@node01 java]# source /etc/profile.d/my_env.sh
[root@node01 ~]# java -version
openjdk version "1.8.0_41"
OpenJDK Runtime Environment (build 1.8.0_41-b04)
OpenJDK 64-Bit Server VM (build 25.40-b25, mixed mode)
查询是否已存在mariadb:
[root@node01 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
若存在,根据返回的信息进行卸载:
[root@node01 ~]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
mysql-client需要使用的rpm有三个,下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.35-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.35-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.35-1.el7.x86_64.rpm
将rpm包上传至/opt/software目录下:
[root@node01 ~]# cd /opt/software/
[root@node01 software]# ll
total 28764
-rw-r--r-- 1 root root 26658592 Sep 10 02:10 mysql-community-client-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 317800 Sep 10 02:10 mysql-community-common-5.7.35-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 2473348 Sep 10 02:10 mysql-community-libs-5.7.35-1.el7.x86_64.rpm
三个rpm间有依赖关系,安装顺序如下:
mysql-community-common-5.7.35-1.el7.x86_64.rpm
mysql-community-libs-5.7.35-1.el7.x86_64.rpm
mysql-community-client-5.7.35-1.el7.x86_64.rpm
执行安装:
[root@node01 software]# rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
warning: mysql-community-common-5.7.35-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.35-1.e################################# [100%]
[root@node01 software]# rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.35-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.35-1.el7################################# [100%]
[root@node01 software]# rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.35-1.el7.x86_64.rpm: Header V3 DSA/SHA256 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.35-1.e################################# [100%]