You can deploy a single-replica OceanBase cluster and add nodes to the cluster.
This topic describes how to deploy a single-replica OceanBase cluster by using the CLI.
Considerations
If the database to deploy requires resource isolation, you must first configure cgroups before you deploy the database.
For more information about how to configure resource isolation and cgroups, see Resource isolation and Configure cgroups.
Prerequisites
Before you install OceanBase Database, make sure that:
The OBServer node has been configured. For more information, see Configure servers and Initialize an OBServer node by using oatcli.
You have obtained the RPM package of OceanBase Database. For more information, see Prepare installation packages.
Procedure
Step 1: Install the RPM package
Install the RPM package for OceanBase Database.
Here,
$rpm_dirspecifies the directory in which the RPM package is stored, and$rpm_namespecifies the name of the RPM package.[root@xxx /]# cd $rpm_dir [root@xxx $rpm_dir]# rpm -ivh $rpm_nameNote
The OceanBase Database software will be installed under the
/home/admin/oceanbasedirectory.Here is an example:
[root@xxx /home/admin/rpm]# rpm -ivh oceanbase-4.2.0.0-100000052023073123.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:oceanbase-4.2.0.0-100000052023073################################# [100%]Install OceanBase Client (OBClient).
OceanBase Database instances can be in Oracle and MySQL modes. If you want to connect to an Oracle tenant by using a Java program, you need to use the Java driver file (
oceanbase-client-\*.jar) provided by OceanBase Database. Additionally, if you want to access an Oracle tenant from the command line, you will need to install OBClient.OBClient is a CLI client of OceanBase Database. By using OBClient, you can access MySQL and Oracle tenants of OceanBase Database.
Here is an example:
[root@xxx $rpm_dir]# rpm -ivh obclient-1.2.6-20210510164331.el7.alios7.x86_64.rpm ## Verify that the installation is successful. ## [root@xxx $rpm_dir]# which obclient /usr/bin/obclient
Step 2: Configure directories
Clear the OceanBase Database directory (not required at the first deployment).
If you want to clear the old OceanBase Database environment, or problems occur during the installation and deployment process of OceanBase Database and thereby cause an environmental disorder or generate files that will affect the next installation, you can directly clear the old OceanBase Database directory. In the following context,
$cluster_namespecifies the cluster name.[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/$cluster_name -bash-4.2$ rm -rf /data/log1/$cluster_name -bash-4.2$ rm -rf /home/admin/oceanbase/store/$cluster_name /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observerHere is an example:
[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/obdemo -bash-4.2$ rm -rf /data/log1/obdemo -bash-4.2$ rm -rf /home/admin/oceanbase/store/obdemo /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observerInitialize the OceanBase Database directory.
We recommend that you specify the data directory of OceanBase Database to an independent disk and link this directory to the home directory of OceanBase Database by using a soft link. In the following context,
$cluster_namespecifies the cluster name.[root@xxx admin]# su - admin -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sstable,slog} -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name -bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done -bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; doneHere is an example:
[root@xxx admin]# su - admin -bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sstable,slog} -bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo -bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done -bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; doneNote
The
obdemodirectory is named after the cluster and can be modified. It is required when the process starts.The result is as follows:
-bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ tree store/ store/ `-- obdemo |-- clog -> /data/log1/obdemo/clog |-- etc2 -> /data/log1/obdemo/etc2 |-- etc3 -> /data/1/obdemo/etc3 |-- slog -> /data/1/obdemo/slog `-- sstable -> /data/1/obdemo/sstable 6 directories, 0 files
Step 3: Initialize the OceanBase cluster
Note
The IP addresses in the sample code are for reference only. You need to enter the actual server IP address during deployment.
Start the observer process.
Start the observer process as the
adminuser by executing the following statement:cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '$ip:2882:2881' -c $cluster_id -n $cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"The parameters are described in the following table:
Parameter Description -I|-i-I: The IP address of the node to be started. In multi-node deployment, you cannot use 127.0.0.1 as the destination IP address. We recommend that you use an IP address such as-I 10.10.10.1, to start a node.-i: The NIC name. You can use theifconfigcommand to view the NIC name.
Note
OceanBase Database allows you to start a node by specifying both the IP address and the NIC. For example,
-I 10.10.10.1 -i eth0. However, we recommend that you do not use this method.-pThe service port number, which is usually set to 2881.-PThe RPC port number, which is usually set to 2882.-nThe name of the cluster. It can be modified. Cluster names must be unique. -zThe zone where the started observer process belongs. -dThe primary directory of the cluster, which is created during initialization. Do not modify fields other than $cluster_name.-cThe cluster ID. It is a group of digits and can be modified. Cluster IDs must be unique. -lThe log level. -rThe RootService list in the format of $ip:2882:2881. Multiple items are separated with semicolons (;) to indicate RootService information.-oThe cluster startup parameters that need to be specified as needed. system_memory: specifies the internal reserved memory of OceanBase Database, which is30Gby default. You can adjust this parameter to a smaller value in the case of insufficient memory on the server. The impact is that memory may be insufficient during performance tests.datafile_size: specifies the size of theSSTabledata file of OceanBase Database, which is determined based on the available space of/data/1/. You no longer need to specify the size again once specified in this step. We recommend that you specify the data file size to at least100Gand reserve some spaces.config_additional_dir: specifies the redundancy directory for the parameter file.
Here is an example:
[root@xxx admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"You can use the following commands to check whether the observer process has started successfully:
- Run the
netstat -ntlpcommand. If ports2881and2882are being listened to, the observer process is started. - Run the
ps -ef|grep observercommand to return information about the observer process.
Here is an example:
-bash-4.2$ netstat -ntlp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:2881 0.0.0.0:* LISTEN 11113/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11113/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11113 0 43 17:58 ? 00:00:14 /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 10.10.10.1:2882:2881 -c 10001 -n obdemo -o system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2Perform the bootstrap operation on the cluster.
Connect to the started observer process by using the obclient command. The password is empty.
[root@xxx admin]# obclient -h127.1 -uroot -P2881 -p Enter password: obclient> SET SESSION ob_query_timeout=1000000000; Query OK, 0 rows affected obclient> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882'; Query OK, 0 rows affectedNotice
If an error is reported in this step, the reason may be that the startup parameter of the observer process is incorrect, the privileges on the directories related to the OBServer node are incorrect, the space of the log directory does not meet the required proportion, or the node memory resources are insufficient. The log directory issue occurs because the log directory shares the same upper-level directory with the data directory, resulting in space occupation by the data directory. Check these issues and then clear the OceanBase Database directory. For more information, see Clear the OceanBase Database directory (not required at the first deployment).
Verify that the cluster is initialized.
After you perform the bootstrap operation and execute the
SHOW DATABASESstatement, ifoceanbaseappears in the database list, the cluster has been initialized.obclient> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | oceanbase | | information_schema | | mysql | | SYS | | LBACSYS | | ORAAUDITOR | | test | +--------------------+ 7 rows in setChange the password.
By default, the password of the root user under the sys tenant is empty. After successful initialization, you need to change the password.
obclient> ALTER USER root IDENTIFIED BY '******'; Query OK, 0 rows affected
What to do next
After the cluster is created, you can create user tenants based on your business needs.
For more information about how to create a tenant by using theCLI, see Create a tenant.