greenplum麒麟安装笔记
本周尝试在中标麒麟操作系统下安装greenplum。中标麒麟操作系统采用强化的Linux内核,我们首先准备好三台已安装中标麒麟服务版系统的虚拟机。规划他们的IP地址分别为:
Master:10.81.2.20
Segment1:10.81.2.21
Segment2:10.81.2.22
通过查找greenplum的官方网站可知,greenplum支持的操作系统如下:
Red Hat Enterprise Linux 64-bit 7.x (See the following Note.)
Red Hat Enterprise Linux 64-bit 6.x
CentOS 64-bit 7.x
CentOS 64-bit 6.x
Ubuntu 18.04 LTS
Oracle Linux 64-bit 7, using the Red Hat Compatible Kernel (RHCK)
为了验证是否可在麒麟操作系统下安装,我们首先看下麒麟操作系统:
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 26 13:46:27 CST 2015 x86_64 x86_64 x86_64 GNU/Linux
由此可知,麒麟操作系统支持greenplum的安装。
下一步我们需要配置三台主机的静态IP,通过修改/etc/sysconfig/network-scripts/ifcfg-enoXXXX文件,具体修改如下:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16780032
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16780032
UUID=d1e5a4a9-4a63-4c56-a51d-6cf971293f24
DEVICE=eno16780032
ONBOOT=yes
IPADDR=10.81.2.20
GATEWAY=10.81.2.1
NETMASK=255.255.255.0
DNS1=202.117.80.6
DNS2=202.117.80.7
其中,三台主机的IP分别为:Master:10.81.2.20;Segment1:10.81.2.21;Segment2:10.81.2.22。这样我们还可以通过termius软件远程访问, Termius是一款功能十分强劲且受用户喜爱的跨平台SSH工具,比用虚拟机直接操作更加方便便捷。
在安装greenplum之前我们需要先关闭selinux和防火墙,以后如果要打开防火墙,可以只允许greenplum数据库端口即可。SELinux 全称 Security Enhanced Linux (安全强化 Linux),是Linux内核的安全保镖。防火墙主要是借助硬件和软件的作用于内部和外部网络的环境间产生一种保护的屏障,从而实现对计算机不安全网络因素的阻断。只有在防火墙同意情况下,用户才能够进入计算机内,如果不同意就会被阻挡于外。
关闭或者开启防火墙的命令如下:
systemctl start firewalld.service#启动firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall开机启动
systemctl enable firewalld.service#允许firewall开机启动
关闭selinux的命令如下:
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
修改完后需要重启系统让命令生效
开启防火墙,并预留gp端口命令如下:
firewall-cmd --zone=public --permanent --add-port=5432/tcp
重载服务命令如下:
firewall-cmd --reload
检测端口是否开启命令如下:
firewall-cmd --query-port=5432/tcp
然后需要在/etc/sysctl.conf文件中加入有关共享内存与网络参数配置的内容,具体命令如下:
vi /etc/sysctl.conf
加入以下内容
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
net.ipv4.conf.all.arp_filter = 1
修改完后,输入“:”,wq保存命令并退出。
然后在/etc/security/limits.conf文件中加入限制参数,修改后内容如下:
cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.
#
#Also note that configuration files in /etc/security/limits.d directory,
#which are read in alphabetical order, override the settings in this
#file in case the domain is the same or more specific.
#That means for example that setting a limit for wildcard domain here
#can be overriden with a wildcard setting in a config file in the
#subdirectory, but a user specific setting here can be overriden only
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - a user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open file descriptors
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
# End of file
然后执行命令“sysctl -p”让修改的参数生效,也可以重启系统。
下一步需要下载greenplum并编译安装。
1.下载(克隆)greenplum源码。
先安装git,通过yum install -y git命令安装,这里出现一个问题:yum通过配置的镜像源下载失败,通过查找资料发现原因是镜像源地址发生了更新变化,所以修改yum镜像源地址:具体通过修改yum配置文件:cat /etc/yum.repos.d/ns7-x86_64.repo更新镜像源地址。然后输入命令“yum install -y git”安装git,输入“git clone https://github.com/greenplum-db/gpdb”克隆greenplum源码,这里出现一个问题,git克隆失败,所以换另一种方法,在外部机器下载好greeplum的zip压缩包然后上传到麒麟虚拟机内部。
2.因为是编译安装greenplum,所以需要下载大量的依赖包,具体罗列如下:yum install -y curl-devel bzip2-devel python-devel openssl-devel wget perl-ExtUtils-Embed libxml2-devel openldap-devel pam pam-devel
yum install -y gcc-c++ libtool libaio bison vim-common.x86_64 vim-enhanced.x86_64 flex net-tools.x86_64 apr-devel
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install psi lockfile paramiko setuptools epydoc psutil
pip install --upgrade setuptools
这里出现一个问题:有时候yum install -y 某依赖包会出现失败的情况,反复尝试安装几次就可以成功。
3.编译安装greenplum
①进入gpdb目录(/opt/gpdb-master)。具体编译命令如下,我的安装目录在(/opt/gpsql):
cd /opt/gpdb-master
./configure --prefix=/opt/gpsql --with-gssapi --with-pgport=5432 --with-libedit-preferred --with-perl --with-python --with-openssl --with-pam --with-krb5 --with-ldap --with-libxml --enable-cassert --enable-debug --enable-testutils --enable-debugbreak --enable-depend
make
make install
这里出现一个问题,在执行./configure命令时报错,具体如下:
[root@localhost opt]# cd gpdb-master
[root@localhost gpdb-master]# ./configure --prefix=/opt/gpsql --with-gssapi --with-pgport=5432 --with-libedit-preferred --with-perl --with-python --with-openssl --with-pam --with-krb5 --with-ldap --with-libxml --enable-cassert --enable-debug --enable-testutils --enable-debugbreak --enable-depend
configure: WARNING: unrecognized options: --with-krb5, --enable-testutils, --enable-debugbreak
configure: error: cannot find sources (src/backend/access/common/heaptuple.c) in . or ..
根据第一个configure,删除其中错误的命令:--with-krb5, --enable-testutils, --enable-debugbreak
根据第二个configure,还未找到具体的解决方法,所以尝试换一种方法。
②下载greenplum-db-5.10.2-rhel7-x86_64.zip
通过命令:scp greenplum-db-5.10.2-rhel7-x86_64.zip root@10.81.2.20:/opt/拷贝到master主节点中,然后执行命令:
unzip greenplum-db-5.10.2-rhel7-x86_64.zip
./ greenplum-db-5.10.2-rhel7-x86_64.bin
期间按照提示输入安装目录:/opt/psql
安装结果出现:
Installation complete.
Greenplum Database is installed in /opt/gpsql
Pivotal Greenplum documentation is available
for download at http://gpdb.docs.pivotal.io
即代表安装成功
4.配置集群模式
①首先做个规划;
10.81.2.20 master
10.81.2.21 segment1
10.81.2.22 segment2
通过vi /etc/hostname修改hostname,reboot重启生效。
②配置master主节点host解析
vi /etc/hosts
10.81.2.20 master
10.81.2.21 segment1
10.81.2.22 segment2
③配置segment节点配置host解析
#Segment1:
vi /etc/hosts
10.81.2.21 segment1
#Segment2:
vi /etc/hosts
10.81.2.22 segment2
④创建gp数据库的管理账户gpadmin
groupadd gpadmin
useradd -g gpadmin gpadmin
passwd gpadmin
密码设置为123456
改变greenplum安装目录的用户和用户组:
chown -R gpadmin.gpadmin /opt/gpsql
⑤在master主节点创建自身的数据存储目录
su - gpadmin
mkdir -p /home/gpadmin/masterdata
⑥在master上创建包含所有节点的all_hosts
vi /home/gpadmin/all_hosts
加入以下内容
master
segment1
segment2
⑦在master上创建包含所有segment节点的seg_hosts
vi /home/gpadmin/seg_hosts
加入下面内容
segment1
segment2
⑧在Master节点上为segment节点安装greenplum数据库(通过gpssh),必须在root下进行。这个安装会自动在segment下安装数据库,并创建gpadmin用户
source /opt/gpsql/greenplum_path.sh
gpseginstall -f /home/gpadmin/all_hosts -u gpadmin -p 123456
执行结果如下:
[root@master gpsql]# source greenplum_path.sh
[root@master gpsql]# gpseginstall -f /home/gpadmin/all_hosts -u gpadmin -p 123456
20201221:05:48:22:032246 gpseginstall:master:root-[INFO]:-Installation Info:
link_name greenplum-db
binary_path /opt/gpsql
binary_dir_location /opt
binary_dir_name gpsql
20201221:05:48:22:032246 gpseginstall:master:root-[INFO]:-check cluster password access
*** Enter password for segment1:
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-de-duplicate hostnames
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-master hostname: master
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-check for user gpadmin on cluster
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-add user gpadmin on master
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-add user gpadmin on cluster
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-chown -R gpadmin:gpadmin /opt/greenplum-db
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-chown -R gpadmin:gpadmin /opt/gpsql
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-rm -f /opt/gpsql.tar; rm -f /opt/gpsql.tar.gz
20201221:05:48:27:032246 gpseginstall:master:root-[INFO]:-cd /opt; tar cf gpsql.tar gpsql
20201221:05:48:29:032246 gpseginstall:master:root-[INFO]:-gzip /opt/gpsql.tar
20201221:05:49:05:032246 gpseginstall:master:root-[INFO]:-remote command: mkdir -p /opt
20201221:05:49:05:032246 gpseginstall:master:root-[INFO]:-remote command: rm -rf /opt/gpsql
20201221:05:49:05:032246 gpseginstall:master:root-[INFO]:-scp software to remote location
The authenticity of host 'segment2 (10.81.2.22)' can't be established.
ECDSA key fingerprint is 7f:cb:6a:ca:48:d4:fe:59:d0:0b:a5:16:f9:dd:09:59.
Are you sure you want to continue connecting (yes/no)? root@segment1's password: root@segment2's password:
root@segment2's password:
20201221:05:50:22:032246 gpseginstall:master:root-[INFO]:-remote command: gzip -f -d /opt/gpsql.tar.gz
20201221:05:50:28:032246 gpseginstall:master:root-[INFO]:-md5 check on remote location
20201221:05:50:30:032246 gpseginstall:master:root-[INFO]:-remote command: cd /opt; tar xf gpsql.tar
20201221:05:50:31:032246 gpseginstall:master:root-[INFO]:-remote command: rm -f /opt/gpsql.tar
20201221:05:50:31:032246 gpseginstall:master:root-[INFO]:-remote command: cd /opt; rm -f greenplum-db; ln -fs gpsql greenplum-db
20201221:05:50:32:032246 gpseginstall:master:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /opt/greenplum-db
20201221:05:50:32:032246 gpseginstall:master:root-[INFO]:-remote command: chown -R gpadmin:gpadmin /opt/gpsql
20201221:05:50:32:032246 gpseginstall:master:root-[INFO]:-rm -f /opt/gpsql.tar.gz
20201221:05:50:32:032246 gpseginstall:master:root-[INFO]:-Changing system passwords ...
20201221:05:50:35:032246 gpseginstall:master:root-[INFO]:-exchange ssh keys for user root
20201221:05:50:38:032246 gpseginstall:master:root-[INFO]:-exchange ssh keys for user gpadmin
20201221:05:50:41:032246 gpseginstall:master:root-[INFO]:-/opt/greenplum-db/./sbin/gpfixuserlimts -f /etc/security/limits.conf -u gpadmin
20201221:05:50:41:032246 gpseginstall:master:root-[INFO]:-remote command: . /opt/greenplum-db/./greenplum_path.sh; /opt/greenplum-db/./sbin/gpfixuserlimts -f /etc/security/limits.conf -u gpadmin
20201221:05:50:42:032246 gpseginstall:master:root-[INFO]:-version string on master: gpssh version 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4
20201221:05:50:42:032246 gpseginstall:master:root-[INFO]:-remote command: . /opt/greenplum-db/./greenplum_path.sh; /opt/greenplum-db/./bin/gpssh --version
20201221:05:50:42:032246 gpseginstall:master:root-[INFO]:-remote command: . /opt/gpsql/greenplum_path.sh; /opt/gpsql/bin/gpssh --version
20201221:05:50:42:032246 gpseginstall:master:root-[INFO]:-SUCCESS -- Requested commands completed
[root@master gpsql]#
⑨在Master上使用gpssh工具为所有segment主机创建主数据库和镜像数据目录,root下执行即可。
gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentdata'
gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentmirror'
gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentdata'
gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentmirror'
具体执行结果如下:
第一条:[root@master gpsql]# gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentdata'
[segment1] mkdir -p /home/gpadmin/segmentdata
[segment2] mkdir -p /home/gpadmin/segmentdata
第二条:[root@master gpsql]# gpssh -f /home/gpadmin/seg_hosts -e 'mkdir -p /home/gpadmin/segmentmirror'
[segment1] mkdir -p /home/gpadmin/segmentmirror
[segment2] mkdir -p /home/gpadmin/segmentmirror
第三条:[root@master gpsql]# gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentdata'
[segment1] chown gpadmin.gpadmin /home/gpadmin/segmentdata
[segment2] chown gpadmin.gpadmin /home/gpadmin/segmentdata
第四条:[root@master gpsql]# gpssh -f /home/gpadmin/seg_hosts -e 'chown gpadmin.gpadmin /home/gpadmin/segmentmirror'
[segment1] chown gpadmin.gpadmin /home/gpadmin/segmentmirror
[segment2] chown gpadmin.gpadmin /home/gpadmin/segmentmirror
⑩同步系统时间:
首先通过命令gpssh -f /home/gpadmin/all_hosts -v date查看三体机器的时间
[root@master gpsql]# source greenplum_path.sh
[root@master gpsql]# gpssh -f /home/gpadmin/all_hosts -v date
[WARN] Reference default values as $MASTER_DATA_DIRECTORY/gpssh.conf could not be found
Using delaybeforesend 0.05 and prompt_validation_timeout 1.0
[Reset ...]
[INFO] login segment1
[INFO] login master
[INFO] login segment2
[segment1] 2020年 12月 21日 星期一 06:10:46 CST
[ master] 2020年 12月 21日 星期一 06:10:47 CST
[segment2] 2020年 12月 21日 星期一 06:10:47 CST
[INFO] completed successfully
[Cleanup...]
可以看到,此时三台机器的系统时间与实际时间相差很大,所以需要修正三台机器的时间。
此外,还需要精准同步三台机器的时间,通过命令:gpssh -f /home/gpadmin/all_hosts -v ntpdate同步三台机器的时间。
[root@master gpsql]# gpssh -f /home/gpadmin/all_hosts -v ntpdate
[WARN] Reference default values as $MASTER_DATA_DIRECTORY/gpssh.conf could not be found
Using delaybeforesend 0.05 and prompt_validation_timeout 1.0
[Reset ...]
[INFO] login segment1
[INFO] login master
[INFO] login segment2
[segment1] -bash: ntpdate: 未找到命令
[ master] -bash: ntpdate: 未找到命令
[segment2] -bash: ntpdate: 未找到命令
[INFO] completed successfully
[Cleanup...]
可以发现,执行结果报错:-bash: ntpdate: 未找到命令。
所以通过yum命令安装ntpdate;
[root@master ~]# yum install -y ntpdateate
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.7.12 (default, Aug 24 2017, 06:49:27)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
结果发现yum报错,接下来排查错误
(1)查看yum版本:
[root@master ~]# rpm -qa |grep yum
yum-nkuc-plugin-2.0.1-5.el7.ns7.03.noarch
yum-3.4.3-132.el7.ns7.01.noarch
yum-metadata-parser-1.1.4-10.el7.x86_64
(2)查看python版本:
[root@master ~]# whereis python
python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python2.7-config /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /opt/gpsql/ext/python/bin/python2.7-config /opt/gpsql/ext/python/bin/python2.7 /opt/gpsql/ext/python/bin/python /usr/share/man/man1/python.1.gz
可以看到,安装了多个python版本。
(3)执行python,发现使用的是Python 2.7.12版本。
[root@master ~]# python
Python 2.7.12 (default, Aug 24 2017, 06:49:27)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
所以猜测yum调用了高版本的python。
(4)查找yum文件,并编辑此py文件
[root@master ~]# which yum
/usr/bin/yum
然后修改/usr/bin/yum文件。
将文件中的#!/usr/bin/python改为:#!/usr/bin/python2.7
修改后的文件内容如下(/usr/bin/python):
[root@master ~]# cat /usr/bin/yum
#!/usr/bin/python2.7
import sys
try:
import yum
except ImportError:
print >> sys.stderr, """\
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
%s
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
%s
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
""" % (sys.exc_value, sys.version)
sys.exit(1)
sys.path.insert(0, '/usr/share/yum-cli')
try:
import yummain
yummain.user_main(sys.argv[1:], exit_code=True)
except KeyboardInterrupt, e:
print >> sys.stderr, "\n\nExiting on user cancel."
sys.exit(1)
通过命令reboot重启系统,发现yum命令可以正常使用了,问题成功解决。
接下来修正系统时间,通过命令yum install -y ntpdateate安装ntpdateate。
a. 删除etc/localtime文件,并复制shanghai时区文件替换到这里。
[root@master ~]# rm -f /etc/localtime
[root@master ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
b.然后通过命令ntpdateate -u ntp.api.bz更新下时间。
[root@master ~]# ntpdateate -u ntp.api.bz
20 Dec 23:31:14 ntpdateate[2545]: step time server 114.118.7.163 offset -28038.718959 sec
c.查看时间
[root@master ~]# date
2020年 12月 20日 星期日 23:31:28 CST
d. 时间已经同步过来了,为了避免重启后丢失这些修改,进行保存:
[root@master ~]# hwclock -w
三台机器都执行一次,重新执行 gpssh -f /home/gpadmin/all_hosts -v date
[root@master gpsql]# gpssh -f /home/gpadmin/all_hosts -v date
[WARN] Reference default values as $MASTER_DATA_DIRECTORY/gpssh.conf could not be found
Using delaybeforesend 0.05 and prompt_validation_timeout 1.0
[Reset ...]
[INFO] login master
[INFO] login segment1
[INFO] login segment2
[ master] 2020年 12月 20日 星期日 23:35:55 CST
[segment1] 2020年 12月 20日 星期日 23:35:55 CST
[segment2] 2020年 12月 20日 星期日 23:35:55 CST
[INFO] completed successfully
[Cleanup...]
发现,此时三台机器的时间已修正。
然后再执行gpssh -f /home/gpadmin/all_hosts -v ntpdate
[root@master gpsql]# gpssh -f /home/gpadmin/all_hosts -v ntpdate
[WARN] Reference default values as $MASTER_DATA_DIRECTORY/gpssh.conf could not be found
Using delaybeforesend 0.05 and prompt_validation_timeout 1.0
[Reset ...]
[INFO] login segment1
[INFO] login master
[INFO] login segment2
[segment1] 20 Dec 23:39:47 ntpdate[1926]: no servers can be used, exiting
[ master] 20 Dec 23:39:47 ntpdate[2887]: no servers can be used, exiting
[segment2] 20 Dec 23:39:47 ntpdate[1890]: no servers can be used, exiting
[INFO] completed successfully
[Cleanup...]
此时,三台机器的系统时间已同步完成。
⑪配置.bash_profile 环境变量
切换到gpadmin用户,修改文件在后面添加,如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
source /opt/gpsql/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1
修改完,执行命令. ~/.bash_profile使修改生效。
⑫配置数据库启动参数文件
vi /home/gpadmin/gpinitsystem_config,添加如下内容:
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/segmentdata /home/gpadmin/segmentdata)
MASTER_HOSTNAME=master
MASTER_DIRECTORY=/home/gpadmin/masterdata
MASTER_PORT=5432
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/segmentmirror /home/gpadmin/segmentmirror)
⑬初始化greenplum,执行如下两条命令
[gpadmin@master gpsql]$ source greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
执行结果如下:
20201220:23:59:21:003271 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, Completed
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
..
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Configuring build for standard array
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20201220:23:59:22:003271 gpinitsystem:master:gpadmin-[INFO]:-Building primary segment instance array, please wait...
....
20201220:23:59:23:003271 gpinitsystem:master:gpadmin-[INFO]:-Building group mirror array type , please wait...
....
20201220:23:59:24:003271 gpinitsystem:master:gpadmin-[INFO]:-Checking Master host
20201220:23:59:24:003271 gpinitsystem:master:gpadmin-[INFO]:-Checking new segment hosts, please wait...
........
20201220:23:59:30:003271 gpinitsystem:master:gpadmin-[INFO]:-Checking new segment hosts, Completed
20201220:23:59:30:003271 gpinitsystem:master:gpadmin-[INFO]:-Building the Master instance database, please wait...
20201220:23:59:36:003271 gpinitsystem:master:gpadmin-[INFO]:-Starting the Master in admin mode
20201220:23:59:41:003271 gpinitsystem:master:gpadmin-[INFO]:-Commencing parallel build of primary segment instances
20201220:23:59:41:003271 gpinitsystem:master:gpadmin-[INFO]:-Spawning parallel processes batch [1], please wait...
....
20201220:23:59:41:003271 gpinitsystem:master:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
.................
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Parallel process exit status
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Total processes marked as completed = 4
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Total processes marked as killed = 0
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Total processes marked as failed = 0
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Commencing parallel build of mirror segment instances
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Spawning parallel processes batch [1], please wait...
....
20201220:23:59:58:003271 gpinitsystem:master:gpadmin-[INFO]:-Waiting for parallel processes batch [1], please wait...
...............
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Parallel process exit status
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Total processes marked as completed = 0
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Total processes marked as killed = 0
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[WARN]:-Total processes marked as failed = 4 <<<<<
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:------------------------------------------------
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[FATAL]:-Errors generated from parallel processes
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Dumped contents of status file to the log file
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Building composite backout file
20201221:00:00:14:gpinitsystem:master:gpadmin-[FATAL]:-Failures detected, see log file /home/gpadmin/gpAdminLogs/gpinitsystem_20201220.log for more detail Script Exiting!
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[WARN]:-Script has left Greenplum Database in an incomplete state
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[WARN]:-Run command /bin/bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20201220_235921 to remove these changes
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-Start Function BACKOUT_COMMAND
20201221:00:00:14:003271 gpinitsystem:master:gpadmin-[INFO]:-End Function BACKOUT_COMMAND
可以看到,初始化出现错误。
重新输入初始化的命令:
[root@master gpsql]# source greenplum_path.sh
[root@master gpsql]# gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:16:38:55:021189 gpinitsystem:master:root-[INFO]:-Checking configuration parameters, please wait...
20210106:16:38:55:gpinitsystem:master:root-[FATAL]:-Unable to run this script as root Script Exiting!
[root@master gpsql]# su gpadmin
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20210106:16:39:07:gpinitsystem:master:gpadmin-[FATAL]:-Master host data directory /home/gpadmin/masterdata/gpseg-1 already exists Script Exiting!
根据报错提示:删除相应的文件
删除命令:rm -rf /home/gpadmin/masterdata/gpseg-1
重新执行初始化命令:
[root@master gpsql]# source greenplum_path.sh
[root@master gpsql]# gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:16:38:55:021189 gpinitsystem:master:root-[INFO]:-Checking configuration parameters, please wait...
20210106:16:38:55:gpinitsystem:master:root-[FATAL]:-Unable to run this script as root Script Exiting!
[root@master gpsql]# su gpadmin
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20210106:16:39:07:021371 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20210106:16:39:07:gpinitsystem:master:gpadmin-[FATAL]:-Master host data directory /home/gpadmin/masterdata/gpseg-1 already exists Script Exiting!
[gpadmin@master gpsql]$ rm -rf /home/gpadmin/masterdata/gpseg-1
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, Completed
20210106:17:11:55:022159 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
..
20210106:17:12:20:022159 gpinitsystem:master:gpadmin-[INFO]:-Configuring build for standard array
20210106:17:12:20:022159 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20210106:17:12:20:022159 gpinitsystem:master:gpadmin-[INFO]:-Building primary segment instance array, please wait...
....
20210106:17:14:06:022159 gpinitsystem:master:gpadmin-[INFO]:-Building group mirror array type , please wait...
....
20210106:17:15:51:022159 gpinitsystem:master:gpadmin-[INFO]:-Checking Master host
20210106:17:15:51:gpinitsystem:master:gpadmin-[FATAL]:-Found indication of postmaster process on port 5432 on Master host Script Exiting!
发现报错:Found indication of postmaster process on port 5432 on Master host Script Exiting!
可能是端口的问题,输入命令:lsof -i:5432查询端口5432的进程信息,报错:[gpadmin@master gpsql]$ lsof -i:5432
bash: lsof: 未找到命令
所以输入命令yum install lsof -y安装lsof。结果又报错:ImportError: No module named site
经上网查询,输入命令:unset PYTHONPATH、unset PYTHONHOME,yum修复完成。
输入命令:yum install lsof -y安装lsof。
然后查看端口5432的进程信息:
[root@master gpsql]# lsof -i:5432
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 5848 gpadmin 3u IPv4 23334 0t0 TCP *:postgres (LISTEN)
postgres 5848 gpadmin 4u IPv6 23335 0t0 TCP *:postgres (LISTEN)
然后输入命令:kill -9 5848来杀死进程。
再次输入初始化命令。
[gpadmin@master gpsql]$ source /opt/gpsql/greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, Completed
20210106:20:49:07:026650 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
..
20210106:20:49:32:026650 gpinitsystem:master:gpadmin-[INFO]:-Configuring build for standard array
20210106:20:49:32:026650 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20210106:20:49:32:026650 gpinitsystem:master:gpadmin-[INFO]:-Building primary segment instance array, please wait...
....
20210106:20:51:18:026650 gpinitsystem:master:gpadmin-[INFO]:-Building group mirror array type , please wait...
....
20210106:20:53:03:026650 gpinitsystem:master:gpadmin-[INFO]:-Checking Master host
20210106:20:53:03:026650 gpinitsystem:master:gpadmin-[WARN]:-Have lock file /tmp/.s.PGSQL.5432.lock but no process running on port 5432
20210106:20:53:03:gpinitsystem:master:gpadmin-[FATAL]:-Found indication of postmaster process on port 5432 on Master host Script Exiting!
再次报错,错误信息:Have lock file /tmp/.s.PGSQL.5432.lock but no process running on port 5432
输入命令:rm -rf /tmp/.s.PGSQL.5432.lock 删除该文件
再次输入初始化命令。
[gpadmin@master gpsql]$ source /opt/gpsql/greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, please wait...
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Reading Greenplum configuration file /home/gpadmin/gpinitsystem_config
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Locale has not been set in /home/gpadmin/gpinitsystem_config, will set to default value
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Locale set to en_US.utf8
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-No DATABASE_NAME set, will exit following template1 updates
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-MASTER_MAX_CONNECT not set, will set to default value 250
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Checking configuration parameters, Completed
20210106:20:56:48:027650 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, please wait...
..
20210106:20:57:13:027650 gpinitsystem:master:gpadmin-[INFO]:-Configuring build for standard array
20210106:20:57:13:027650 gpinitsystem:master:gpadmin-[INFO]:-Commencing multi-home checks, Completed
20210106:20:57:13:027650 gpinitsystem:master:gpadmin-[INFO]:-Building primary segment instance array, please wait...
....
20210106:20:58:58:027650 gpinitsystem:master:gpadmin-[INFO]:-Building group mirror array type , please wait...
....
20210106:21:00:44:027650 gpinitsystem:master:gpadmin-[INFO]:-Checking Master host
20210106:21:00:44:027650 gpinitsystem:master:gpadmin-[INFO]:-Checking new segment hosts, please wait...
.20210106:21:01:54:gpinitsystem:master:gpadmin-[FATAL]:-Instance directory /home/gpadmin/segmentdata/gpseg0 exists on segment instance segment1 Script Exiting!
发现报错,输入命令rm -rf /home/gpadmin/segmentdata/gpseg0删除该文件。
根据报错提示,可以输入命令:
/bin/bash/home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_*********(具体为某年某月某日的日志)可以直接将无用的文件删除掉,不需要手动一一删除。
重新执行命令:
[gpadmin@master gpsql]$ source /opt/gpsql/greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
依旧报错,查看具体日志发现,$GPHOME路径为/opt/greenplum-db/,所以发现source的路径错误,所以正确的source路径为source /opt/greenplum-db/greenplum_path.sh
同时修改配置.bash_profile 环境变量(每台机器都要配置),具体操作如下:
[gpadmin@master ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PAT
source /opt/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/masterdata/gpseg-1
修改之后,让环境变量生效,执行命令:[gpadmin@ master ~]$ . ~/.bash_profile
重新执行初始化命令:
[gpadmin@master gpsql]$ source /opt/ greenplum-db /greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
依旧报错,查看具体日志发现报错信息为如下几条:
-gpstop failed. (Reason='could not translate host name "localhost" to address: Name or service not known
socket.gaierror: [Errno -2] Name or service not known
greenplum socket.gaierror: [Errno -3] Temporary failure in name resolution
通过查阅资料,应该是hostname的解析问题
具体解决方法如下:
1.修改主机名:
[root@mdw1 ~]# vim /etc/sysconfig/network
# Created by anaconda
HOSTNAME=master(各主机依此修改)
2. [gpadmin@master ~]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.81.2.20 master
10.81.2.21 segment1
10.81.2.22 segment2
重新执行初始化命令:
[gpadmin@master gpsql]$ source /opt/ greenplum-db /greenplum_path.sh
[gpadmin@master gpsql]$ gpinitsystem -c /home/gpadmin/gpinitsystem_config -a
过程中输入Y,继续初始化过程。
正常的话出现如下结果:
[gpadmin@ master ~]$ psql -d postgrespsql
(8.3.23)Type "help" for help.
postgres=# select * from gp_segment_configuration ;
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port ------+---------+------+----------------+------+--------+-------+----------+---------+------------------ 1 | -1 | p | p | s | u | 2346 | mdw | mdw | 2 | 0 | p | p | s | u | 42000 | mdw | mdw | 43000 4 | 2 | p | p | s | u | 42000 | sdw1 | sdw1 | 43000 6 | 4 | p | p | s | u | 42000 | sdw2 | sdw2 | 43000 3 | 1 | p | p | s | u | 42001 | mdw | mdw | 43001 5 | 3 | p | p | s | u | 42001 | sdw1 | sdw1 | 43001 7 | 5 | p | p | s | u | 42001 | sdw2 | sdw2 | 43001 8 | 0 | m | m | s | u | 53000 | sdw1 | sdw1 | 54000 9 | 1 | m | m | s | u | 53001 | sdw1 | sdw1 | 54001 10 | 2 | m | m | s | u | 53000 | sdw2 | sdw2 | 54000 11 | 3 | m | m | s | u | 53001 | sdw2 | sdw2 | 54001 12 | 4 | m | m | s | u | 53000 | mdw | mdw | 54000 13 | 5 | m | m | s | u | 53001 | mdw | mdw | 54001(13 rows)
greenplum麒麟安装笔记相关推荐
- 如何安装python3.7.4_银河麒麟安装Python3.7.4以及升级自带OpenSSL
银河麒麟安装Python3.7.4以及升级自带OpenSSL 升级OpenSSL 1.下载opensslwget https://www.openssl.org/source/openssl-1.1. ...
- laravel安装笔记 (转)
一.安装composer 安装之前将\php\php.ini文件中的php_openssl.dll扩展库开启,否则composer在安装过程中会出现错误提示. (我在安装过程中发现apache目录下的 ...
- 前端开发学习笔记 - 1. Node.JS安装笔记
Node.JS安装笔记 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an ...
- Oracle安装笔记
Oracle安装笔记 出现错误后不要慌,最主要的是看log文件的提示,其中比较简单的文件是install目录下的make.log 错误一: client_shared For example: /us ...
- convirt2.5在虚拟机上安装笔记
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- SVN的安装笔记和要注意的问题
SVN的安装笔记和要注意的问题 之前装的SVN 1.3.2,按网上说的教程,一配置就可以用了,但这次换了1.4.2的最新版本, 只是设置了server.conf和passwd后,依然在导入项目时,说验 ...
- pycharm不同py文件共享参数_PyCharm安装笔记
1. 介绍 1.1 介绍 今天福哥带着大家学习如何安装非常好用的Python编辑器,也就是jetbrains全家桶的PyCharm编辑器. PyCharm是jetbrans开发的一款专门用来编写Pyt ...
- ubuntu18.04 Qt Creator 安装+ROS Qt Creator Plug-in 插件安装笔记
ubuntu18.04 Qt Creator 安装+ROS Qt Creator Plug-in 插件安装笔记: 一.Qt Creator 5.10安装 官网下载地址: http://download ...
- Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)下
Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)下 一.前言 二.化繁为简 二.补充说明 三.测试ROS 是否安装成功 一.前言 最近需要学习ROS和python,于 ...
最新文章
- 啥不懂也能动手搭建属于自己的博客网站
- 面试:说说你对 HashMap 的认识?
- Google(谷歌)中国工程研究院 工程师 方坤 对学生朋友的一些建议
- 基于simulink的QAM-WIMAX的系统仿真
- 160个Crackme037
- PyCharm-缩进 格式化代码
- 如何对数据库中的表以及表中的字段进行重命名
- php config(),php config
- Leetcode--123. 买卖股票的最佳时间Ⅲ
- Postgresql 填充所有的时间点
- 3-9in-place的概念和广播机制
- 谷歌提出新型自动语音识别数据增强大法,直接对频谱图“动刀”,提升模型表现...
- 怎么更改AD域用户账号和密码_AD域管理中那些实用的软件
- 纯手工获取的WINDOWS 7 32位 SP1后续补丁集ver201509的官方下载地址
- java商家查询订单功能_查询订单详情示例代码
- 微信二维码生成步骤(本人亲测)
- 数据一致性、准确性、完整性、及时性、有效性
- 安科瑞ACX电瓶车智能充电桩,支付方式可选择刷卡、扫码、免费充电使用,设备内部可引出10路出线至专用插座
- 【Redis】技术评审要点
- 2013全国计算机一级考试,2013全国计算机等级考试一级试题及讲解