In the previous article, we introduced the networking, configuration, and architecture of the system. This document will build on that architecture to explain how to perform installation verification.
I. Pre-Cluster Installation Check
1.1 Hardware Configuration Check
- Verify that server hardware configurations match the hardware configuration list.
- Ensure that server hardware is functioning correctly and can start properly.
- Check if the RAID card configuration follows the recommended settings.
1.2 Operating System Configuration Check
- Ensure the operating system version is the recommended one.
- Verify that dual network card binding has been performed.
- Check if gigabit and 10-gigabit network cards are operating at the correct speed.
- Verify the correctness of disk partitions, including partition sizes and file system types as recommended.
- Confirm that the firewall and SELinux services are disabled.
- Ensure that the root password is consistent across all hosts.
- Check if cluster-related ports are occupied on each host.
- Verify that OS kernel parameters are set as recommended.
1.3 Disk Performance Testing
Use dd
and fio
disk testing tools to test disk IO performance on the /data
directory. Evaluate the performance of sequential and random read/write based on the test results:
- Write test:
dd oflag=direct if=/dev/zero of=1.dat bs=2M count=200
- Read test:
dd iflag=direct if=1.dat of=/dev/null bs=2M count=200
- Read/Write test:
dd iflag=direct oflag=direct if=1.dat of=2.dat bs=2M count=200
Syntax: dd [options]
-
if=
: input file (or device name). -
of=
: output file (or device name). -
bs=bytes
: block size for both read and write operations. -
count=blocks
: copy only the specified number of blocks.
1.4 Network IO Performance Testing
Use the netperf
tool to test network IO performance for both gigabit and 10-gigabit networks. Evaluate the performance based on the test results. Netperf
is a network performance measurement tool primarily based on TCP or UDP transmission. It works in a client/server model, where the server side is netserver
, listening for connections from the client side (netperf
), which initiates the network tests.
II. Cluster Installation
2.1 Upload and Extract Installation Files
Upload the cluster installation package to the /data/setup/
path on a coordinator node.
Extract the installation package in the current path:
# tar xfj GBase8a_MPP_Cluster-NoLicense-8.6.2_build43-R11-SUSE12-x86_64.tar.bz2
2.2 Modify Installation Parameter File
Before installing the cluster, modify the installation parameter file based on actual conditions. The installation parameter file is located in the /data/setup/gcinstall/
directory after extracting the installation package, named demo.options
. Modify the file as follows:
cd /data/setup/gcinstall
vim demo.options
Hardware Configuration:
# cd gcinstall
# vi demo.options
installPrefix= <installation path>
coordinateHost= <management node IPs, separated by commas>
dataHost= <data node IPs, separated by commas>
#existCoordinateHost=
#existDataHost=
loginUser= root
loginUserPwd= '<OS root user password>'
dbaUser= gbase
dbaGroup= gbase
dbaPwd= 'gbase'
rootPwd= '<OS root user password>'
dbRootPwd=
mcastPort= 5493
Installation Parameter Description:
- installPrefix: Specifies the installation directory.
- coordinateHost: List of all coordinator node IPs, separated by commas.
- dataHost: List of all data node IPs, separated by commas.
- existCoordinateHost: List of all existing coordinator node IPs, separated by commas. Not required for this installation.
- existDataHost: List of all existing data node IPs, separated by commas. Not required for this installation.
-
loginUser: The user used to SSH into each cluster node and then switch to the root user to execute commands. This parameter is mandatory. The default user is root. The user group for this user must also be
loginUser
. -
loginUserPwdFile: Indicates that the
loginUser
has different passwords across cluster nodes. -
loginUserPwd: Indicates that the
loginUser
has the same password across cluster nodes. These two parameters are mutually exclusive; only one should be used based on password consistency. -
dbaUser: The operating system username used for running the cluster. The
dbaUser
must match the directory specified byinstallPrefix
. Ensure that this user has been created. -
dbaGroup: The group name associated with the
dbaUser
. -
dbaPwd: The password for the
dbaUser
. -
rootPwdFile: Indicates different passwords for the root user across multiple nodes. This cannot be used simultaneously with
rootPwd
. - dbRootPwd: The root user password for the database. Not required during cluster installation; only effective during cluster upgrades, expansions, or node replacements.
- mcastPort: Multicast port, default value is 5493. This parameter is not effective if installing using UDPU mode.
- rootPwd: Unified password for the root user on all Linux OS nodes in the cluster.
- coordinateHostNodeID: Supports IPV6 address input. If the cluster nodes use IPV4 addresses, this parameter is not needed.
2.3 Execute Installation
After modifying the installation parameter file, execute the installation script gcinstall.py
. The command is as follows:
# ./gcinstall.py --silent=demo.options
Parameter explanation:
-
passwordInputMode
: Specifies the method of obtaining passwords. The values can be[file, pwdsame, pwddiff]
.-
file
: Passwords are obtained from a file or command line parameters (default, plaintext in the file). -
pwdsame
: Passwords for all nodes are the same, entered once. -
pwddiff
: Passwords for each node are different, entered separately for each node.
-
-a
: Skips user interaction prompts during installation.
Upon successful installation, a gbase
user is created on each node with the default password gbase
. The installation creates the following directories:
-
/opt/gcluster
on each coordinator node. -
/opt/gnode
on each data node.
Check cluster status with gcadmin
:
CLUSTER STATE: ACTIVE
CLUSTER MODE: NORMAL
==================================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
==================================================================
| NodeName | IpAddress |gcware |gcluster |DataState |
------------------------------------------------------------------
| coordinator1 | 10.20.64.29 | OPEN | OPEN | 0 |
------------------------------------------------------------------
| coordinator2 | 10.20.64.30 | OPEN | OPEN | 0 |
------------------------------------------------------------------
| coordinator3 | 10.20.64.31 | OPEN | OPEN | 0 |
------------------------------------------------------------------
==============================================================
| GBASE DATA CLUSTER INFORMATION |
==============================================================
|NodeName | IpAddress |gnode |syncserver |DataState |
--------------------------------------------------------------
| node1 | 10.20.64.24 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node2 | 10.20.64.25 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node3 | 10.20.64.26 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node4 | 10.20.64.27 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node5 | 10.20.64.28 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node6 | 10.20.64.29 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node7 | 10.20.64.32 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node8 | 10.20.64.33 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node9 | 10.20.64.34 | OPEN | OPEN | 0 |
--------------------------------------------------------------
| node10 | 10.20.64.35 | OPEN | OPEN | 0 |
--------------------------------------------------------------
2.4 Configure Distribution
Configure the distribution with 1 replica and 1 shard:
$ gcadmin distribution gcChangeInfo.xml p 1 d 1
Verify data distribution with gcadmin showdistribution
:
2.5 Cluster Initialization
After installing the cluster and establishing the distribution, initialize the database system before executing SQL commands. If not initialized, database operations will fail.
- Login to the cluster as the root user:
$ gccli -uroot -p
Enter password:
GBase client 8.6.1.1 build 49382. Copyright (c) 2004-2015, GBase. All Rights Reserved.
gbase>
- Execute the initialization command:
gbase> initnodedatamap;
Query OK, 0 rows affected
Note: This command should be executed only once. Re-executing it will result in the following error:
gbase> initnodedatamap;
ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0004) nodedatamap is already initialized.
The installation of GBase 8a MPP Cluster is now complete.
III. Post-Cluster Installation Validation
3.1 Starting and Stopping Cluster Services
After successfully installing the cluster, users can start and stop the gcware
service on each node using the root user of the operating system with the following commands:
Starting the Service:
# service gcware start
Stopping the Service:
# service gcware stop
Restarting the Service:
# service gcware restart
For coordinator nodes, the services involved are gclusterd
, gcmonit
, corosync
, and gcrecover
. For data nodes, the services involved are gbased
, syncserver
, and gcmonit
.
Logging in and out of the Cluster:
On any node, users must use the gbase
user at the command line to connect to the database using the gbase
client tool. The command format is as follows:
gccli -u<username> -p<password> [-h<ipaddress>] [-P<portname>] [-D<databasename>] [--nice_time_format] [-c]
Parameters:
-
username: The value for
-u
, the name of the user connecting to the database. The default name isroot
. -
password: The value for
-p
, the password for the user connecting to the database. The default password is empty. After the first installation and login to the cluster, the root user's password needs to be changed. -
ipaddress: The value for
-h
, the IP address of the cluster node to log in to. The default address is127.0.0.1
. This is an optional parameter. If multiple IP addresses are specified,gccli
will enable high availability. The IP addresses are separated by commas, e.g.,192.168.100.10,192.168.100.11,192.168.100.12
. When multiple cluster node IPs are specified,gccli
first tries to connect to the first node IP. If it cannot establish a connection, it tries the next node, and so on. If none of the specified cluster node IPs can establish a connection,gccli
will fail to connect to the cluster, and the login attempt will be unsuccessful. -
portname: The value for
-P
, the port number used by the cluster. The default is5258
. This is an optional parameter. -
databasename: The value for
-D
, specifies the default database to log in to (the database must exist). This is an optional parameter. -
--nice_time_format: Specifies the display format for time. When used, the format will be displayed as
n hour n min nnn.nn sec
. Without this parameter, the format will be displayed ashh:mm:ss.ff
. This is an optional parameter.nice_time_format
can be used as follows:gccli -uroot --nice_time_format
gccli -uroot --nice_time_format=1
gccli -uroot --nice_time_format=0
Options 1 and 2 are equivalent, and option 3 is equivalent to not using nice_time_format
.
- -c: When using this parameter, it enables the use of hint optimization. This is an optional parameter.
3.2 Simple Operation Verification
After successfully installing and deploying the cluster, perform simple operations such as create, insert, update, and delete to verify that the cluster is functioning correctly. Examples are as follows:
Verify the create database
Functionality:
gbase> create database test;
Verify the create table
Functionality:
gbase> create table test(
a int,
b varchar(200),
c decimal(15,4),
d date,
e datetime,
f longblob
);
Verify the insert
Functionality:
gbase> insert into test values
(1, 'AASSSDDD', 10922.34, now(), '2019-07-02', 'xxxxxaaaaaaassssssdddd'),
(2, 'B', 100.01, now(), '2019-07-02', 'xxxx');
Verify the update
Functionality:
gbase> update test set c = 500.04 where a = 2;
Verify the delete
Functionality:
gbase> delete from test where a = 2;
Verify the truncate
Functionality:
gbase> truncate table test;
Verify the drop
Functionality:
gbase> drop table test;
Verify the FTP Load Functionality:
gbase> load data infile 'ftp://gbase:gbase@192.168.58.11/gbasedata/ssbm/lineorder.tbl'
INTO TABLE ssbm.lineorder FIELDS TERMINATED BY '|';
Verify the Local Load Functionality:
gbase> load data infile 'file://192.168.58.11/home/gbase/gbasedata/ssbm/lineorder.tbl'
INTO TABLE ssbm.lineorder FIELDS TERMINATED BY '|';