GaussDB 200 单机实例安装使用教程
由于 GaussDB100 在六月份才开源,所以这里使用 GaussDB200 来进行单机安装练手,尝鲜。
过春风十里,尽荠麦青青。
简介
高斯 DB 是华为历时十几年自研的结果,虽然是站在巨人的肩膀上成长的,但其优异的成绩还是让全世界不得不重新审视其带来的技术冲击,相信在产品公测完成后,国内大型厂商一定会响应政策,进行新一轮数据迭代。
环境准备
- 本次服务器配置:CentOS7.4(目前最高支持到此版本,请特别注意版本) 运存 64GB(官方建议 >16G) 内存 770GB
- 软件安装包准备:
软件包名称 适用系统 FusionInsight_Manager_6.5.1_RHEL.tar.gz FusionInsight_BASE_6.5.1_RHEL.tar.gz GaussDB_200_6.5.1_RHEL.tar.gz (可选)FusionInsight_MPPDBMonitor_6.5.1_RHEL.tar.gz FusionInsight_SetupTool_6.5.1.tar.gz RedHat/CentOS/EulerOS - 提示:提示:官方要求 GaussDB200 至少需要 3 个节点来安装,但此为测试练手使用,所以修改了参数文件的节点数,如需要部署多节点,配置文件请使用官方配置文件生成器进行生成----链接后附
服务器安装前准备
操作系统的配置
- 获取服务器当前 ip
如:本机 190.168.0.55 - 修改主机名称
使用命令:hostnamectl --static
set-hostname 主机名
如:hostnamectl - - static set -hostname host0 - 配置 hosts 文件 使用命令:vi /etc/hosts
添加如下内容:本机 ip 主机名
如:192.168.0.55 host0
注意:如果打开文件后,没有 120.0.0.1 localhost 这样的配置,请加上这一行;并且 host0 只能对应一个 ip,请勿重复添加。😳
- 修改 os 的参数:使用命令:vi /etc/sysctl.conf 加在最后一行
添加内容:vm.min_free_kbytes = (free -k|grep Mem|awk '{print $2}')*5%
官方解释:强制 Linux 虚拟内存保留空闲空间的最小值,系统总内存的 5%
- 挂载操作系统镜像:以 root 用户登录主机,执行命令:mount 虚拟光盘文件名 /media/ -o loop
如:mount -t iso9660 -o,loop /opt/CentOS-7-x86_64-DVD-1708.iso /media/
注意:挂在使用的镜像必须与服务器系统同版本,如挂载提示 readonly 方式挂载,可在命令前加 sudo 进行重试。根节点下 media 内有文件则证明挂载成功。
- 检查 OS 编码格式是否为 en_US.UTF-8,否 请执行: 使用命令:locale
如:RedHat 7.x、 CentOS
7.x、 EulerOS 系统下执行 vi /etc/locale.conf 命令,将
“ LANG”的值修改为“ en_US.UTF-8”,按“ Esc”键退出编辑,并输入 :wq 保存
退出,重启操作系统(reboot)后配置生效。(其它系统可参照官方提供的指南进行修改,链接后附。 - 下载所需依赖包:(防止缺包情况)
执行命令:yum install -y OpenIPMI openldap
openldap-clients openldap-servers perl-Perlilog procmail python-dateutil
python-dmidecode python-gudev python-simplejson pytz
sdparm
安装 GaussDB 200
- 上传安装包 /opt 目录下
- 执行 tar 命令,解压安装包文件
如:
[root@host0 opt]# tar -zxvf FusionInsight_Manager_6.5.1_RHEL.tar.gz [root@host0 opt]# tar -zxvf GaussDB_200_6.5.1_RHEL.tar.gz [root@host0 opt]# tar -zxvf FusionInsight_SetupTool_6.5.1.tar.gz
得到三个新增文件
FusionInsight_Manager (解压新增)
FusionInsight_MPPDB_6.5.1_RHEL.tar.gz (GaussDB_200_6.5.1_RHEL.tar.gz 解压新增)
FusionInsight_SetupTool (解压新增)
- 拷贝安装包:将除 Manager 外的其他部件包拷贝至/opt/FusionInsight_Manager/software/packs”路径下(如同时安装其他部件,需要一起拷贝)如:
[root@host0 opt]# cp FusionInsight_BASE_6.5.1_RHEL.tar.gz FusionInsight_MPPDBMonitor_6.5.1_RHEL.tar.gz FusionInsight_MPPDB_6.5.1_RHEL.tar.gz FusionInsight_Manager/software/packs/
- 进行预安装配置:将要安装 GaussDB 200 的节点上的“/opt/FusionInsight_SetupTool/preset”文件夹拷贝至节点的“/opt”目录下,此步骤为必须强制执行,并执行 sh /opt/preset/preset.sh 命令 如:
[root@host0 opt]# cp -r /opt/FusionInsight_SetupTool/preset/ /opt/ [root@host0 opt]# sh /opt/preset/preset.sh start to preSet success to preSet.
- 编辑 FusionInsight_SetupTool 相关配置文件,执行命令:vim /opt/FusionInsight_SetupTool/preinstall/preinstall.ini 如:
## Description: FusionInsight Preinstall Configuration ## Type: List ## Default: "" # # Description: A list of host names or IP addresses. # Examples: # g_hosts="10.18.40.[1-5]" # g_hosts="10.18.[10-12].[1-200],192.188.45.[1-5,40],host[1-100]" # g_hosts="192.168.0.55" ## Type: Integer ## Default: 0 # # # Description: Disk formatting options. # 0 Don't Format # 1 Format the disk (Don't force) # 2 Force to format the disk # 3 Don't Format, Just install diskmgt # g_parted=0 ## Type: List ## Default: "" # # Description: Disk format configuration. # if g_parted is 1 or 2, g_parted_conf not null # Examples: # # g_parted_conf=" # 10.18.40.[1-3]:master.ini; # 10.18.40.[4-10],host[1-100]:slave.ini; # host[101-200]:test.ini # " #g_parted_conf="10.18.40.[4-5]:master.ini;10.18.40.[6-7]:slave.ini;10.18.40.8:null.ini" # # Remarks: 1.Partition configuration file (master.ini, slave.ini, null.ini ..) # in partition/ini directory. # # 2.Partition configuration file support custom. # # 3.Nodes this don't need to format must be configured to null.ini. g_parted_conf="192.168.0.55:null.ini" ## Type: List ## Default: "" # # Description: hostname configuration. g_hostname_conf not null # Examples: # # g_hostname_conf=" # 10.18.40.1:10.18.41.1:host1; # 10.18.40.2:10.18.41.2:; # 10.18.40.3:10.18.41.3:host3; # " #g_hostname_conf="10.18.40.1:10.18.41.1:host1;10.18.40.2:10.18.41.2:;10.18.40.3:10.18.41.3:host3;" # # Remarks: 1. g_hostname_conf="OMIP:BusinessIP:HostName" # # 2. If you do not intend to configure the host name , then set the host name empty. # g_hostname_conf="OMIP:BusinessIP:" # g_hostname_conf=";10.18.40.2:10.18.41.2:" # g_hostname_conf="192.168.0.55:192.168.0.55:host0" ## Type: Boolean ## Default: 1 # # # Description: Add missing RPM packages. # 0 No. # 1 Yes. # g_add_pkg=1 ## Type: Directory ## Default: "" # # Description: The Source of RPM packages # if g_add_pkg is 1, g_pkgs_dir not null. # Examples: # # g_pkgs_dir="redhat-6.4:/media/redhat/;suse-11.1:/media/suse11-1/" # # g_pkgs_dir="redhat-6.4:/media/" # # g_pkgs_dir="suse-11.1:/media/" # # g_pkgs_dir="centos-6.4:/media/" # # g_pkgs_dir="euleros-2.0sp2:/media/" # # g_pkgs_dir="euleros-2.0:/media/" # # Remarks: Mount iso file command: # mount rhel-server-6.4-x86_64-dvd.iso /media/ -o loop # g_pkgs_dir="centos-7.4:/media/" ## Type: Boolean ## Default: 1 # # # Description: turn off swap. # 0 No, do nothing. # 1 Yes, will turn off swap. # g_swap_off=1 ## Type: String ## Default: "root" # # Description: SSH service login name. # g_user_name="root" ## Type: Integer ## Default: 22 # # Description: SSH service port. # g_port=22 ## Type: File ## Default: "/tmp/fi-preinstall.log" # # Description: Log file. # g_log_file="/tmp/fi-preinstall.log" ## Type: Boolean ## Default: 1 # # # Description: check before preinstall. # 0 No. # 1 Yes. # g_check=1 ## Type: Boolean ## Default: 1 # # # Description: Open the debug mode. # 0 No. # 1 Yes. # g_debug=0 ## Type: Boolean ## Default: 0 # # Description: disable/enable WCE # 0 disable WCE # 1 enable WCE # g_wce_conf=0 ## Type: String ## Default: "" # # Description: Check the processor type. # # Examples: # # g_platform="x86_64" # # g_platform="aarch64" # g_platform="x86_64" ## Type: String ## Default: "" # # Description: install products type. # # Examples: # # g_optimize="default" # # g_optimize="default" ## Type: Boolean ## Default: "0" # # Description: use kms encrypt luks # 0 no # 1 yes # # Examples: # g_kms_conf=0 # g_kms_conf=0 ## Type: Boolean # Default: 0 # # # Description: open the core dump # 0 No # 1 Yes g_core_dump=0 ## Type: String # Default: "/var/log/core" # # # Description: core dump file dir # e.g. "/var/log/core" # g_core_dump_dir="/var/log/core"
其中需要修改的参数解释如下:(请依据自身配置修改):
g_hostname_conf="192.168.0.55:192.168.0.55:host0" --主机配置,此处为单平面,管理网络和业务网络相同 g_add_pkg=1 --是否配置rmp包,1为配置 g_pkgs_dir="centos-7.4:/media/" --rmp包源 g_swap_off=1 --是否关闭swap,1为关闭 g_user_name="root" --安装访问用户 g_port=22 --ssh端口 g_log_file="/tmp/fi-preinstall.log" --安装日志文件 g_check=1 --安装前进行检查 g_debug=0 --打开调试模式,0为不打开 g_wce_conf=0 --打开磁盘缓存,0 为关闭 g_platform="x86_64" --指定系统平台,x86_64为x86平台 g_optimize="default" g_kms_conf=0 --使用kms加密luks g_core_dump=0 --是否打开core dump,0表示关闭 g_core_dump_dir="/var/log/core" --指定core dump 日志
- 配置并检查安装环境
- 执行自动检测脚本:./setuptool.sh preinstall -n
-
一定要加-n 参数,setuptool.sh 脚本中有解释该选项作用
when the -n parameter is used, the precheck.sh script will not be
executed after the preinstall.sh script is executed。
如果这里不加-n 会自动调用 precheck.sh,因为本案例是单服务器安装 GaussDB 200,不满足官方推荐的 3 个节点,故无法通过 precheck.sh 预安装验证,所以要加-n 跳过。
如:
[root@host0 FusionInsight_SetupTool]# cd /opt/FusionInsight_SetupTool [root@host0 FusionInsight_SetupTool]# ./setuptool.sh preinstall -n
然后请输入 root 用户密码,等待执行到 100% 则证明成功
安装 Manager
- 配置文件:进入 Manager 安装目录,并打开 Manager 安装配置文件。
如:
# cd /opt/FusionInsight_Manager/software
[root@host0 software]# vi install.ini
编辑文件:
ha_mode=single --将double改为single local_ip1=192.168.0.55 --修改为本地服务ip local_ip2= local_ip3= local_ip4= peer_ip1= peer_ip2= peer_ip3= peer_ip4= ws_float_ip= ws_float_ip_interface= ws_float_ip_netmask= ws_gateway= om_float_ip= om_float_ip_interface= om_float_ip_netmask= om_gateway= ntp_server_ip= om_mediator_ip= sso_ip= sso_port= #配置集群服务的home目录 bigdata_home=/opt/GaussDB200/app #配置集群的数据目录 bigdata_data_home=/opt/GaussDB200/data cluster_nodes_scale= tls_protocol_min= realm_parse_ip= kerberos_realm=
- 创建安装目录:要与配置文件里保持一致
如:
mkdir -p /opt/GaussDB200/app mkdir -p /opt/GaussDB200/data
- 进行 manager 安装:
执行如下命令:
./install.sh -f /opt/FusionInsight_Manager/software/install.ini
如:
- 执行单机实例配置脚本:切换 omm 用户执行
如:
sh ${BIGDATA_HOME}/om-server/om/sbin/enable_single_host_cluster.sh
- 重启 controller
如:
sh ${BIGDATA_HOME}/om-server/om/sbin/restart-controller.sh
效果如下:
Restarting controller service using configuration /opt/GaussDB200/app/om-server/om/sbin/../etc/om Enter into stop-controller.sh End into stop-controller.sh Enter into start-controller.sh Controller start with process id 12935. End into start-controller.sh
进入登录界面,安装集群与服务
- 输入上面提示的集群链接:http://192.168.0.55:80/web/ 默认密码 admin/Admin@123
- 第一步会提示修改密码,请按步骤操作
- 第二步点击创建集群,如图配置
请参照图片进行配置,如无特殊操作,默认下一步。
(此处 root 为服务器 root 用户)
(选择安装服务)
注意:配置 mppDB 时,mppdb.dn.slicenfileDir 值需要在服务器上查看配置文件获取。如:
/opt/FusionInsight_SetupTool/preinstall/partition/ini-plugin/conf/mppdb1.conf dir =/srv/BigData/mppdb/data1
至此,GaussDB200 单机部署实例已完成。👌 🎉
GaussDB 的连接与使用
本机连接示例
- 确认连接信息
- 以操作系统用户 omm 登录安装有 MPPDB 服务的任一主机。执行 source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile 命令启动环境变量。
- 使用“gs_om -t status --detail”命令查询集群各实例情况.如下部署了 CN 实例的服务器 IP 地址分别为 192.168.10.11、192.168.10.12 和 192.168.0.13。CN 数据路径为“/srv/BigData/mppdb/data1/coordinator”。
gs_om -t status --detail [ Coordinator State ] node node_ip instance state ----------------------------------------------------------------------------- 1 plat1 192.168.0.11 5001 /srv/BigData/mppdb/data1/coordinator Normal 2 plat2 192.168.0.12 5002 /srv/BigData/mppdb/data1/coordinator Normal 3 plat3 192.168.0.13 5003 /srv/BigData/mppdb/data1/coordinator Normal
3. 确认CN的端口号。
在 2 查到的 CN 数据路径下的 postgresql.conf 文件中查看端口号信息。示例如下:cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf | grep port
查看如下:25308 为 CN 的端口号。
port = 25308 # (change requires restart) #comm_sctp_port = 1024 # Assigned by installation (change requires restart) #comm_control_port = 10001 # Assigned by installation (change requires restart) # supported by the operating system: # e.g. 'localhost=10.145.130.2 localport=12211 remotehost=10.145.130.3 remoteport=12212, localhost=10.145.133.2 localport=12213 remotehost=10.145.133.3 remoteport=12214' # e.g. 'localhost=10.145.130.2 localport=12311 remotehost=10.145.130.4 remoteport=12312, localhost=10.145.133.2 localport=12313 remotehost=10.145.133.4 remoteport=12314' # %r = remote host and port alarm_report_interval = 10 gtm_port = 6000 # Port of GTM gtm_port1 = 6500 # Port1 of GTM pooler_port = 8001 support_extended_features=true
- 连接使用
- 以操作系统用户 omm 登录 CN 所在主机,执行 source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile 命令启动环境变量
- 连接数据库。
gsql -d postgres -p 25308
当结果显示为如下信息,则表示连接成功。
gsql ((GaussDB Kernel V300R002C00 build 50dc16a6) compiled at 2019-01-29 05:49:21 commit 1071 last mr 1373) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. postgres=#
其中,postgres 为集群安装完成后默认生成的数据库。初始可以连接到此数据库进行新数据库的创建。25308 为 CN 的端口号,需根据集群的实际情况做替换。
3. 创建数据库用户。
默认只有集群安装时创建的管理员用户可以访问初始数据库,您还可以创建其他数据库用户帐号。
CREATE USER test WITH PASSWORD "Bigdata@123";
当结果显示为如下信息,则表示创建成功。
CREATE ROLE
如上创建了一个用户名为 test 密码为 Bigdata@123 的用户。
- 创建数据库
CREATE DATABASE db_tpcds;
当结果显示为如下信息,则表示创建成功。
CREATE DATABASE
- 创建完 db_tpcds 数据库后,就可以按如下方法退出 postgres 数据库,使用新用户连接到此数据库执行接下来的创建表等操作。当然,也可以选择继续在默认的 postgres 数据库下做后续的体验。
\q gsql -d db_tpcds -p 25308 -U test-W Bigdata@123 gsql ((GaussDB Kernel V300R002C00 build 50dc16a6) compiled at 2019-01-29 05:49:21 commit 1071 last mr 1373) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. db_tpcds=>
6.创建表
创建一个名称为 mytable,只有一列的表。字段名为 firstcol,字段类型为 integer。
db_tpcds=> CREATE TABLE mytable (firstcol int);
未使用“DISTRIBUTE BY”指定分布列时,系统默认会指定第一列为分布列,且给出提示系统返回信息以“CREATE TABLE”结束,表示创建表成功。
NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'firstcol' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE
向表中插入数据:
db_tpcds=> INSERT INTO mytable values (100);
当结果显示为如下信息,则表示插入数据成功。
INSERT 0 1
查看表中数据:
db_tpcds=> SELECT * from mytable; firstcol ---------- 100 (1 row)
注:后台可看到创建的数据库用户
简单的使用命令介绍到这里,详细的语法规则,链接后附。
远程连接使用
- 以操作系统用户 omm 登录 CN 所在主机,执行
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
命令启动环境变量。
a. 使用如下命令查看 CN 目前的 listen_addresses 配置。
gs_guc check -Z coordinator -I all -c "listen_addresses"
查询到的信息类似如下:
expected guc information: plat1: listen_addresses=NULL: [/gaussdb/data/data_cn/postgresql.conf] gs_guc check: plat1: listen_addresses='localhost, 192.168.0.100': [/gaussdb/data/data_cn/postgresql.conf] Total GUC values: 1. Failed GUC values: 0. The value of parameter listen_addresses is same on all instances. listen_addresses='localhost, 192.168.0.100'
b. 使用如下命令把要添加的 IP 追加到 listen_addresses 后面,多个配置项之间用英文逗号分隔。例如,追加 IP 地址 10.11.12.13。
gs_guc set -I all -Z coordinator -c "listen_addresses='localhost,192.168.0.100,10.11.12.13'"
c. 执行如下命令重启集群。
gs_om -t stop && gs_om -t start
此时,请求主机的 ip 已被放入白名单中,接下来需要配置下连接配置。
2. 配置每个用户请求每个数据库的配置信息
- 背景:如果主机需要远程连接数据库,必须在数据库系统的配置文件中增加此主机的信息,并且进行客户端接入认证。配置文件(默认名称为 pg_hba.conf)存放在数据库的数据目录里。hba(host-based authentication)表示是基于主机的认证。
- 基于主机的认证:服务器端根据客户端的 IP 地址、用户名及要访问的数据库来查看配置文件从而判断用户是否通过认证。
- “pg_hba.conf”文件的格式是一行写一条信息,表示一个认证规则,空白和注释(以#开头)被忽略。
- 示例:
以操作系统用户 omm 登录 CN 所在主机,执行
source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile
命令启动环境变量。
- 配置客户端认证方式,允许客户端以“test”用户连接到本机,此处远程连接禁止使用“omm”用户。
例如,下面示例中配置允许 IP 地址为 192.168.0.40 的客户端访问本机。
gs_guc set -Z coordinator -N all -I all -h "host all jack 192.168.0.40/32 sha256
o -Z coordinator 表示实例类型为 coordinator。
o -N all 表示集群的所有主机。
o -I all 表示主机的所有实例。
o -h 表示指定需要在“pg_hba.conf”增加的语句。
o all 表示允许客户端连接到任意的数据库。
o test 表示连接数据库的用户
o sha256 为加密算法(加密密码)
使用 Data_Studio 连接工具进行连接
附录
- GaussDB200 软件安装指南:https://support.huawei.com/enterprise/zh/doc/EDOC1100098616?idPath=7919749|7941815|19942925|250430185|21407429
- 参考:https://mp.weixin.qq.com/s/srqkcw2jUUgCluw_rlGlog
- 备注: 由于 GaussDB200 目前只有内测资格,所以官网无法提供安装包,如需要,可公众号自取。
目前已使用 java 语言进行连接测试,华为提供了官方连接的 JDBC jar 包,目前不支持依赖下载,如果项目需要,可使用开源 PostgreSQL,版本 9.3 或更高支持连接。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于