The standalone mode is a streamlined database architecture of OceanBase Database. Compared with a distributed cluster, a standalone database has only one zone that contains only one OBServer node. However, without multiple replicas and scaling capabilities, a standalone database is suitable only for development, testing, and business systems that do not require high data security.
This topic describes how to deploy a standalone OceanBase database 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 resource isolation and cgroup, 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.
[root@xxx /]# cd $rpm_dir [root@xxx $rpm_dir]# rpm -ivh $rpm_nameHere,
$rpm_dirspecifies the directory in which the RPM package is stored, and$rpm_namespecifies the name of the RPM package.Note
By default, OceanBase Database is installed in 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%](Optional) Install OceanBase Client (OBClient).
OBClient is a command-line client tool dedicated to OceanBase Database. You can use OBClient to connect to MySQL and Oracle tenants of OceanBase Database. You can also use the mysql client to connect to MySQL tenants of OceanBase Database.
Notice
OBClient of a version earlier than V2.2.1 depends on OceanBase Connector/C. Therefore, you must first install OceanBase Connector/C as needed.
Contact OceanBase Technical Support to obtain the RPM package of OBClient. If the OBClient version is earlier than V2.2.1, you must also obtain the RPM package of OceanBase Connector/C.Here is an example:
[root@xxx /home/admin/rpm]# rpm -ivh obclient-2.2.1-20221122151945.el7.alios7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:obclient-2.2.1-20221122151945.el7################################# [100%] ## Verify that the installation is successful. ## [root@xxx /home/admin/rpm]# which obclient /usr/bin/obclient
Step 2: Configure directories
(Optional) Clear the OceanBase Database directory.
You do not need to clear the directory if you deploy OceanBase Database on the server for the first time.
You can directly clear the old OceanBase Database directory in the following cases:
- You want to clear the old OceanBase Database environment.
- Problems occur during the installation and deployment process of OceanBase Database. The installation environment becomes disordered or files that will affect the next installation are generated.
[root@xxx /home/admin]# rm -rf /data/1/$cluster_name [root@xxx /home/admin]# rm -rf /data/log1/$cluster_name [root@xxx /home/admin]# rm -rf /home/admin/oceanbase/store/$cluster_name [root@xxx /home/admin]# rm -rf /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*Here,
$cluster_namespecifies the cluster name.Here is an example:
[root@xxx /home/admin]# rm -rf /data/1/obdemo [root@xxx /home/admin]# rm -rf /data/log1/obdemo [root@xxx /home/admin]# rm -rf /home/admin/oceanbase/store/obdemo [root@xxx /home/admin]# rm -rf /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config*Initialize 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.
Note
Starting from V4.3.0, OceanBase Database supports an independent
slogdisk so thatslogfiles do not need to share a disk with data files.slogfiles andclogfiles can share an SSD. For more information about the installation directory of OceanBase Database, see Structure of the OBServer node installation directory.## Switch to the admin user. ## [root@xxx /home/admin]# su - admin ## Run the following command as the admin user. ## -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,
$cluster_namespecifies the cluster name.Here is an example:
[root@xxx /home/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 OceanBase Database
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 start. If OceanBase Database is deployed in distributed mode, you cannot specify 127.0.0.1 as the IP address of the node to start. We recommend that you specify another IP address such as-I 10.10.10.1.-i: the name of the NIC. You can run theifconfigcommand to query the NIC name.
Note
You can specify both the IP address and NIC name to start a node, such as
-I 10.10.10.1 -i eth0. However, this is not recommended.-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 other parameters except $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. Separate multiple items with semicolons (;) to indicate RootService information.-oOptional. The cluster startup parameters. You can specify values for multiple parameters and separate the settings of different parameters with commas (,). We recommend that you set appropriate values for cluster startup parameters to optimize cluster performance and resource utilization. Here are some commonly used cluster startup parameters: - cpu_count: the total number of system CPU cores.
- system_memory: the memory reserved for the tenant whose ID is
500, that is, the internal reserved memory of OceanBase Database. If the machine has a small memory size, you can set this parameter to a smaller value. However, insufficient memory may occur during performance testing. - memory_limit: the total memory size available.
- datafile_size: the amount of disk space allowed for data files, that is, the size of the data file
sstable(for one-time initialization) in OceanBase Database. You can evaluate the value of this parameter based on the available space on/data/1/. We recommend that the value is no less than100G. - datafile_disk_percentage: the percentage of total disk space allowed for data files.
- datafile_next: the step size of automatic scale-out for disk files.
- datafile_maxsize: the maximum size of disk space allowed for automatic scale-out of data files.
- config_additional_dir: the local directories for storing multiple copies of configuration files for redundancy.
- log_disk_size: the size of the log disk where REDO logs are stored.
- log_disk_percentage: the percentage the total disk space that can be occupied by REDO logs.
- syslog_level: the level of system logs.
- syslog_io_bandwidth_limit: the maximum I/O bandwidth available for system logs. If this value is reached, the remaining system logs are discarded.
- max_syslog_file_count: the maximum number of log files that can be retained.
- enable_syslog_recycle: specifies whether to enable system log recycling.
datafile_size,datafile_disk_percentage,datafile_next, anddatafile_maxsizetogether to achieve automatic scale-out of disk space for data files. For more information, see Configure automatic scale-out of disk space for data files. For more information about cluster configuration, see Cluster-level parameters.Here is an example:
[root@xxx /home/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 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 11111/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11111/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11111 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.
Use OBClient to connect to the started observer process. The password is empty.
[root@xxx /home/admin]# obclient -h127.0.0.1 -uroot -P2881 -p****** obclient [(none)]> SET SESSION ob_query_timeout=1000000000; Query OK, 0 rows affected obclient [(none)]> 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.
Verify that the cluster is initialized.
After you perform the bootstrap operation and execute the
SHOW DATABASESstatement, ifoceanbaseappears in the database list, the cluster is initialized.obclient [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | LBACSYS | | mysql | | oceanbase | | ORAAUDITOR | | SYS | | test | +--------------------+ 7 rows in setChange the password.
By default, the password of the root user under the
systenant is empty. After successful initialization, you need to change the password.obclient [(none)]> 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 the CLI, see Create a tenant.