Initial commit
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
---
|
||||
|
||||
slug: /obshell-overview
|
||||
---
|
||||
|
||||
# Overview
|
||||
|
||||
OceanBase Shell (obshell) is a local database command-line tool provided by OceanBase for administrators and developers. It is a no-installation, out-of-the-box tool. obshell supports cluster and standalone (seekdb) operations, enabling unified management of different ecosystem products for the same database. This simplifies integration with third-party tools and reduces the complexity and cost of managing OceanBase databases.
|
||||
|
||||
obshell does not require additional installation. By default, after you install OceanBase seekdb through any method, you can find the obshell executable file in the `usr/bin` directory of the installation directory.
|
||||
@@ -0,0 +1,151 @@
|
||||
---
|
||||
|
||||
slug: /error
|
||||
---
|
||||
|
||||
# Error codes
|
||||
|
||||
This topic describes error messages that may occur during obshell usage and provides solutions.
|
||||
|
||||
The error codes of obshell use strings with literal meanings to facilitate user understanding. When an operation fails, you can view the corresponding error code in the <code>obshell.log</code> log file and then refer to the <b>Solution</b> section in the following table for troubleshooting.
|
||||
|
||||
:::info
|
||||
If an error occurs while using obshell Dashboard, you can also view the HTTP response result by using the browser developer tools to obtain the error code (<code>errCode</code>).
|
||||
:::
|
||||
|
||||
| Error code | Error message | Description | Solution |
|
||||
| --- | --- | --- | --- |
|
||||
| Agent.AlreadyInitialized | Agent already initialized | The obshell node has already been initialized | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Current.UnderMaintenance | Agent is under maintenance | The current obshell node is under maintenance | Wait for the maintenance task to finish, or use task commands/APIs to roll back, retry, or skip the failed maintenance task. |
|
||||
| Agent.Daemon.StartFailed | Daemon start failed | Failed to start the daemon process | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Daemon.ServeOnUnixSocketFailed | Daemon serve on socket listener failed | The daemon process failed to serve on the socket listener | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Identify.NotSupportOperation | '%s' is '%s', instead of '%s', does not support this operation | The current node identity does not support this operation | Please check the node identity and try again. |
|
||||
| Agent.Identify.Unknown | Unknown agent identity: %s | The identity of the obshell node is unknown | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Info.NotEqual | Agent info not equal, input is %v, meta is %v | The obshell node information does not match | Please check the obshell node information. |
|
||||
| Agent.IP.InconsistentWithOBServer | Agent IP inconsistent with observer | The obshell node IP does not match the seekdb node IP | Please check the IP configuration. |
|
||||
| Agent.Load.OBConfigFailed | Load ob config from config file failed | Failed to load seekdb configuration from the config file | Please check the configuration file. |
|
||||
| Agent.NotInitialized | Agent not initialized | The obshell node has not been initialized | Please initialize the corresponding obshell node first. |
|
||||
| Agent.OBVersionNotSupported | Unsupported ob version '%s', the minimum supported version is '%s' | The current OceanBase seekdb version is not supported | Please use a supported OceanBase seekdb version. |
|
||||
| Agent.OceanBase.DB.NotOcs | The current database is not ocs | The current database is not OCS | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.OceanBase.NotHold | Agent is not holding OceanBase seekdb | The obshell node does not have an OceanBase seekdb connection | Please restart the obshell node and try again. |
|
||||
| Agent.Oceanbase.Password.LoadFailed | Check password of root in sqlite failed | Failed to check the root password in SQLite | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.OceanBase.Useless | The current database is useless | The current OceanBase seekdb is unavailable | Please check whether OceanBase seekdb is available. |
|
||||
| Agent.Package.NotFound | Package %v is not found | The installation package could not be found | Please check the installation package and try again. |
|
||||
| Agent.Rebuild.PortNotSame | Agent port is not the same, agent port in all_agents: %d, agent port now: %d | The obshell node ports are inconsistent | Rebuild obshell using the same port. |
|
||||
| Agent.Rebuild.VersionNotSame | Agent version is not the same, agent version in all_agents: %s, agent version now: %s | obshell version inconsistency | Rebuild obshell using the same version. |
|
||||
| Agent.Response.DataEmpty | Response data is empty | Response data is empty | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Response.DataFormatInvalid | Response data is not map | Response data format is invalid | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.RPC.RequestError | Request [%s]%s to %s error: %v | Error occurred when sending internal request between nodes | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.RPC.RequestFailed | Request [%s]%s to %s failed: %s | Failed to send internal request between nodes | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.ServeOnTcpSocketFailed | Serve on tcp listener failed | Failed to serve on TCP listener | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.ServeOnUnixSocketFailed | Serve on unix listener failed | Failed to serve on Unix listener | Please check system resources and permissions. |
|
||||
| Agent.Sqlite.DB.NotInit | The sqlite db is not initialized | SQLite database not initialized | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Start.ObserverFailed | Start observer via flag failed | Failed to start seekdb | Please check seekdb configuration. |
|
||||
| Agent.Start.WithInvalidInfo | Agent start with invalid info: %v | obshell start information is invalid | Please check the startup parameters. |
|
||||
| Agent.TakeOverFailed | Take over or rebuild failed | Takeover or rebuild failed | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.TCP.Listener.CreateFailed | Create tcp listerner failed | Failed to create TCP listener | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.UnderMaintenanceDag | %s is under maintenance by dag [%s:%s] | Current obshell node is under maintenance | Wait for the maintenance task to complete, or use task commands/APIs to rollback, retry, or skip the failed maintenance task. |
|
||||
| Agent.UnderMaintenance | %s is under maintenance | Current obshell node is under maintenance | Wait for the maintenance task to complete, or use task commands/APIs to rollback, retry, or skip the failed maintenance task. |
|
||||
| Agent.Unix.Socket.Listener.CreateFailed | Create unix socket listerner failed | Failed to create Unix socket listener | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Upgrade.KillOldServerTimeout | Wait obshell server killed timeout | Timeout while waiting for obshell server termination | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Agent.Upgrade.ToLowerVersion | Target version %s is not greater than current version %s. Please verify if the params have been filled out correctly | Upgrade target version is not higher than the current version | Please verify that the parameters are correctly filled in and provide a valid target version. |
|
||||
| Agent.Version.Inconsistent | obshell version is not consistent between %s(%s) and %s(%s) | obshell version inconsistency | Please use obshell with consistent versions. |
|
||||
| Cli.FlagRequired | Required flag(s) "%s" not set | Required command options not set | Please configure all required options. |
|
||||
| Cli.NotFound | %s not found | Corresponding resource not found | Please check if the resource exists. |
|
||||
| Cli.OperationCancelled | Operation cancelled | Operation cancelled | Please re-execute the operation as needed. |
|
||||
| Cli.UnixSocket.RequestFailed | Request unix-socket [%s]%s failed: %v | Unix socket request failed | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Cli.Upgrade.NoValidTargetBuildVersionFound | No valid target build version in pkg_directory found by '%s' | No valid target build version found | Please check the installation packages in the directory or provide a specific version number. |
|
||||
| Cli.Upgrade.PackageNotFoundInPath | No valid %s package found in %s | No valid installation package found | Please check the package location. |
|
||||
| Cli.UsageError | Incorrect usage: %s | Command usage error | Please check the command syntax. You can use the `-h`/`--help` option for help information on the corresponding command. |
|
||||
| Common.BadRequest | Bad request: %v | Invalid request | Please check the request parameters and try again. |
|
||||
| Common.BindJsonFailed | Bind JSON failed: %v | Failed to bind JSON | Please check the JSON format and try again. |
|
||||
| Common.DirNotEmpty | Dir '%s' is not empty | Directory is not empty | Please check the directory and try again. |
|
||||
| Common.FileNotExist | File '%s' does not exist | File does not exist | Please check the file path and try again. |
|
||||
| Common.FilePermissionDenied | No read/write permission for file '%s' | No read/write permission for the file | Please ensure you have read/write permissions for the file before retrying. |
|
||||
| Common.IllegalArgument | Illegal argument | Invalid argument | Please check the arguments and try again. |
|
||||
| Common.InvalidAddress | '%s' is not a valid address | Invalid address | Please check the address and try again. |
|
||||
| Common.InvalidIp | '%s' is not a valid IP address | Invalid IP address | Please check the IP address and try again. |
|
||||
| Common.InvalidPath | Path '%s' is not valid: %s | Invalid path format | Please check the path format and try again. |
|
||||
| Common.InvalidPort | The port '%s' is invalid, must in (1024, 65535]. | Invalid port | Please check the port. Valid port range is (1024, 65535]. |
|
||||
| Common.InvalidTimeDuration | Time duration '%s' is invalid: %s | Invalid time duration | Please check the time duration and try again. |
|
||||
| Common.NotFound | Element not found: %v | API request not found | Please check if the URI is correct. |
|
||||
| Common.PathNotDir | '%s' is not a directory | The configured path is not a directory | Please check the path and try again. |
|
||||
| Common.PathNotExist | '%s' does not exist | Path does not exist | Please check the path and try again. |
|
||||
| Common.Unauthorized | Unauthorized | Authentication failed | Please check permissions and try again. |
|
||||
| Common.Unexpected | Unexpected error: %s | Unexpected error | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Environment.DiskSpaceNotEnough | The remaining disk space is insufficient, the remaining disk space is %d, and the required disk space is %d | Insufficient disk space | Please free up disk space and try again, or switch to another disk with sufficient space. |
|
||||
| Gorm.NoRowAffected | %s: no row affected | This operation did not make any changes to the OceanBase database | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Log.FileNameExtensionMismatched | File name '%s' extension mismatched | File extension does not match | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Log.FileNamePrefixMismatched | File name '%s' prefix mismatched | File name prefix does not match | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Log.WriteExceedMaxSize | Write length %d exceeds maximum file size %d | Write length exceeds maximum file size | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| MySQL.Error | Occur error when execute sql | Error occurred while executing SQL | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| OB.Binary.Version.Unexpected | Unexpected observer binary version. | OceanBase database version is unexpected | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| SeekDB.MinorFreezeTimeout | Minor freeze timeout | Minor Freeze timeout | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| SeekDB.NotInitialized | seekdb has not been initialized, please initialize it first | seekdb has not been initialized | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| SeekDB.Password.Incorrect | The seekdb root password is incorrect | The provided seekdb root user password is incorrect | Please check the password and try again. |
|
||||
| SeekDB.UnderMaintenance | seekdb is under maintenance, please try again later | seekdb is under maintenance | Wait for the maintenance task to complete, or use task commands/APIs to rollback, retry, or skip the failed maintenance task. |
|
||||
| SeekDB.UnderMaintenanceWithDag | seekdb is under maintenance by DAG: %s | seekdb is under maintenance | Wait for the maintenance task to complete, or use task commands/APIs to rollback, retry, or skip the failed maintenance task. |
|
||||
| SeekDB.Database.NotExist | Database %s of tenant %s | The specified database does not exist in seekdb | Please configure an existing database and try again. |
|
||||
| SeekDB.Compaction.Status.NotIdle | seekdb is in '%s' status, operation not allowed | seekdb is not in idle status | Please wait until it is idle before trying the operation again. |
|
||||
| SeekDB.Process.CheckFailed | Check seekdb process exist: %s | Failed to check seekdb process | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| SeekDB.Process.NotExist | seekdb process does not exist | seekdb process does not exist | Please start the seekdb process and try again. |
|
||||
| SeekDB.Variable.Empty | Variable name or value is empty. | Variable name or value is empty | Please check the configured variable and try again. |
|
||||
| SeekDB.Variable.Invalid | Variable '%s' is invalid: %s | Invalid variable | Please check the variable and try again. |
|
||||
| SeekDB.Variable.Name.Empty | Variable name is empty | Variable name is empty | Please provide a valid variable name. |
|
||||
| SeekDB.Variable.NotExist | Variable '%s' is not found | Variable does not exist | Please check whether the variable exists. |
|
||||
| SeekDB.User.Name.Empty | User name is empty | User name cannot be empty | Please provide a valid user name. |
|
||||
| SeekDB.Privilege.NotSupported | Unsupported privilege %s | Operation privilege not supported | Please configure the required privileges for the user. |
|
||||
| Package.Compression.NotSupported | Unsupported compression '%s', the supported compression is 'xz' | Unsupported package compression format | The supported compression format is `xz`. Please visit [OceanBase Download Center](https://en.oceanbase.com/softwarecenter) to download the corresponding installation package and re-upload. |
|
||||
| Package.Format.Invalid | Unsupported payload format '%s', the supported payload format is 'cpio' | Unsupported payload format | The supported payload format is `cpio`. Please visit [OceanBase Download Center](https://en.oceanbase.com/softwarecenter) to download the corresponding installation package and re-upload. |
|
||||
| Package.NameMismatch | RPM package name %s not match %s | Package name mismatch | Please check the package name. |
|
||||
| Package.ReleaseFormat.Invalid | Release format %s is illegal | Release format is invalid | Please visit [OceanBase Download Center](https://en.oceanbase.com/softwarecenter) to download the corresponding installation package and re-upload. |
|
||||
| Package.ReleaseInvalid | RPM package release %s not match format | Package release version does not meet format requirements | Please check the package format requirements. |
|
||||
| Request.Body.Decrypt.AES.ContentLength.Invalid | Decrypted string length is not a multiple of the block size | Decrypted string length is not a multiple of the block size | Please check the encrypted body in the HTTP request (using AES encryption). |
|
||||
| Request.Body.Decrypt.AES.KeyAndIv.Invalid | AES key and iv size error | AES key and IV size error | Please provide a valid key and IV in the request header. |
|
||||
| Request.Body.Decrypt.AES.NoKey | No key for aes | Missing AES key | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Request.Body.Decrypt.SM4.NoKey | No key for sm4 | Missing SM4 key | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Request.Body.ReadFailed | Failed to read request body: %s | Failed to read HTTP request body | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Request.File.Missing | File %s in the request is missing: %s | Missing file in request | Please check the requested file. |
|
||||
| Request.Header.NotFound | X-OCS-Header not found in http request header. | X-OCS-Header not found in HTTP request header | Please set the correct X-OCS-Header in the HTTP request header to authenticate. |
|
||||
| Request.Header.Type.Invalid | Header type error | Header type error | HTTP header type is invalid; please check the HTTP request header and try again. |
|
||||
| Request.Method.NotSupport | %s method not support | Method not supported | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Request.Query.Param.Empty | Query param %s is empty | Query parameter is empty | Please provide the path parameter and try again. |
|
||||
| Request.Query.Param.Illegal | Query param %s is illegal | Query parameter is invalid | Please provide a valid query parameter and try again. |
|
||||
| Security.Authentication.Expired | Authentication expired | Authentication information has expired | Please update the authentication information and try again. |
|
||||
| Security.Authentication.File.Sha256Mismatch | File sha256 mismatch | File SHA256 value mismatch | The file in the request does not match the SHA256 in the HTTP header. Please check and re-upload. |
|
||||
| Security.Authentication.Header.DecryptFailed | Decrypt http header failed: %s | Failed to decrypt HTTP request header | Please check if the encryption public key is correct. |
|
||||
| Security.Authentication.Header.UriMismatch | URI mismatch | URI in request header does not match actual request URI | Please check the request URI set in the HTTP header and try again. |
|
||||
| Security.Authentication.IncorrectSeekDBPassword | seekdb root password is incorrect | Incorrect root user password in seekdb instance | Please check the root user password in seekdb and try again after confirming it is correct. |
|
||||
| Security.Authentication.Timestamp.Invalid | Invalid timestamp: %s, err: %s | Invalid timestamp | Please provide a valid timestamp in the HTTP header and try again. |
|
||||
| Security.Authentication.Unauthorized | Authentication failed | Authentication failed | Please check your request and try again. |
|
||||
| Security.User.PermissionDenied | Permission denied | Insufficient user permissions | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.Operator.CancelFinishedDag | Failed to cancel dag: dag is finished | Cannot cancel a finished DAG | Only DAGs in the RUNNING state can be canceled. |
|
||||
| Task.Dag.Operator.CancelNotAllowed | Failed to cancel dag: node %s can not cancel | The DAG contains nodes that cannot be canceled | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.Operator.NotSupport | Not support operator %s | Unsupported DAG operation | Please perform a supported task operation. |
|
||||
| Task.Dag.Operator.PassNotAllowed | Failed to pass dag: node %s can not pass | The DAG contains nodes that cannot be skipped | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.Operator.PassNotFailedDag | Failed to pass dag: dag is not failed | Cannot skip a DAG that is not in the failed state | Only failed DAGs can be skipped. |
|
||||
| Task.Dag.Operator.RetryNotAllowed | Failed to set dag retry: node %s can not retry | The DAG contains nodes that cannot be retried | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.Operator.RetryNotFailedDag | Failed to set dag retry: dag state is not failed | Cannot retry a DAG that is not in the failed state | Only failed DAGs can be retried. |
|
||||
| Task.Dag.Operator.RollbackNotAllowed | Failed to set dag rollback: node %s can not rollback | The DAG contains nodes that cannot be rolled back | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.Operator.RollbackNotFailedDag | Failed to set dag rollback: dag state is not failed | Cannot roll back a DAG that is not in the failed state | Only failed DAGs can be rolled back. |
|
||||
| Task.Dag.PassTimeout | Pass %d timeout after %d seconds | Task skip operation timed out | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Dag.State.Invalid | Invalid dag state '%d' | Invalid task state | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Data.ConvertFailed | Convert %s failed: %s | Failed to convert task data | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Data.NotSet | Data %s is not set | Required task data not set | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.GenericID.Invalid | Invalid id: %s | Invalid generic ID | Please provide a valid generic ID. |
|
||||
| Task.LocalData.ConvertFailed | Convert %s failed: %s | Failed to convert local task data | Please check the local data format and try again. |
|
||||
| Task.LocalData.NotSet | Task local data %s not set | Required local task data not set | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Node.Operator.NotSupport | Not support operator %s | Unsupported operation | Please perform a supported task operation. |
|
||||
| Task.Node.Operator.PassNotAllowed | Failed to pass node: node %s can not pass | Task node cannot be skipped | Task node cannot be skipped. |
|
||||
| Task.Node.Operator.PassNotFailedDag | Failed to pass node: assigned dag is not failed | Cannot skip task node when DAG is not failed | Only failed task nodes can be skipped. |
|
||||
| Task.Node.Operator.PassNotFailedNode | Failed to pass node: node %s is not failed | Cannot skip a task node that is not failed | Only failed task nodes can be skipped. |
|
||||
| Task.NotFound | Task not found: %v | Task not found | Please verify the task ID and try again. |
|
||||
| Task.Param.ConvertFailed | Convert %s failed: %s | Failed to convert task parameter | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.Param.NotSet | Param %s is not set | Required task parameter not set | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.RemoteTask.Failed | Remote task %s %s failed | Remote task failed | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
| Task.SubDag.NotAllAdvanced | Sub dag of agents: %v not advanced, main dag failed | Some Agent subtasks failed to advance | Please check and resolve the blocked subtasks. |
|
||||
| Task.SubDag.NotAllCreated | Sub dag of agents: %v not created, main dag failed | Some Agent subtasks failed to be created | Please check the availability and connectivity of the Agents. |
|
||||
| Task.SubDag.NotAllPassed | Not all sub dag passed, main dag failed | Some Agent subtasks failed to be skipped | Please check and resolve the failed subtasks. |
|
||||
| Task.SubDag.NotAllReady | Sub dag of agents: %v not ready, can not advance main dag | Some Agent subtasks are not ready | Please wait until all subtasks are ready, or check for issues. |
|
||||
| Task.SubDag.NotAllSucceed | Sub dag of agents: %v failed, main dag failed | Some Agent subtasks failed | Please check and resolve the failed subtasks. |
|
||||
| Task.Template.Empty | Task template is empty | Task template is empty | Please contact the OceanBase technical support team for troubleshooting. |
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
|
||||
slug: /agent-commands
|
||||
---
|
||||
|
||||
# obshell agent commands
|
||||
|
||||
This topic describes the obshell agent commands, which are used to manage obshell. You can use the `-h`/`--help` option in a command to view the help information of the command. For example, `obshell agent start -h --seekdb` is used to view the help information of the `start` command for seekdb. `--seekdb` indicates that the help information of the `start` command for seekdb is to be viewed.
|
||||
|
||||
## obshell agent start
|
||||
|
||||
Use this command to start obshell.
|
||||
|
||||
```shell
|
||||
obshell agent start [-P] [--password] [--seekdb] [--base-dir] [-6]
|
||||
|
||||
# example
|
||||
obshell agent start -P 2886 --base-dir /var/lib/oceanbase
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data type | Default value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -P/--port | No | int | 2886 | The port number to which the obshell is bound. |
|
||||
| --password | No | string | N/A | This option is used only for taking over a seekdb instance. When you take over a seekdb instance, you must use this option to specify the password of the root user of the seekdb instance. You can also specify the root user password by using the `OB_ROOT_PASSWORD` environment variable. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. If you specify `--base-dir`, you can omit `--seekdb`. |
|
||||
| --base-dir | No | string | N/A | The working directory of obshell. It must be consistent with the working directory of the corresponding seekdb instance. If you do not specify this option, the default value is the current directory. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
|
||||
## obshell agent stop
|
||||
|
||||
Use this command to stop obshell.
|
||||
|
||||
```shell
|
||||
obshell agent stop [--port] [--seekdb] [-6]
|
||||
|
||||
# example
|
||||
obshell agent stop --seekdb --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data type | Default value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can specify the obshell port by using the `OBSHELL_PORT_FOR_SEEKDB` environment variable. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
|
||||
## obshell agent restart
|
||||
|
||||
Use this command to restart obshell.
|
||||
|
||||
```shell
|
||||
obshell agent restart [-P] [--password] [--seekdb] [-6]
|
||||
|
||||
# example
|
||||
obshell agent restart --seekdb --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data type | Default value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -P/--port | No | int | 2886 | The port number to which the obshell is bound. |
|
||||
| --password | No | string | N/A | This option is used only for taking over a seekdb instance. When you take over a seekdb instance, you must use this option to specify the password of the root user of the seekdb instance. You can also specify the root user password by using the `OB_ROOT_PASSWORD` environment variable. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
|
||||
## Upgrade obshell
|
||||
|
||||
You can run this command to upgrade obshell.
|
||||
|
||||
```shell
|
||||
obshell agent upgrade -d [-V] [-t] [--port] [--seekdb] [-6] [-y] [-v]
|
||||
|
||||
# example
|
||||
obshell agent upgrade -d /home/oceanbase/upgrade/ -V 4.2.2.0-20231224224959 --port 2886 --seekdb
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data type | Default value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -d/--pkg_directory | Yes | string | N/A | The path where the upgrade package is stored. |
|
||||
| -V/--target_version | No | string | N/A | The target version. The value must be in the correct format, such as `4.2.2.0` or `4.2.2.0-20231224224959`. If you do not specify this option, the highest version of the obshell RPM package in the directory specified by the `-d` option is selected. |
|
||||
| -t/--tmp_directory | No | string | `${home_path}`/upgrade | The temporary directory for the upgrade process. This directory stores the downloaded installation package and all files generated during the decompression and installation process. The value must be an absolute path. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not specify this option, you can specify the obshell port by setting the `OBSHELL_PORT_FOR_SEEKDB` environment variable. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command is applied to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If you specify this option, the system does not prompt you for confirmation when it performs an upgrade. |
|
||||
| -v/--verbose | No | N/A | N/A | This option does not require a value. If you specify this option, the system displays detailed execution information. |
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
|
||||
slug: /seekdb-commands
|
||||
---
|
||||
|
||||
# obshell seekdb commands
|
||||
|
||||
This topic describes the seekdb commands in obshell. You can use the commands to manage a seekdb instance. You can use the `-h`/`--help` option in a command to view the help information of the command, for example, `obshell seekdb start -h`. You can also use the `-v`/`--verbose` option to view the detailed execution process of the command.
|
||||
|
||||
:::info
|
||||
The seekdb commands are designed for managing a seekdb instance. You do not need to explicitly specify the <code>--seekdb</code> option when you execute these commands.
|
||||
:::
|
||||
|
||||
## obshell seekdb start
|
||||
|
||||
You can run this command to start seekdb.
|
||||
|
||||
```shell
|
||||
obshell seekdb start [--port] [--seekdb] [-6]
|
||||
|
||||
# example
|
||||
obshell seekdb start --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
|
||||
## obshell seekdb restart
|
||||
|
||||
You can run this command to restart seekdb.
|
||||
|
||||
```shell
|
||||
obshell seekdb restart [-t] [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell seekdb restart -t --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -t/--terminate | No | N/A | N/A | This option does not require a value. If you specify this option, the `MINOR FREEZE` command is triggered before seekdb is restarted. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If you specify this option, the confirmation for the restart operation is skipped. |
|
||||
|
||||
## obshell seekdb stop
|
||||
|
||||
You can run this command to stop seekdb.
|
||||
|
||||
```shell
|
||||
obshell seekdb stop [-t] [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell agent stop -t --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -t/--terminate | No | N/A | N/A | This option does not require a value. If you specify this option, the `MINOR FREEZE` command is triggered before the seekdb process is stopped. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If you specify this option, the confirmation for the stop operation is skipped. |
|
||||
|
||||
## obshell seekdb show
|
||||
|
||||
You can run this command to view the configurations and status of seekdb.
|
||||
|
||||
```shell
|
||||
obshell seekdb show [-d] [--port] [--seekdb] [-6]
|
||||
|
||||
# example
|
||||
obshell agent show
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -d/--show_detail | No | N/A | N/A | This option does not require a value. If you specify this option, the command displays the details of seekdb. |
|
||||
| --port | No | int | 2886 | Specifies the port number of obshell. If you do not want to specify the port number by using this option, you can also specify the port number of obshell by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
|
||||
slug: /utilities-commands
|
||||
---
|
||||
|
||||
# obshell task commands
|
||||
|
||||
This topic describes the task commands of obshell, which are used to manage obshell tasks. You can use the `-h`/`--help` option in a command to view the help information of the command. For example, you can run the `obshell task show -h --seekdb` command to view the help information of the `show` command for seekdb. In this command, `--seekdb` indicates that the help information of the `show` command for seekdb is to be viewed.
|
||||
|
||||
## obshell task show
|
||||
|
||||
You can run this command to view information about a task.
|
||||
|
||||
```shell
|
||||
obshell task show [-i] [-d] [--port] [--seekdb] [-6] [-v]
|
||||
|
||||
# example
|
||||
obshell task show --seekdb --port 2886
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | No | string | N/A | The ID of the task to be viewed. If this option is not specified, the current task is displayed. If no task is being executed, no task information is displayed. |
|
||||
| -d/--show_detail | No | N/A | N/A | This option does not require a value. If this option is specified, detailed information about the task is displayed. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If this option is specified, the command is applied to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If this option is specified, IPv6 is used. |
|
||||
| -v/--verbose | No | N/A | N/A | This option does not require a value. If this option is specified, detailed execution process information is displayed. |
|
||||
|
||||
## obshell task cancel
|
||||
|
||||
You can run this command to cancel an uncompleted task.
|
||||
|
||||
```shell
|
||||
obshell task cancel -i [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell task cancel -i 11 --seekdb
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | Yes | string | N/A | The ID of the task to be canceled. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If this option is specified, the command is applied to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If this option is specified, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If this option is specified, the command skips the confirmation. |
|
||||
|
||||
## obshell task rollback
|
||||
|
||||
You can run this command to roll back a failed task.
|
||||
|
||||
```shell
|
||||
obshell task rollback -i [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell task rollback -i 11 --seekdb
|
||||
```
|
||||
|
||||
The following table describes the options.
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | Yes | string | N/A | The ID of the task to be rolled back. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If this option is specified, the command is applied to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If this option is specified, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If this option is specified, the command skips the confirmation. |
|
||||
|
||||
## obshell task retry
|
||||
|
||||
You can run this command to retry a failed task.
|
||||
|
||||
```shell
|
||||
obshell task retry -i [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell task retry -i 11 --seekdb
|
||||
```
|
||||
|
||||
The options are described in the following table:
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | Yes | string | N/A | The ID of the task to be retried. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If you specify this option, the command skips the confirmation. |
|
||||
|
||||
## obshell task pass
|
||||
|
||||
You can run this command to skip a failed task.
|
||||
|
||||
```shell
|
||||
obshell task pass -i [--port] [--seekdb] [-6] [-y]
|
||||
|
||||
# example
|
||||
obshell task pass -i 11 --seekdb
|
||||
```
|
||||
|
||||
The options are described in the following table:
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | Yes | string | N/A | The ID of the task to be skipped. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
| -y/--yes | No | N/A | N/A | This option does not require a value. If you specify this option, the command skips the confirmation. |
|
||||
|
||||
## obshell task watch
|
||||
|
||||
You can run this command to view the execution progress of a specified task in real time.
|
||||
|
||||
```shell
|
||||
obshell task watch -i [--port] [--seekdb] [-6]
|
||||
|
||||
# example
|
||||
obshell task watch -i 11 --seekdb
|
||||
```
|
||||
|
||||
The options are described in the following table:
|
||||
|
||||
| Option | Required | Data Type | Default Value | Description |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| -i/--id | Yes | int | N/A | The ID of the running task to be viewed. |
|
||||
| --port | No | int | 2886 | The port number of obshell. If you do not want to specify the port number by using this option, you can also specify it by using the environment variable `OBSHELL_PORT_FOR_SEEKDB`. |
|
||||
| --seekdb | No | N/A | N/A | This option does not require a value. If you specify this option, the command applies to seekdb. |
|
||||
| -6/--use-ipv6 | No | N/A | N/A | This option does not require a value. If you specify this option, IPv6 is used. |
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-overview
|
||||
---
|
||||
|
||||
# obshell Dashboard
|
||||
|
||||
obshell Dashboard is a Web-based visual management interface provided by OceanBase. It supports resource management of seekdb and provides monitoring capabilities for key resources and performance metrics, helping users efficiently manage seekdb.
|
||||
|
||||
The obshell Dashboard service is fully integrated into the obshell process. Users can manage seekdb by accessing the service address where obshell is deployed. This design simplifies the management process and ensures minimal resource overhead, providing a simple and user-friendly control experience.
|
||||
|
||||
## Features
|
||||
|
||||
The obshell Dashboard currently supports the following features for managing seekdb:
|
||||
|
||||
* Instance management: View instance information, including status, deployment specifications, creation/start time, working directory, and more. It also allows you to start/stop instances and modify instance allowlists. For more information, see [Manage instances](200.dashboard-instance.md).
|
||||
|
||||
* Database management: Manage databases under an instance. For more information, see [Manage databases](300.dashboard-db.md).
|
||||
|
||||
* User management: Manage users under an instance. For more information, see [Manage users](400.dashboard-user.md).
|
||||
|
||||
* Alarm center: View alarm rules and events for an instance and support shielding alarms. For more information, see [Manage alarms](500.dashboard-alarm.md).
|
||||
|
||||
* Performance monitoring: Monitor real-time **Performance and SQL**, **Transaction**, **Storage and Cache**, and **Host performance** metrics of a seekdb instance. For more information, see [Monitor performance](600.dashboard-monitor.md).
|
||||
|
||||
* Parameter management: View and modify parameters of a seekdb instance. For more information, see [Manage parameters](700.dashboard-parameter.md).
|
||||
|
||||
* Package management: Upload packages and upgrade obshell by uploading the target version of the package. For more information, see [Manage packages](800.dashboard-package.md).
|
||||
|
||||
* Task center: View and manage tasks generated during instance operations. For more information, see [Manage tasks](900.ob-dashboard-task.md).
|
||||
|
||||
## Log in and log off
|
||||
|
||||
obshell provides a graphical interface for visual management of seekdb. After successfully installing obshell, you can access the obshell Dashboard (the visual management page of obshell) by using the IP address and port number of an obshell node. By default, you log in as the root user, and the password is the password of the root user in the instance. If the root user password is empty, you can directly click **Login** to log in.
|
||||
|
||||
After logging in to the obshell Dashboard console, hover the cursor over the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-overview-01.png" alt="User" style={{ height: '20px' }}/></span> icon in the upper-right corner and click **Log out**. In the dialog box that appears, click **OK** to log off.
|
||||
|
||||
## View the version
|
||||
|
||||
After logging in to the obshell Dashboard console, click **Help** > **About obshell Dashboard** in the upper-right corner to view the version of obshell Dashboard.
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-instance
|
||||
---
|
||||
|
||||
# Instance management
|
||||
|
||||
Log in to the obshell Dashboard console. The **instance management** page is displayed by default. This topic describes the information displayed on the **instance management** page and the operations that you can perform on the page.
|
||||
|
||||
The **instance management** page displays the basic information of seekdb, the IP address whitelist, the instance status, and the start and end times of the last major compaction. You can also start, stop, and restart seekdb on the **instance management** page. You can also upgrade obshell and perform a major compaction on an instance on the page.
|
||||
|
||||
## Basic information
|
||||
|
||||
The **Basic information** module displays the instance status, seekdb version, instance specification, number of databases and users in the instance, port, creation time, working directory, and other basic information. For more information about the displayed items, see the following figure.
|
||||
|
||||
After you click the refresh icon next to **instance management**, the **Basic information** module will be refreshed to show the latest instance information. You can click the number next to **Number of databases** or **Number of users** to go to the **Database Management** or **User Management** page, where you can view database or user information. You can click the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-tenant-01.png" alt="Copy" style={{ height: '20px' }}/></span> icon next to **Connection string** to copy the connection string for later use.
|
||||
|
||||

|
||||
|
||||
## Start and stop instances
|
||||
|
||||
:::info
|
||||
obshell Dashboard does not support starting or stopping seekdb instances managed by systemd. If your current seekdb instance is started by systemd, execute the <code>systemctl stop seekdb</code>/<code>systemctl start seekdb</code> command to stop or start the instance.
|
||||
:::
|
||||
|
||||
When the status of an instance is **Available**, click the **Stop** button in the upper-right corner of the **instance management** page. In the confirmation dialog box that appears, click **Stop**. On the obshell Dashboard, the system submits a stop task and displays the task ID. Click the displayed task ID to view the task execution status.
|
||||
|
||||
:::tip
|
||||
Stopping an instance will cause business disruption. Please proceed only after you have confirmed the potential risks.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
After the stop task is completed, the instance status changes to **Stopped**. On the **instance management** page, click **Start** in the upper-right corner, and in the confirmation dialog box that appears, click **Start**. The obshell Dashboard will submit a start task and display the task ID. You can click the task ID to view the task details.
|
||||
|
||||
## Reboot an instance
|
||||
|
||||
On the Instance Management page, click **Restart** in the upper-right corner of the page. On the confirmation dialog box that appears, click **Restart**. The Dashboard displays the ID of the restart task. You can click the task ID to view the task details.
|
||||
|
||||
:::tip
|
||||
Restarting the instance will cause a business interruption. Please confirm the relevant risks before performing this operation.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## Upgrade obshell
|
||||
|
||||
Hover the cursor over **···** in the upper-right corner and click **Upgrade obshell**.
|
||||
|
||||
In the **Agent Upgrade Version** window, configure the **obshell Agent Version**. The version is selected from the uploaded obshell software packages. If there are no obshell software packages with a version higher than the current one in the obshell Dashboard, click **+ Upload Package** in the drop-down list to upload a package.
|
||||
|
||||
:::info
|
||||
Make sure that the required installation package exists locally. If it does not exist, click <b>Download RPM Package</b> on the <b>Upload Package</b> page to download the corresponding software package from the open-source mirror site.
|
||||
:::
|
||||
|
||||
After the configuration is completed, click **Upgrade** and then click **OK** in the window that appears. The obshell Dashboard will submit a task to upgrade obshell. You can click **View Tasks** in the pop-up window to view the task execution status.
|
||||
|
||||

|
||||
|
||||
## White List
|
||||
|
||||
The **White List** module displays the list of IP addresses that can connect to the instance. You can click the icon in the right side of the module to modify the whitelist.
|
||||
|
||||

|
||||
|
||||
You can customize the accessible IP address or set all IP addresses to be accessible. When you select the custom setting, you can specify the list of clients that can log in to the instance in the **Custom IP** field. After you enter an IP address, press the Enter key or enter a comma (,) to configure multiple node IP addresses. Hover the cursor over **View Configuration Instructions** to view the configuration description. The following table describes the supported IP address formats:
|
||||
|
||||
* IP address, for example: 127.0.0.10,127.0.0.11
|
||||
* Subnet/mask, for example: 127.0.0.0/24
|
||||
* Fuzzy match, for example: 127.0.0.% or 127.0.0._
|
||||
* Mixed multiple formats, for example: 127.0.0.10,127.0.0.2,127.0.0.%,127.0.0._,127.0.0.1/24
|
||||
|
||||
:::info
|
||||
If you set the value to <code>%</code>, all clients can connect to the instance. This may cause security risks. Proceed with caution.
|
||||
:::
|
||||
|
||||
## Consolidation Management
|
||||
|
||||
The **Consolidation Management** module displays the **Status**, **Last merge start time**, and **Last consolidation end time** of the current instance. Click **Initiate Merger** after **Status** and then click **OK** in the window that appears to initiate a major compaction.
|
||||
|
||||

|
||||
|
||||
## References
|
||||
|
||||
[Manage software packages](800.dashboard-package.md)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-db
|
||||
---
|
||||
|
||||
# Database Management
|
||||
|
||||
You can log in to the obshell Dashboard console and click **Database Management** in the left-side navigation pane to go to the **Database Management** page. This topic describes the information on the **Database Management** page and operations that you can perform on the page.
|
||||
|
||||
## Basic information
|
||||
|
||||
The **Database Management** page displays **Database Name**, **character set**, **Collation**, **JDBC connection string**, **Creation time**, whether the database is **Read Only**, and the actions that can be performed. To copy the JDBC connection string, click the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-tenant-01.png" alt="Copy" style={{ height: '20px' }}/></span> icon next to the **JDBC connection string** column.
|
||||
|
||||
You can click the **Sort by Create Time** icon in the column header to display databases in ascending or descending order. To search for databases on the page, enter the name of the database you want to search for in the search box in the upper-right corner.
|
||||
|
||||

|
||||
|
||||
## Create a database
|
||||
|
||||
Click **New Database** in the upper-right corner of the **Database Management** page. In the **New Database** dialog box, specify **Database Name**, **character set**, **Collation**, and the read-only option. Click **Submission** to complete the operation.
|
||||
|
||||

|
||||
|
||||
| Parameter | Description |
|
||||
|-------|------|
|
||||
| Database Name | Specify the name of the database to be created. The name must meet the following criteria:<ul><li>The length of the name must be 2 to 128 characters.</li><li>The name can contain lowercase English letters, digits, and underscores. The name must start with a lowercase English letter.</li></ul> |
|
||||
| character set | The default value is `utf8mb4`, and you can select a different character set from a drop-down list. |
|
||||
| Collation | You can select the desired collation in a drop-down list. |
|
||||
| Read Only | Specifies whether the new database is a read-only database. |
|
||||
|
||||
## Modify the database
|
||||
|
||||
To modify the **Collation**, **character set**, and read-only status of a database, select the database in the **Operation** column and click **Edit**. After making the necessary changes, click **Submission** to complete the database modification.
|
||||
|
||||

|
||||
|
||||
## Delete a database
|
||||
|
||||
In the **Operation** column, click the **Delete** field and enter `delete` in the field that appears, and then click **Delete**.
|
||||
|
||||

|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-user
|
||||
---
|
||||
|
||||
# User management
|
||||
|
||||
Log in to the obshell Dashboard console and click **User Management** in the left-side navigation pane to go to the **User Management** page.
|
||||
|
||||
On the **User Management** page, you can view all users in the instance. You can click the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-tenant-01.png" alt="Copy" style={{ height: '20px' }}/></span> icon in the **Login connection string** column to copy the connection string for a user. If the instance contains a large number of users, you can use the search bar in the upper-right corner to search for and view the information about a specified user.
|
||||
|
||||

|
||||
|
||||
## Create a user
|
||||
|
||||
On the **User Management** page, click **New User** in the upper-right corner. On the **New Database User** page, set the **User Name**, **Password**, **Global Permissions**, and **Database Permissions**. After the settings are completed, click **Submission**.
|
||||
|
||||

|
||||
|
||||
| Parameter | Description |
|
||||
|-------|------|
|
||||
| User Name | Set the name of the new user. The username must meet the following requirements:<ul><li>Length: 2 to 64 characters.</li><li>Contains lowercase letters, digits, and underscores, and must start with a letter.</li></ul> |
|
||||
| Password | The password must meet the following requirements:<ul><li>Length: 8 to 32 characters</li><li>Contains at least 2 of each of the following four types of characters: digits (0 to 9), uppercase letters (A to Z), lowercase letters (a to z), and special characters (<code>~!@#%^&*_-+=\|(){}[]:;,.?/</code>). </li></ul> After the password is configured, click **Copy Password** to copy the password for later use. |
|
||||
| Confirm Password | Re-enter the password to confirm the configuration. If the two passwords are inconsistent, a prompt is displayed: `The new password entered twice is inconsistent, please re-enter.`. |
|
||||
| Global Permissions (Optional) | You can select the privileges that the user can have from the drop-down list. The privileges apply to all databases. For more information about the privileges, see [Privilege types in MySQL mode](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001974758). If no privileges are selected, the user has no privileges. |
|
||||
| Database Permissions | Set the privileges of the new user for each database. The privileges apply to all targets in the specified database. To set the privileges, perform the following steps:<ol><li>Select one or more databases from the left list. The left list displays all databases in the current instance. You can also search for a specified database in the search box of the left list.</li><li>Click **>** in the middle. The selected databases are moved to the right list.</li><li>Select the privileges that the user can have in the specified database from the right list. Click **All** in the upper-right corner of the specified database to grant all privileges to the user.</li><li>Repeat steps 1, 2, and 3 to set the privileges for other databases. You can also search for a specified database in the search box of the right list.</li><li>To cancel the privileges of the user for a specified database, click **Delete** in the upper-right corner of the database in the right list to move the database back to the left list. You can also click **Remove All** in the upper-right corner of the right list, and then click **Determine** in the dialog box that appears to move all databases in the right list back to the left list. </li></ol> |
|
||||
|
||||
## Lock a user
|
||||
|
||||
You can click the switch icon in the **Lock** column to lock or unlock a user. If the user is not locked, click <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/400.ob-dashboard-tenant-user-01.png" alt="switch" style={{ height: '20px' }}/></span> in the **Lock** column. In the dialog box that appears, click **OK** to lock the user. A locked user cannot log in. Proceed with caution. If the user is locked, click <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/400.ob-dashboard-tenant-user-02.png" alt="switch" style={{ height: '20px' }}/></span> in the **Lock** column. In the dialog box that appears, click **OK** to unlock the user. An unlocked user can log in.
|
||||
|
||||

|
||||
|
||||
## Change a password
|
||||
|
||||
Click the **Change Password** field in the **Operation** column. In the dialog box that appears, enter the **New Password** and **Confirm Password**. After you complete the entries, click **OK** to change the password. The password must meet the following requirements:
|
||||
|
||||
* The password must be 8 to 32 characters long.
|
||||
|
||||
* The password must contain at least two characters of each of the following types: digits (0 to 9), uppercase letters (A to Z), lowercase letters (a to z), and special characters (<code>~!@#%^&*_-+=\|(){}[]:;,.?/</code>).
|
||||
|
||||
After you configure the password, click **Copy Password** to copy the password for later use.
|
||||
|
||||

|
||||
|
||||
## Modify permissions
|
||||
|
||||
Click the **Modify Permissions** field in the **Operation** column to modify the global and database permissions of the corresponding user. You can directly select a global permission from the drop-down list. To modify the database permissions of the user, perform the following steps:
|
||||
|
||||
1. In the left list, select one or more databases. The left list displays all databases in the current instance. You can also search for a specific database in the left search field.
|
||||
|
||||
2. Click **>** in the middle. The selected databases are moved to the right list.
|
||||
|
||||
3. In the right list, select the permissions that the user can have in the specified database. To grant all permissions to the user in the specified database, click **All** in the upper-right corner of the database.
|
||||
|
||||
4. Repeat steps 1, 2, and 3 to set the user permissions for different databases. You can also search for a specific database in the right search field.
|
||||
|
||||
5. To revoke the user permissions of a specified database, click **Delete** in the upper-right corner of the database in the right list. This moves the database back to the left list. You can also click **Remove All** in the upper-right corner of the right list. In the dialog box that appears, click **Determine** to move all databases in the right list back to the left list.
|
||||
|
||||
6. After you complete the settings, click **Submission**.
|
||||
|
||||

|
||||
|
||||
## Delete a user
|
||||
|
||||
Click the **Delete** field in the **Operation** column. In the dialog box that appears, enter `delete` in the input field and click **Delete**. This deletes the specified user. The objects and data under the user will also be deleted. Proceed with caution.
|
||||
|
||||

|
||||
@@ -0,0 +1,98 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-alarm
|
||||
---
|
||||
|
||||
# Alert management
|
||||
|
||||
Log in to the obshell Dashboard console and click **Alarm Center** in the left-side navigation pane to go to the **Alarm Center** page.
|
||||
|
||||
The **Alarm Center** page allows you to centrally manage and monitor alert events in a seekdb instance. You can view and manage alert events, set alert suppression rules, and configure alert rules on this page. This helps you respond to and handle exceptions in a timely manner, ensuring system stability.
|
||||
|
||||
:::info
|
||||
When you log in to the Alert Center page for the first time, you need to enter the Alertmanager address, username, and password. If you have not installed Alertmanager, we recommend that you install it by following the instructions in [Configure monitoring components](../900.configure-monitor.md).
|
||||
:::
|
||||
|
||||
## Filter
|
||||
|
||||
You can filter the content in the **Alarm event**, **Alarm Shielding**, and **Alarm Rules** tabs based on the conditions. The supported conditions vary across tabs. You can configure the conditions and then perform precise searches. Click **Reset** to clear the query content and re-enter the query content.
|
||||
|
||||
| Parameter | Description |
|
||||
| --- | --- |
|
||||
| Alarm level | You can select an alert level from the drop-down list. The alert levels are **Serious**, **Warning**, **Attention**, and **Reminder**.<ul><li><b>Serious</b>: The system availability has declined and needs to be fixed immediately to avoid complete unavailability. </li><li><b>Warning</b>: The system is still available, but it is about to reach an unavailable state. Measures must be taken to prevent the availability from declining. </li><li><b>Attention</b>: Key performance metrics of the system are declining, but they have not reached the level that triggers a major alert. Potential issues can be identified and resolved to avoid major alerts. </li><li><b>Reminder</b>: This is an operational notice, not an alert. It is usually triggered by an administrator performing an important operation. </li></ul> |
|
||||
| Keywords | The keyword for the alert. You can enter a custom keyword and search for the corresponding alert. |
|
||||
| Start Time | The start time of the alert. |
|
||||
| End Time | The end time of the alert. |
|
||||
|
||||
## Events
|
||||
|
||||
You can view the details of each alert in the **Event List** tab, including **Alarm event**, **Alarm level**, **Alarm status**, **Generation time**, **End Time**, and the actions that you can perform on the event. You can sort the alerts by **Alarm level**, **Alarm status**, **Generation time**, and **End Time**.
|
||||
|
||||

|
||||
|
||||
### Mute an alert
|
||||
|
||||
If you do not need to pay attention to an alert, you can click **Shielding** in the **Operation** column of the alert to quickly mute the alert.
|
||||
|
||||
After you click **Shielding**, the page switches to the **Alarm Shielding** tab and the **Shielding conditions** drawer appears. The **Shielding conditions** drawer is automatically filled with the **Masking alarm rules** and **Label** information corresponding to the selected alert. You only need to select **Mask End Time** and enter **Note Information**. You can set the **Mute End Time** in the following two ways:
|
||||
|
||||
* Click the selection box and use the time selector to customize the end time.
|
||||
|
||||
* Click the selection box and set a fixed mute duration. For example, if you click **6 hours**, the system will fill in the current time + 6 hours into the box.
|
||||
|
||||
After an alert is muted, the **Alarm Shielding** tab will display a new mute record. In the **Alarm event** tab, the status of the corresponding alert will change from **Active** to **Inhibit**. Muted alerts will not be sent before the set end time. If you need to send the alert earlier, you can modify the mute record in the **Alarm Shielding** tab or **Unmask** the alert. For more information, see [Edit a suppression rule](#Edit%20a%20suppression%20rule) and [Remove a suppression rule](#Remove%20a%20suppression%20rule).
|
||||
|
||||

|
||||
|
||||
## Alert suppression
|
||||
|
||||
In the suppression list, you can view the **Masking alarm rules**, **Mask End Time**, **Creator**, **Status**, **Creation time**, and **Remarks** of the suppression rules, as well as the operations that can be performed. You can sort the suppression rules based on **Mask End Time**, **Status**, and **Creation time**. You can also edit or remove specific suppression rules. When you hover the pointer over the **Masking alarm rules** column, the alert rule details are displayed.
|
||||
|
||||

|
||||
|
||||
### Create a suppression rule
|
||||
|
||||
On the **Alarm Shielding** tab, click **New Shield**. In the **Shielding conditions** drawer, configure the suppression conditions and click **Submission**. The system returns to the **Alarm Shielding** tab and adds the suppression rule to the suppression list.
|
||||
|
||||
| Parameter | Description |
|
||||
| --- | --- |
|
||||
| Masking alarm rules | In the drop-down list, select the alert rule that you want to suppress. You can select multiple alert rules. The alert rules in the **Rule List** list on the **Alarm Rules** tab are consistent with those in this drop-down list. You can view the details of an alert rule on the **Alarm Rules** tab. |
|
||||
| Label | Optional. You can specify the tag matching condition for alert suppression. You can specify a value or a regular expression. An alert is suppressed only when all the conditions are met. <main id="notice" type="explain"><p>Generally, you do not need to configure this parameter. </p></main> |
|
||||
| Mask End Time | The end time of alert suppression. Alerts are not sent before the end time. You can configure the end time in one of the following ways: <ul><li>Click the checkbox and use the time selector to specify the end time. </li><li>Click the checkbox and set the fixed suppression duration. For example, if you click <b>6 hours</b>, the system automatically fills the current time plus 6 hours into the field. </li></ul> |
|
||||
| Note Information | You can add remarks to the suppression rule for easy identification and reuse. |
|
||||
|
||||
:::info
|
||||
To suppress an alert, we recommend that you go to the <b>Alarm event</b> tab and suppress the alert event. After you click the <b>Shielding</b> field in the <b>Operation</b> column, the system automatically jumps to the <b>Alarm Shielding</b> tab and displays the <b>Shielding conditions</b> drawer. In the drawer, the system automatically fills the <b>Masking alarm rules</b> and <b>Label</b> information associated with the alert event. You only need to configure the end time of alert suppression and add remarks. Then, the alert is suppressed.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
### Edit a suppression rule
|
||||
|
||||
On the **Alarm Shielding** tab, in the **Mask List** section, click **Edit** in the **Operation** column. In the **Shielding conditions** drawer, you can edit the suppression rule.
|
||||
|
||||
The **Shielding conditions** drawer automatically fills the **Masking alarm rules**, **Label**, **Mask End Time**, and **Note Information** information of the suppression rule. You can modify the parameters as needed. For more information, see [Create a suppression rule](#Create%20a%20suppression%20rule). After you click **Submission**, the suppression rule is edited.
|
||||
|
||||
After a suppression rule is edited, the suppression list is updated with the new suppression rule. The status of the original suppression rule is changed from **Active** to **Expired** and no further operations can be performed on it.
|
||||
|
||||

|
||||
|
||||
### Remove a suppression rule
|
||||
|
||||
On the **Alarm Shielding** tab, in the **Mask List** section, click **Unmask** in the **Operation** column. In the confirmation dialog box that appears, click **Disarm**. The suppression rule is removed. After the suppression rule is removed, the status of the suppression rule is changed from **Active** to **Expired** and no further operations can be performed on it.
|
||||
|
||||
:::tip
|
||||
After a suppression rule is removed, it cannot be recovered. Proceed with caution.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
## Alert rules
|
||||
|
||||
In the rule list, you can view the **Alarm rule name**, **Trigger rule**, **Duration**, **Object Type**, **Alarm level**, and **Type**. You can sort the rules by **Alarm level** and filter the rules by **Type** to view **Custom** or **Default** rules.
|
||||
|
||||
:::info
|
||||
obshell Dashboard does not support custom alert rules. You can visit the <a href="https://github.com/oceanbase/obdeploy/blob/master/plugins/prometheus/2.37.1/prometheus_rules.yaml">GitHub repository</a> of obd to view the Prometheus alert rules provided by OceanBase.
|
||||
:::
|
||||
|
||||

|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-monitor
|
||||
---
|
||||
|
||||
# Performance monitoring
|
||||
|
||||
Log in to the obshell Dashboard console and click **Performance monitoring** in the left-side navigation pane. On the **Performance monitoring** page, you can view the icons of the performance metrics of seekdb.
|
||||
|
||||
:::info
|
||||
When you log in for the first time, you must enter the address, username, and password of Prometheus. If you have not installed Prometheus, we recommend that you install it by following the instructions in [Configure monitoring components](../900.configure-monitor.md).
|
||||
:::
|
||||
|
||||
The **Performance monitoring** page provides real-time monitoring capabilities for the **Performance and SQL**, **Transaction**, **Storage and Cache**, and **Host performance** metrics of a seekdb instance. This helps you quickly locate performance bottlenecks and optimize system resource usage.
|
||||
|
||||
By default, the **Performance monitoring** page displays the monitoring information of the **Performance and SQL** tab. Different tabs support viewing different monitoring metrics, as shown in the following table.
|
||||
|
||||
| Tab | Monitoring metrics |
|
||||
| --- | --- |
|
||||
| Performance and SQL | This tab displays the following performance metrics: **QPS**, **Response time**, **SQL execution plan category**, **SQL execution plan time**, **Number of sessions**, **Waiting for events**, **Waiting for event time**, **Request waiting queue**, **Request waiting queue time consuming**, **CPU cost**, **Thread usage**, **memory usage percent**, **MemStore usage percent**, **Cursors**, and **GTS request count**. |
|
||||
| Transaction | This tab displays the following performance metrics: **TPS**, **Transaction response time**, **Transaction response time detail**, **Transaction rollback ratio**, **Number of transaction logs**, **Transaction log volume**, **Transaction log time-consuming**, **Number of transaction lock waits**, **Average time to wait for transaction lock**, **Transaction count**, and **MemStore lock success ratio**. |
|
||||
| Storage and Cache | This tab displays the following performance metrics: **MemStore**, **IOPS**, **IO time-consuming**, **I/O Throughput**, **Cache size**, **Cache hit rate**, **Cache request total count**, **Log Disk**, **Log Disk Percentage**, **Vector Memory**, and **Vector Memory Percentage**. |
|
||||
| Host performance | This tab displays the following performance metrics: **Linux system load**, **CPU Usage**, **Memory**, **Memory usage**, **IOPS**, **IO time-consuming**, **I/O Throughput**, and **Network Throughput Rate**. |
|
||||
|
||||
## Procedure
|
||||
|
||||
1. You can customize the refresh frequency and time range at the top of the page based on your needs.
|
||||
|
||||

|
||||
|
||||
* By default, performance data does not refresh. Click the refresh button next to **Performance monitoring** to refresh the entire **Performance monitoring** page and display the **Performance and SQL** module. Click the refresh field to refresh the icon information and remain in the current module.
|
||||
|
||||
* You can customize the refresh frequency. Hover the cursor over the **Close** field to select the refresh frequency from the drop-down list. The refresh frequency options are `Off`, `5s`, `10s`, and `30s`, with `Off` as the default.
|
||||
|
||||
* You can use the time selector to customize the monitoring scope. Click the left side to select monitoring information for a specific period before the current time. For example, click **Last 30 Minutes** to view monitoring information for the last 30 minutes. By default, the last 1 hour of data is displayed. You can select a different period as needed. The right side displays the date and time. You can manually enter the date or select it from the calendar below. You can manually enter the time or select it by sliding the mouse.
|
||||

|
||||
|
||||
2. Hover the cursor over the question mark icon next to each monitoring item to view its description. Hover the cursor over any position on the monitoring chart to view the detailed information of the line chart. Click ▲ or ▼ in the upper-right corner of the icon to navigate to the previous or next page.
|
||||
|
||||

|
||||
|
||||
3. You can perform operations on specific monitoring metrics.
|
||||
|
||||
Hover the cursor over the corresponding monitoring metric to display the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/SeekDB/obshell/600.dashboard-monitor-05.png" alt="Focus" style={{ height: '20px' }}/></span> icon. Click this icon to display only the line trend of this monitoring metric, and the other colored line trends will be grayed out. Click the icon again to display all monitoring metrics.
|
||||
|
||||
Click the red box in the following figure to hide the corresponding colored line trend, which will be grayed out. Click the box again to display the corresponding colored line trend.
|
||||
|
||||

|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-parameter
|
||||
---
|
||||
|
||||
# Parameter management
|
||||
|
||||
Log in to the obshell Dashboard console and click **Parameter Management** in the left-side navigation pane to go to the **Parameter Management** page. This topic describes how to view and modify parameters of a seekdb instance by using obshell Dashboard.
|
||||
|
||||
The **Parameter Management** page displays the **Parameter Name**, **Current Value**, and **Description** of the parameters in seekdb, and the operations that you can perform on the parameters. You can move the pointer over the **Description** column of a parameter to view the description of the parameter. You can also search for a parameter in the search box in the upper-right corner of the page.
|
||||
|
||||

|
||||
|
||||
You can click **Modify Value** in the **Operation** column to modify the value of a parameter. After you modify the value, click **Submission** and confirm the modification.
|
||||
|
||||

|
||||
@@ -0,0 +1,28 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-package
|
||||
---
|
||||
|
||||
# Package management
|
||||
|
||||
Log in to the obshell Dashboard console and choose **System Management** > **Software package management** in the left-side navigation pane to go to the **Software package** page. This topic describes how to view or upload software packages in the obshell Dashboard.
|
||||
|
||||
## View package details
|
||||
|
||||
On the package page, the software package name, version, hardware architecture, size (MB), MD5 value, upload time, and available operations of the software package uploaded to the obshell Dashboard are displayed. Hover the pointer over the MD5 column in the corresponding row to view the software package's MD5 value.
|
||||
|
||||
You can use the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-tenant-02.png" alt="filter" style={{ height: '20px' }}/></span> icon in **Version** and **Hardware Architecture** to filter and view packages by version and hardware architecture. You can also use the <span style={{ verticalAlign: 'middle' }}><img src="https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.3.5/700.reference/1500.Components-and-Tools/100.obshell/500.icon/100.ob-dashboard-tenant-03.png" alt="sort" style={{ height: '20px' }}/></span> icon in **Package Name** and **Upload time** to select whether to sort the packages in ascending or descending order. You can also use the search box in the upper right corner to search for a specific package if too many packages are uploaded.
|
||||
|
||||

|
||||
|
||||
## Upload software packages
|
||||
|
||||
Click **Upload Software Package** in the upper-right corner of the **Software package** page, and click **Select Software Package** to upload an RPM package from the local server. Before you upload an RPM package, make sure that one meets the specified requirements on the local server. If no required RPM package is found on the local server, you can click the **RPM package download address** field to obtain it from the open source mirror.
|
||||
|
||||

|
||||
|
||||
## Uninstall a package
|
||||
|
||||
Click **Delete** in the **Operation** column of the corresponding package, and then click **Confirm** in the message that appears.
|
||||
|
||||

|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
|
||||
slug: /dashboard-task
|
||||
---
|
||||
|
||||
# Task management
|
||||
|
||||
The **Mission Center** page displays all tasks in the obshell Dashboard. This topic describes the information on the **Mission Center** page and the operations that you can perform.
|
||||
|
||||
You can access the **Mission Center** page by using the following two methods:
|
||||
|
||||
* Method 1: Log in to the obshell Dashboard console and click **Tasks** in the upper-right corner.
|
||||
|
||||
* Method 2: Log in to the obshell Dashboard console and click **System Management** > **Mission Center** in the left-side navigation pane.
|
||||
|
||||
You can filter tasks by status or search for a specific task. To view the details of a task, click the task name.
|
||||
|
||||

|
||||
|
||||
If a task is in the **In operation** state, you can click the task name to go to the task details page, and then click **Cancel Task** in the upper-right corner. After you confirm the operation, the task is canceled.
|
||||
|
||||
If a task is in the **Failed** state, you can perform the following operations:
|
||||
|
||||
* Click **Locate Current Progress**. The page jumps to the failed subtask page. You can troubleshoot the issue based on the log information displayed on the right side of the task details page.
|
||||
|
||||
* Click **Rollback Task**. In the confirmation window, click **Rollback**. The rollback operation rolls back all executed tasks from the point of failure.
|
||||
|
||||
* Click **Skip Task**. In the confirmation window, click **Skip**. The skip operation skips the entire task.
|
||||
|
||||
* Click **Retry**. In the confirmation window, click **Confirm**. The retry operation retries all failed nodes and continues execution from the failed node.
|
||||
|
||||
* Click **Download log** in the upper-right corner of the log details page. Download the current log file and post it to the [Q&A section](https://open.oceanbase.com/) on the official website. Our on-duty engineers will assist you in troubleshooting the issue.
|
||||
|
||||
<!--  -->
|
||||
@@ -0,0 +1,207 @@
|
||||
---
|
||||
|
||||
slug: /configure-monitor
|
||||
---
|
||||
|
||||
# Configure monitoring components
|
||||
|
||||
The performance monitoring and alerting features of obshell Dashboard depend on Prometheus and Alertmanager. This topic describes how to deploy the required monitoring components.
|
||||
|
||||
## Background
|
||||
|
||||
The performance monitoring feature of obshell Dashboard relies on obagent and Prometheus, while the alerting feature relies on Alertmanager. obagent provides an HTTP interface for data collection from seekdb. Prometheus periodically accesses obagent's interface to collect and persist monitoring data. obshell Dashboard displays the monitoring data collected by Prometheus. Alertmanager processes alerts from monitoring systems like Prometheus, offering features such as alert deduplication, grouping, routing, and muting.
|
||||
|
||||
## Install obagent
|
||||
|
||||
### Configure seekdb
|
||||
|
||||
1. Prepare a user
|
||||
|
||||
We recommend that you use a read-only user and grant the SELECT privilege on the oceanbase.* database to the user.
|
||||
|
||||
```shell
|
||||
obclient> create user monitor identified by '******';
|
||||
obclient> grant select on oceanbase.* to monitor;
|
||||
```
|
||||
|
||||
2. Set the instance name
|
||||
|
||||
If you want to monitor multiple seekdb instances by using Prometheus, you must set different instance names for these instances. This way, you can better distinguish these instances.
|
||||
|
||||
```shell
|
||||
obclient> alter system set `cluster` = 'obcluster';
|
||||
```
|
||||
|
||||
:::tip
|
||||
To set the instance name, you must add backticks (<code>`</code>) to the <code>cluster</code> parameter.
|
||||
:::
|
||||
|
||||
### Configure obagent
|
||||
|
||||
1. Install obagent
|
||||
|
||||
Go to the [Open Source Image Library](https://mirrors.aliyun.com/oceanbase/community/stable/) and download the obagent installation package corresponding to the architecture of your environment. Then, run the following command to install obagent. We recommend that you install the latest version.
|
||||
|
||||
```shell
|
||||
[root@test ~]# rpm -ivh obagent-*.rpm
|
||||
```
|
||||
|
||||
By default, obagent is installed in the `/home/admin` directory.
|
||||
|
||||
2. Configure obagent
|
||||
|
||||
Run the following command to configure the account password for data collection and some necessary metadata information.
|
||||
|
||||
```shell
|
||||
[root@test ~]# cd /home/admin/obagent
|
||||
[root@test obagent]# bin/ob_agentctl config --update monagent.ob.monitor.user=monitor,monagent.ob.monitor.password=******,monagent.ob.cluster.name=obcluster,monagent.pipeline.ob.status=active,agent.http.basic.auth.metricAuthEnabled=false
|
||||
```
|
||||
|
||||
The following table describes the command parameters.
|
||||
|
||||
* `monagent.ob.monitor.user`: specifies the account for data collection. The value is the read-only user created in seekdb. In this example, the value is `monitor`.
|
||||
* `monagent.ob.monitor.password`: specifies the password for the account for data collection. The value is the password of the read-only user in seekdb.
|
||||
* `monagent.ob.cluster.name`: specifies the instance name of the seekdb instance. After you connect to the instance, you can run the `SHOW PARAMETERS LIKE 'cluster';` command to query the instance name. The value in the `value` column is the instance name.
|
||||
* `monagent.pipeline.ob.status`: specifies whether to collect metrics of seekdb. Set the value to `active` to enable the collection of metrics of seekdb.
|
||||
* `agent.http.basic.auth.metricAuthEnabled`: specifies whether to enable basic authentication for the HTTP interface of obagent. Set the value to `false` to disable basic authentication for the HTTP interface of obagent.
|
||||
|
||||
The command output is as follows:
|
||||
|
||||
```shell
|
||||
{"successful":true,"message":"success","error":""}
|
||||
```
|
||||
|
||||
3. Start obagent
|
||||
|
||||
```shell
|
||||
[root@test obagent]# bin/ob_agentctl start
|
||||
```
|
||||
|
||||
The command output is as follows:
|
||||
|
||||
```shell
|
||||
{"successful":true,"message":"ok","error":""}
|
||||
```
|
||||
|
||||
### Verification
|
||||
|
||||
You can check whether obagent is started by viewing the process, or you can access the data query interface to verify whether you can obtain monitoring data.
|
||||
|
||||
* View the process.
|
||||
|
||||
```shell
|
||||
[root@test obagent]# ps -ef | grep agent
|
||||
```
|
||||
|
||||
The output is as follows:
|
||||
|
||||
```shell
|
||||
root 27064 1 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_agentd -c /home/admin/obagent/conf/agentd.yaml
|
||||
root 27071 27064 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_mgragent
|
||||
root 27072 27064 0 14:46 ? 00:00:00 /home/admin/obagent/bin/ob_monagent
|
||||
root 27116 26122 0 14:47 pts/0 00:00:00 grep --color=auto agent
|
||||
```
|
||||
|
||||
* Access the data query interface.
|
||||
|
||||
```shell
|
||||
[root@test obagent]# curl -L 'http://127.0.0.1:8088/metrics/ob/basic'
|
||||
```
|
||||
|
||||
The output is as follows:
|
||||
|
||||
```shell
|
||||
# HELP ob_active_session_num monitor collected message
|
||||
# TYPE ob_active_session_num untyped
|
||||
ob_active_session_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 0 1762135926015
|
||||
# HELP ob_all_session_num monitor collected message
|
||||
# TYPE ob_all_session_num untyped
|
||||
ob_all_session_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 0 1762135926015
|
||||
# HELP ob_plan_cache_access_total monitor collected message
|
||||
# TYPE ob_plan_cache_access_total untyped
|
||||
ob_plan_cache_access_total{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 33229 1762135926015
|
||||
# HELP ob_plan_cache_hit_total monitor collected message
|
||||
# TYPE ob_plan_cache_hit_total untyped
|
||||
ob_plan_cache_hit_total{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 32051 1762135926015
|
||||
# HELP ob_plan_cache_memory_bytes monitor collected message
|
||||
# TYPE ob_plan_cache_memory_bytes untyped
|
||||
ob_plan_cache_memory_bytes{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 1.15905078e+08 1762135926015
|
||||
# HELP ob_server_num monitor collected message
|
||||
# TYPE ob_server_num untyped
|
||||
ob_server_num{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",obzone="",server_ips="127.0.0.1",status="ACTIVE",svr_ip="127.0.0.1",svr_port="2882"} 1 1762135926015
|
||||
# HELP ob_sysstat monitor collected message
|
||||
# TYPE ob_sysstat untyped
|
||||
ob_sysstat{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",stat_id="10000",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 2673 1762135926015
|
||||
ob_sysstat{app="OB",ob_cluster_id="0",ob_cluster_name="obcluster",ob_tenant_id="1",obzone="",stat_id="10001",svr_ip="127.0.0.1",svr_port="2882",tenant_name="sys"} 2.838626e+06 1762135926015
|
||||
······# Subsequent outputs are omitted
|
||||
```
|
||||
|
||||
## Configure Prometheus
|
||||
|
||||
For more information, visit the [Prometheus website](https://prometheus.io/) or [open source mirror](https://mirrors.aliyun.com/oceanbase/community/stable/). You can download and deploy the corresponding installation package of Prometheus based on the architecture of the environment in which you want to deploy Prometheus. Generally, one Prometheus instance is sufficient to monitor all seekdb instances. This section provides only a sample configuration. For more information, see [Prometheus documentation](https://prometheus.io/docs/prometheus/latest/getting_started/).
|
||||
|
||||
:::info
|
||||
|
||||
For more information about the Prometheus alerting rules provided by OceanBase, see the <a href="https://github.com/oceanbase/obdeploy/blob/master/plugins/prometheus/2.37.1/prometheus_rules.yaml">GitHub repository</a>.
|
||||
:::
|
||||
|
||||
```shell
|
||||
global:
|
||||
scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
|
||||
evaluation_interval: 5s # Evaluate rules every 15 seconds. The default is every 1 minute.
|
||||
|
||||
# Alertmanager configuration, prometheus will push alerts to these addresses
|
||||
alerting:
|
||||
alertmanagers:
|
||||
- static_configs:
|
||||
- targets:
|
||||
- localhost:9093
|
||||
|
||||
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
|
||||
rule_files:
|
||||
- "prometheus_rules.yaml"
|
||||
# - "second_rules.yml"
|
||||
|
||||
scrape_configs:
|
||||
- job_name: "ob-basic"
|
||||
metrics_path: "/metrics/ob/basic"
|
||||
# Open the following configurations for Prometheus 3.x.
|
||||
|
||||
|
||||
# fallback_scrape_protocol: PrometheusText0.0.4
|
||||
static_configs:
|
||||
- targets: ["127.0.0.1:8088"]
|
||||
- job_name: "ob-extra"
|
||||
metrics_path: "/metrics/ob/extra"
|
||||
# prometheus 3.x needs to enable the following configuration.
|
||||
# fallback_scrape_protocol: PrometheusText0.0.4
|
||||
static_configs:
|
||||
- targets: ["127.0.0.1:8088"]
|
||||
- job_name: "ob-host"
|
||||
metrics_path: "/metrics/node/host"
|
||||
# Enable the following configuration for Prometheus 3.x:
|
||||
|
||||
|
||||
# fallback_scrape_protocol: PrometheusText0.0.4
|
||||
static_configs:
|
||||
- targets: ["127.0.0.1:8088"]
|
||||
```
|
||||
|
||||
After you configure Prometheus, you can access the Prometheus graphical interface, click **Status** in the left navigation pane, and select **Target** to check whether data is collected.
|
||||
|
||||
:::info
|
||||
|
||||
Different versions of Prometheus may have different interface terms. Therefore, <b>Target</b> is provided as an example only in this case.
|
||||
:::
|
||||
|
||||

|
||||
|
||||
### Configure Alertmanager
|
||||
|
||||
Go to [Prometheus](https://prometheus.io/) or [Open Source Mirror](https://mirrors.aliyun.com/oceanbase/community/stable/) and download and decompress the required installation package based on the architecture of your environment. Modify the configuration file (`alertmanager.yml`) as described in the [Alertmanager documentation](https://prometheus.io/docs/alerting/latest/configuration/). Then, go to the working directory and run the following command to start Alertmanager:
|
||||
|
||||
```shell
|
||||
[root@test alertmanager]# nohup ./alertmanager --config.file=alertmanager.yml --cluster.advertise-address=127.0.0.1:9093 > alertmanager.log 2>&1 &
|
||||
```
|
||||
|
||||
In the example, `127.0.0.1:9093` indicates the service address, and `nohup` indicates that the alertmanager process is run in the background.
|
||||
@@ -0,0 +1,337 @@
|
||||
---
|
||||
|
||||
slug: /mysql-compatibility
|
||||
---
|
||||
|
||||
# Compatibility with MySQL
|
||||
|
||||
This topic describes the compatibility between seekdb and native MySQL.
|
||||
|
||||
seekdb supports most features and syntax from MySQL 5.7 and 8.0. However, due to architectural differences or limited demand, some features are not supported. The following sections provides compatibility details between seekdb and MySQL:
|
||||
|
||||
* Data types
|
||||
|
||||
* SQL syntaxes
|
||||
|
||||
* Procedural Language (PL) features
|
||||
|
||||
* System views
|
||||
|
||||
* Character sets
|
||||
|
||||
* Collations
|
||||
|
||||
* Functions and expressions
|
||||
|
||||
* Partition support
|
||||
|
||||
* Storage engine
|
||||
|
||||
* Optimizer
|
||||
|
||||
|
||||
## Data types
|
||||
|
||||
seekdb supports the following data types:
|
||||
|
||||
* Numeric data types
|
||||
|
||||
* Integer types: `BOOL`/`BOOLEAN`/`TINYINT`, `SMALLINT`, `MEDIUMINT`, `INT`/`INTEGER`, and `BIGINT`
|
||||
|
||||
* Fixed-point types: `DECIMAL` and `NUMERIC`
|
||||
|
||||
* Floating-point types: `FLOAT` and `DOUBLE`
|
||||
|
||||
* Bit-value type: `BIT`
|
||||
|
||||
* Date and time types: `DATETIME`, `TIMESTAMP`, `DATE`, `TIME`, and `YEAR`
|
||||
|
||||
* Character types: `CHAR`, `VARCHAR`, `BINARY`, and `VARBINARY`
|
||||
|
||||
* Large object types: `TINYBLOB`, `BLOB`, `MEDIUMBLOB`, and `LONGBLOB`
|
||||
|
||||
* Text types: `TINYTEXT`, `TEXT`, `MEDIUMTEXT`, `LONGTEXT`, and `STRING`
|
||||
|
||||
* Enumeration type: `ENUM`
|
||||
|
||||
* Set type: `SET`
|
||||
|
||||
* JSON data types
|
||||
|
||||
* Spatial data types
|
||||
|
||||
* Roaring Bitmap data types
|
||||
|
||||
* Array data types
|
||||
|
||||
* Vector data types
|
||||
|
||||
## SQL syntaxes
|
||||
|
||||
:::tab
|
||||
tab Supported
|
||||
|
||||
**SELECT**
|
||||
|
||||
* Supports most query features, including single- and multi-table queries, subqueries, inner joins, semi joins, outer joins, grouping, aggregation, and regular data mining functions such as probability and linear regression.
|
||||
|
||||
* Supports set operations such as `UNION`, `UNION ALL`, `MINUS`, `EXCEPT`, and `INTERSECT` across multiple `SELECT` queries.
|
||||
|
||||
* Supports the `EXPLAIN` statement for querying execution plans.
|
||||
|
||||
**INSERT**
|
||||
|
||||
* Supports single- and multi-row inserts, including partition-specific inserts.
|
||||
|
||||
* Supports the `INSERT INTO ... SELECT ...` statement.
|
||||
|
||||
**UPDATE**
|
||||
|
||||
* Supports single- and multi-column updates.
|
||||
|
||||
* Supports updates by using subqueries.
|
||||
|
||||
* Supports set updates.
|
||||
|
||||
**DELETE**
|
||||
|
||||
* Supports single- and multi-table deletion.
|
||||
|
||||
**TRUNCATE**
|
||||
|
||||
* Allows you to completely clear a specified table.
|
||||
|
||||
tab Not supported
|
||||
|
||||
**SELECT**
|
||||
|
||||
* Does not support the `SELECT ... FOR SHARE ...` statement.
|
||||
|
||||
**TRUNCATE**
|
||||
|
||||
* Does not support truncating a table that has a transaction in progress or a table that is being locked.
|
||||
|
||||
:::
|
||||
|
||||
## PL features
|
||||
|
||||
seekdb is compatible with most PL features of MySQL, including:
|
||||
|
||||
* Data types
|
||||
* Stored procedures
|
||||
* Custom functions
|
||||
* Triggers
|
||||
* Exception handling
|
||||
|
||||
seekdb also supports specific MySQL PL packages, such as `DBMS_RESOURCE_MANAGER`, `DBMS_STATS`, `DBMS_UDR`, `DBMS_XPLAN`, and `DBMS_WORKLOAD_REPOSITORY`.
|
||||
|
||||
For more information about PL features, see [PL reference](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001972342).
|
||||
|
||||
## System views
|
||||
|
||||
seekdb implements most views in the `information_schema` and `mysql` internal databases. However, due to architectural differences, some views or columns may differ in meaning or implementation compared with MySQL.
|
||||
|
||||
For more information about system views, see [Overview of system views](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001970996).
|
||||
|
||||
## Character sets
|
||||
|
||||
seekdb supports the following character sets:
|
||||
|
||||
* binary
|
||||
* utf8mb4/utf8mb3
|
||||
|
||||
:::info
|
||||
<code>utf8mb3</code> is an alias of <code>utf8mb4</code>.
|
||||
:::
|
||||
|
||||
* gbk
|
||||
* utf16
|
||||
* utf16le
|
||||
* gb18030
|
||||
* latin1
|
||||
* gb18030_2022
|
||||
* ascii
|
||||
* tis620
|
||||
* sjis
|
||||
* big5
|
||||
* dec8
|
||||
* gb2312
|
||||
* ujis
|
||||
* euckr
|
||||
* eucjpms
|
||||
* cp932
|
||||
* cp850
|
||||
* hp8
|
||||
* macroman
|
||||
* swe7
|
||||
|
||||
## Collations
|
||||
|
||||
The following table lists collations supported by seekdb.
|
||||
|
||||
| Collation | Character Set | Description |
|
||||
|--------------------|---------|-----------------------------------------------|
|
||||
| utf8mb4_general_ci | utf8mb4 | Uses general collation rules. |
|
||||
| utf8mb4_bin | utf8mb4 | Uses binary collation rules. |
|
||||
| utf8mb4_unicode_ci | utf8mb4 | Uses collation rules based on the Unicode Collation Algorithm (UCA). |
|
||||
| utf8mb4_unicode_520_ci | utf8mb4 | Uses collation rules from Unicode V5.2.0, sorts by Unicode code point, and ignores case differences. |
|
||||
| utf8mb4_croatian_ci | utf8mb4 | Uses Croatian collation rules. Compatible with `utf8_croatian_ci`. |
|
||||
| utf8mb4_czech_ci | utf8mb4 | Uses Czech collation rules. |
|
||||
| utf8mb4_0900_ai_ci | utf8mb4 | Uses collation rules from Unicode V9.0.0, ignores case differences, and treats uppercase and lowercase letters as equivalent. |
|
||||
| binary | binary | Uses binary collation rules. |
|
||||
| gbk_chinese_ci | gbk | Uses Chinese collation rules. |
|
||||
| gbk_bin | gbk | Uses binary collation rules. |
|
||||
| utf16_general_ci | utf16 | Uses general collation rules. |
|
||||
| utf16_bin | utf16 | Uses binary collation rules. |
|
||||
| utf16_unicode_ci | utf16 | Uses collation rules based on the UCA. |
|
||||
| utf8mb4_german2_ci | utf16le | Uses German collation rules. |
|
||||
| utf8mb4_croatian_ci | utf16le | Uses Croatian collation rules. |
|
||||
| gb18030_chinese_ci | gb18030 | Uses Chinese collation rules. |
|
||||
| gb18030_bin | gb18030 | Uses binary collation rules. |
|
||||
| latin1_swedish_ci | latin1 | Uses Swedish/Finnish collation rules. |
|
||||
| latin1_german1_ci | latin1 | Uses German collation rules for the latin1 character set. |
|
||||
| latin1_danish_ci | latin1 | Uses Danish collation rules for the latin1 character set. |
|
||||
| latin1_german2_ci | latin1 | German dictionary order collation rules for the latin1 character set. |
|
||||
| latin1_general_ci | latin1 | General collation rules, case-insensitive and accent-sensitive; suitable for some European languages. |
|
||||
| latin1_general_cs | latin1 | General collation rules, case-sensitive; supports multiple Western European languages. |
|
||||
| latin1_spanish_ci | latin1 | Spanish collation rules for the latin1 character set. |
|
||||
| latin1_bin | latin1 | Binary collation rules for the latin1 character set. |
|
||||
| gb18030_2022_bin | gb18030_2022 | Uses binary collation rules. |
|
||||
| gb18030_2022_chinese_ci | gb18030_2022 | Uses Pinyin collation rules, case-insensitive. This is the default collation for this character set. |
|
||||
| gb18030_2022_chinese_cs | gb18030_2022 | Uses Pinyin collation rules, case-sensitive. |
|
||||
| gb18030_2022_radical_ci | gb18030_2022 | Uses radical-stroke order collation rules, case-insensitive. |
|
||||
| gb18030_2022_radical_cs | gb18030_2022 | Uses radical-stroke order collation rules, case-sensitive. |
|
||||
| gb18030_2022_stroke_ci | gb18030_2022 | Uses stroke order collation rules, case-insensitive. |
|
||||
| gb18030_2022_stroke_cs | gb18030_2022 | Uses stroke order collation rules, case-sensitive. |
|
||||
| ascii_bin | ascii | Uses binary collation rules. |
|
||||
| ascii_general_ci | ascii | Alphabetical collation rules, case-insensitive; treats uppercase and lowercase letters as equivalent. |
|
||||
| tis620_bin | tis620 | Uses binary collation rules. |
|
||||
| tis620_thai_ci | tis620 | Thai collation rules, case-insensitive. |
|
||||
| sjis_japanese_ci | sjis | Japanese collation rules for the SJIS character set. |
|
||||
| dec8_swedish_ci | dec8 | Swedish collation rules for the DEC8 character set. |
|
||||
| gb2312_chinese_ci | gb2312 | Chinese collation rules for the GB2312 character set, case-insensitive. |
|
||||
| gb2312_bin | gb2312 | Binary collation rules for the GB2312 character set, case-sensitive. |
|
||||
| ujis_japanese_ci | ujis | Japanese collation rules for the UJIS character set, case-insensitive. |
|
||||
| ujis_bin | ujis | Binary collation rules for the UJIS character set, case-sensitive. |
|
||||
| euckr_korean_ci | euckr | Korean collation rules for the EUCKR character set, case-insensitive. |
|
||||
| euckr_bin | euckr | Binary collation rules for the EUCKR character set, case-sensitive. |
|
||||
| eucjpms_japanese_ci | eucjpms | Japanese collation rules for the EUCJPMS character set, case-insensitive. |
|
||||
| eucjpms_bin | eucjpms | Binary collation rules for the EUCJPMS character set, case-sensitive. |
|
||||
| cp932_japanese_ci | cp932 | Japanese collation rules for the CP932 character set, case-insensitive. |
|
||||
| cp932_bin | cp932 | Binary collation rules for the CP932 character set, case-sensitive. |
|
||||
| cp850_general_ci | cp850 | General collation rules for the CP850 character set, case-insensitive. |
|
||||
| cp850_bin | cp850 | Binary collation rules for the CP850 character set, case-sensitive. |
|
||||
| hp8_english_ci | hp8 | English collation rules for the HP8 character set, case-insensitive. |
|
||||
| hp8_bin | hp8 | Binary collation rules for the HP8 character set, case-sensitive. |
|
||||
| macroman_general_ci | macroman | General collation rules for the MacRoman character set, case-insensitive. |
|
||||
| macroman_bin | macroman | Binary collation rules for the MacRoman character set, case-sensitive. |
|
||||
| swe7_swedish_ci | swe7 | Swedish collation rules for the SWE7 character set, case-insensitive. |
|
||||
| swe7_bin | swe7 | Binary collation rules for the SWE7 character set, case-sensitive. |
|
||||
|
||||
## Functions
|
||||
|
||||
:::tab
|
||||
tab Supported
|
||||
|
||||
seekdb supports all analytic (window) functions that are available in MySQL, and even more. In other words, every analytic (window) function supported by MySQL is also supported by seekdb.
|
||||
|
||||
tab Not supported
|
||||
|
||||
Compared with MySQL, seekdb does not support the following functions:
|
||||
|
||||
* String functions: `LOAD_FILE()` and `MATCH()`
|
||||
|
||||
* XML functions: `ExtractValue()` and `UpdateXML()`
|
||||
|
||||
* Other functions: `MASTER_POS_WAIT()`
|
||||
|
||||
:::
|
||||
|
||||
## Partition support
|
||||
|
||||
seekdb and MySQL differ in their support for table partitioning as follows:
|
||||
|
||||
* seekdb supports partitioning, template-based subpartitioning, and non-template-based subpartitioning. MySQL does not support non-template-based subpartitioning.
|
||||
|
||||
* For subpartitioning, seekdb supports HASH, KEY, RANGE, RANGE COLUMNS, LIST, and LIST COLUMNS subpartitioning. MySQL supports only HASH and KEY subpartitioning.
|
||||
|
||||
* seekdb supports adding and dropping subpartitions in partitioned tables. MySQL does not support adding and dropping subpartitions.
|
||||
|
||||
:::tip
|
||||
|
||||
Adding and dropping subpartitions is not supported for scenarios where the subpartitioning type is HASH or KEY.
|
||||
:::
|
||||
|
||||
For more information about partitions, see [Partition overview](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001973668).
|
||||
|
||||
|
||||
## Storage engine
|
||||
|
||||
Unlike MySQL, which uses data block-based storage engines such as InnoDB and MyISAM, seekdb uses a storage engine based on the LSM-Tree architecture.
|
||||
|
||||
## Optimizer
|
||||
|
||||
seekdb is compatible with some optimizer features of MySQL. For more information about the optimizer, see [SQL tuning](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001973788).
|
||||
|
||||
:::tab
|
||||
tab Supported
|
||||
|
||||
* Commands to query execution plans:
|
||||
|
||||
* The output columns of the execution plan view include only `ID`, `OPERATOR`, `NAME`, `EST. ROWS`, and `COST`, as well as the details of operators.
|
||||
|
||||
* Statistics queries:
|
||||
|
||||
* You can manually query the histogram statistics information stored in the data dictionary table by executing the `ANALYZE TABLE` statement.
|
||||
|
||||
* You can automatically query table statistics and column statistics through views.
|
||||
|
||||
* Query rewriting and optimization:
|
||||
|
||||
* Outer join optimization
|
||||
|
||||
* Outer join simplification
|
||||
|
||||
* Block Nested-Loop (BNL) and Batched Key Access (BKA) joins
|
||||
|
||||
* Conditional filtering
|
||||
|
||||
* Constant folding optimization
|
||||
|
||||
* `IS NULL` optimization (indexes do not store `NULL` values)
|
||||
|
||||
* `ORDER BY` optimization
|
||||
|
||||
* `GROUP BY` optimization
|
||||
|
||||
* Elimination by using `DISTINCT`
|
||||
|
||||
* `LIMIT` pushdown
|
||||
|
||||
* Window function optimization
|
||||
|
||||
* Avoiding full table scan
|
||||
|
||||
* Predicate pushdown
|
||||
|
||||
* Optimizer hint mechanism:
|
||||
|
||||
* Join-order optimizer hints
|
||||
|
||||
* Table-level optimizer hints
|
||||
|
||||
* Index-level optimizer hints
|
||||
|
||||
* `INDEX`, `FULL`, `ORDERED`, and `LEADING` hints
|
||||
|
||||
* Parallel execution capabilities such as parallel query, parallel replication, and parallel write, which are compatible with those in MySQL. seekdb also supports parallel operations such as parallel aggregation, parallel join, parallel grouping, and parallel sorting.
|
||||
|
||||
* Plan caching and precompilation, which are not supported by MySQL.
|
||||
|
||||
tab Not supported
|
||||
|
||||
* Commands to query execution plans:
|
||||
|
||||
* Does not support the `SHOW WARNINGS` statement for displaying additional information about execution plans.
|
||||
|
||||
:::
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
|
||||
slug: /telemetry
|
||||
---
|
||||
|
||||
# Telemetry
|
||||
|
||||
seekdb contains a telemetry feature that is enabled by default. This feature anonymously collects information about how the product is used. These insights help us understand how users interact with seekdb, identify common issues, and continuously improve its features and user experience.
|
||||
|
||||
## Privacy protection
|
||||
|
||||
The telemetry feature automatically anonymizes sensitive data, such as IP addresses, using hashing. Only essential technical metrics are collectedn. No business data or personal user information is ever gathered.
|
||||
|
||||
## Manage telemetry
|
||||
|
||||
You can control whether telemetry is enabled by setting the `TELEMETRY_ENABLED` environment variable.
|
||||
|
||||
To disable telemetry:
|
||||
|
||||
```bash
|
||||
export TELEMETRY_ENABLED=false
|
||||
```
|
||||
|
||||
To re-enable telemetry after disabling it:
|
||||
|
||||
```bash
|
||||
export TELEMETRY_ENABLED=true
|
||||
```
|
||||
|
||||
:::tip
|
||||
Telemetry is enabled by default, so you only need to set this environment variable if you want to disable it.
|
||||
:::
|
||||
|
||||
## What telemetry collects
|
||||
|
||||
Telemetry gathers the following anonymized technical information:
|
||||
|
||||
* Version and deployment details: seekdb version and deployment method
|
||||
|
||||
* Host environment information: operating system version, CPU model, number of CPU cores, and memory size
|
||||
|
||||
* Resource specifications: memory allocated to seekdb, data disk and log disk capacity, and similar details
|
||||
|
||||
## How to view collected data
|
||||
|
||||
A local copy of the telemetry data is saved on your system. You can see exactly what seekdb has collected by checking the `run/telemetry.json` file in your deployment directory.
|
||||
@@ -0,0 +1,140 @@
|
||||
---
|
||||
sidebar_label: V1.0.0
|
||||
slug: /v1.0.0
|
||||
---
|
||||
|
||||
# V1.0.0
|
||||
|
||||
## Version information
|
||||
|
||||
* Release date: November 14, 2025
|
||||
|
||||
* Version: V1.0.0
|
||||
|
||||
* RPM version: seekdb-1.0.0.0-100000262025111218
|
||||
|
||||
## About this release
|
||||
|
||||
OceanBase seekdb (referred to as seekdb) is an AI-native search database. It unifies relational, vector, text, JSON and GIS in a single engine, enabling hybrid search and in-database AI workflows.
|
||||
|
||||
### Product architecture
|
||||
|
||||

|
||||
|
||||
* Deployment modes: seekdb supports both embedded and client/server deployments. The embedded mode allows seamless integration into Python applications, making it especially convenient for individual developers.
|
||||
|
||||
* Multi-model data and indexing layer: seekdb accommodates a wide range of data types, including vectors, text, JSON, and GIS, and provides robust indexing capabilities. It features HNSW/IVF vector indexes and quantization algorithms, full-text indexes based on BM25 relevance that support various tokenizers and query modes, hybrid indexes for mixed search scenarios, JSON indexes for metadata searches, as well as primary, secondary, and GIS indexes.
|
||||
|
||||
* Multi-model compute layer for hybrid workloads: seekdb enables hybrid searches across vectors, full-text, and scalar conditions, enhancing the accuracy of query results in Retrieval-Augmented Generation (RAG) scenarios. It offers built-in AI function capabilities for real-time inference within the database. seekdb supports full ACID transactions and multi-version concurrency control (MVCC), along with a query optimizer designed for hybrid workloads, an adaptive execution engine, and flexible PL UDF functions to address diverse business needs.
|
||||
|
||||
* Unified application interface: seekdb is compatible with native MySQL drivers and provides a unified SQL-based query language for multi-model data. Additionally, it offers developer-friendly SDKs for vector databases and hybrid search. seekdb integrates with nearly 30 application development frameworks, including popular AI frameworks such as LangChain, LlamaIndex, and Dify, and features an MCP server for seamless connection to the AI ecosystem.
|
||||
|
||||
### Core advantages
|
||||
|
||||
* Build fast
|
||||
|
||||
From prototype to production in minutes: create AI apps using Python, run VectorDBBench on 1C2G.
|
||||
|
||||
* Hybrid search
|
||||
|
||||
Combine vector search, full-text search and relational query in a single statement.
|
||||
|
||||
* Multi-model
|
||||
|
||||
Support relational, vector, text, JSON and GIS in a single engine.
|
||||
|
||||
* AI inside
|
||||
|
||||
Run embedding, reranking, LLM inference and prompt management inside the database, supporting a complete document-in/data-out RAG workflow.
|
||||
|
||||
* SQL inside
|
||||
|
||||
Powered by the proven OceanBase engine, delivering real-time writes and queries with full ACID compliance, and seamless MySQL ecosystem compatibility.
|
||||
|
||||
### AI native
|
||||
|
||||
Full-stack AI capabilities for application development—from search to inference.
|
||||
|
||||
#### Hybrid search
|
||||
|
||||
* Support multi-path retrieval in a single SQL query, combining vector-based semantic search with keyword-based search for optimized recall.
|
||||
* Query reranking supports weighted scores, Reciprocal Rank Fusion (RRF), and LLM-based reranking for enhanced results
|
||||
* Relational filters are pushed down to storage for optimized performance, and multi-table joins allow relational data retrieval.
|
||||
|
||||
#### Vector & full-text search
|
||||
|
||||
* Supports dense vectors and sparse vectors, with multiple distance metrics including Manhattan, Euclidean, inner product, and cosine similarity.
|
||||
* Vector indexes support in-memory types such as HNSW, HNSW-SQ, HNSW-BQ, and disk-based types including IVF and IVF-PQ, optimizing storage costs.
|
||||
* Full-text search supports keyword, phrase, and Boolean queries, with BM25 ranking for relevance.
|
||||
|
||||
#### AI functions
|
||||
|
||||
* Manage built-in AI services via the `DBMS_AI_SERVICE` package in SQL, and register external LLM services.
|
||||
* Convert text to vector embeddings directly in SQL using the `AI_EMBED` function.
|
||||
* Generate text in SQL with `AI_COMPLETE`, supporting reusable prompt templates.
|
||||
* Rerank text using LLM-based models in SQL via `AI_RERANK`.
|
||||
|
||||
### Applicable scenarios
|
||||
|
||||
#### RAG & knowledge retrieval
|
||||
|
||||
Large language models are limited by their training data. RAG introduces timely and trusted external knowledge to improve answer quality and reduce hallucination. seekdb enhances search accuracy through vector search, full-text search, hybrid search, built-in AI functions, and efficient indexing, while multi-level access control safeguards data privacy across heterogeneous knowledge sources.
|
||||
|
||||
Applicable scenarios:
|
||||
* Enterprise QA
|
||||
* Customer support
|
||||
* Industry insights
|
||||
* Personal knowledge
|
||||
|
||||
#### AI-assisted programming
|
||||
|
||||
seekdb is well-suited for AI-powered programming tasks. It can build vector and full-text indexes for code repositories, making it easy to search for code or generate completions based on keywords or code semantics. seekdb also excels at organizing code data, supporting both structured storage (like syntax trees and dependency graphs) and unstructured storage (such as raw code text). Its dynamic metadata management allows developers to flexibly extend and efficiently query code attributes—like language type, function names, and parameter lists.
|
||||
|
||||
#### Semantic search engine
|
||||
|
||||
Traditional keyword search struggles to capture intent. Semantic search leverages embeddings and vector search to understand meaning and connect text, images, and other modalities. seekdb's hybrid search and multi-model querying deliver more precise, context-aware results across complex search scenarios.
|
||||
|
||||
Applicable scenarios:
|
||||
* Product search
|
||||
* Text-to-image
|
||||
* Image-to-product
|
||||
|
||||
#### Agentic AI applications
|
||||
|
||||
Agentic AI requires memory, planning, perception, and reasoning. seekdb provides a unified foundation for agents through metadata management, vector/text/mixed queries, multimodal data processing, RAG, built-in AI functions and inference, and robust privacy controls—enabling scalable, production-grade agent systems.
|
||||
|
||||
Applicable scenarios:
|
||||
* Personal assistants
|
||||
* Enterprise automation
|
||||
* Vertical agents
|
||||
* Agent platforms
|
||||
|
||||
#### AI-assisted coding & development
|
||||
|
||||
AI-powered coding combines natural-language understanding and code semantic analysis to enable generation, completion, debugging, testing, and refactoring. seekdb enhances code intelligence with semantic search, multi-model storage for code and documents, isolated multi-project management, and time-travel queries—supporting both local and cloud IDE environments.
|
||||
|
||||
Applicable scenarios:
|
||||
* IDE plugins
|
||||
* Design-to-web
|
||||
* Local IDEs
|
||||
* Web IDEs
|
||||
|
||||
#### Enterprise application intelligence
|
||||
|
||||
AI transforms enterprise systems from passive tools into proactive collaborators. seekdb provides a unified AI-ready storage layer, fully compatible with MySQL syntax and views, and accelerates mixed workloads with parallel execution and hybrid row-column storage. Legacy applications gain intelligent capabilities with minimal migration across office, workflow, and business analytics scenarios.
|
||||
|
||||
Applicable scenarios:
|
||||
* Document intelligence
|
||||
* Business insights
|
||||
* Finance systems
|
||||
|
||||
#### AI on-device & edge AI applications
|
||||
|
||||
Edge devices—from mobile to vehicle and industrial terminals—operate with constrained compute and storage. seekdb's lightweight architecture supports embedded and micro-server modes, delivering full SQL, JSON, and hybrid search under low resource usage. It integrates seamlessly with OceanBase cloud services to enable unified edge-to-cloud intelligent systems.
|
||||
|
||||
Applicable scenarios:
|
||||
* Personal assistants
|
||||
* In-vehicle systems
|
||||
* AI education
|
||||
* Companion robots
|
||||
* Healthcare devices
|
||||
@@ -0,0 +1,223 @@
|
||||
---
|
||||
|
||||
slug: /prepare-servers
|
||||
---
|
||||
|
||||
# Prepare servers
|
||||
|
||||
This section describes the number and specifications of servers required for deploying seekdb, as well as the software and hardware requirements for servers, including the operating system and BIOS settings.
|
||||
|
||||
## Server configuration requirements
|
||||
|
||||
Servers must meet the minimum configuration requirements shown in the following table.
|
||||
|
||||
| Product | Number of servers | Minimum configuration | Disk type |
|
||||
|---------|-----------|-------------|-------------|
|
||||
| seekdb | 1 | 1 CPU core, 2 GB available memory | SSD storage |
|
||||
|
||||
:::info
|
||||
<ul>
|
||||
<li>The log disk must be at least 1 times the memory size, and the data disk must meet the storage requirements for the target data volume.</li>
|
||||
<li>The resource requirements listed here refer to the resources reserved for seekdb, not the total resources of the server itself.</li>
|
||||
</ul>
|
||||
:::
|
||||
|
||||
## Hardware environment requirements
|
||||
|
||||
### Memory
|
||||
|
||||
Run the following command to check the memory:
|
||||
|
||||
```shell
|
||||
free -g
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
total used free shared buff/cache available
|
||||
Mem: 174 38 6 0 129 123
|
||||
Swap: 0 0 0
|
||||
```
|
||||
|
||||
Ensure that the available Mem value is sufficient to meet the configuration in the **Server configuration requirements** section above. If it is insufficient, you can try clearing the cache to free up some resources or replace the server.
|
||||
|
||||
Run the following command to clear the cache:
|
||||
|
||||
```shell
|
||||
sudo sysctl -w vm.drop_caches=3
|
||||
# or
|
||||
sudo echo 3 > /proc/sys/vm/drop_caches
|
||||
```
|
||||
|
||||
## Software environment requirements
|
||||
|
||||
### Operating system
|
||||
|
||||
#### seekdb operating system
|
||||
|
||||
seekdb can be installed on the Linux operating systems shown in the following table.
|
||||
|
||||
| Linux operating system | Version | Server architecture |
|
||||
|-------------------------|-----------|-------------------------------|
|
||||
| Rocky Linux | 9 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| Alibaba Cloud Linux | 2, 3 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| AnolisOS | 8.6 and later | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| KylinOS | V10 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| UOS | V20 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| NFSChina | 4.0 and later | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| Inspur kos | 5.8 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| CentOS / Red Hat Enterprise Linux | 7.x, 8.x | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| SUSE Enterprise Linux | 12SP3 and later | x86_64 (including Hygon) |
|
||||
| Debian | 8.3 and later | x86_64 (including Hygon) |
|
||||
| openEuler | 20.03 LTS SP1/SP2 and 22.10 LTS | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
| LinxOS | V6.0.99, V6.0.100 | x86_64 (including Hygon), ARM_64 (Kunpeng, Phytium) |
|
||||
|
||||
:::info
|
||||
|
||||
The operating system must be configured with network and software manager (yum or zypper repositories).
|
||||
:::
|
||||
|
||||
#### Check the operating system
|
||||
|
||||
##### Red Hat Enterprise Linux Server 7.X
|
||||
|
||||
Run the following command to check the operating system information:
|
||||
|
||||
```shell
|
||||
cat /etc/redhat-release
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
Red Hat Enterprise Linux Server release 7.2 (Maipo)
|
||||
```
|
||||
|
||||
##### CentOS 7.X
|
||||
|
||||
Run the following command to check the operating system information:
|
||||
|
||||
```shell
|
||||
cat /etc/redhat-release
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
CentOS Linux release 7.2.1511 (Core)
|
||||
```
|
||||
|
||||
##### Anolis OS 8.X
|
||||
|
||||
Run the following command to check the operating system information:
|
||||
|
||||
```shell
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
NAME="Anolis OS"
|
||||
VERSION="8.2"
|
||||
ID="anolis"
|
||||
ID_LIKE="rhel fedora centos"
|
||||
VERSION_ID="8.2"
|
||||
PLATFORM_ID="platform:an8"
|
||||
PRETTY_NAME="Anolis OS 8.2"
|
||||
ANSI_COLOR="0;31"
|
||||
HOME_URL="https://openanolis.cn/"
|
||||
```
|
||||
|
||||
##### Ubuntu
|
||||
|
||||
Run the following command to check the operating system information:
|
||||
|
||||
```shell
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
NAME="Ubuntu"
|
||||
VERSION="20.04.2 LTS (Focal Fossa)"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 20.04.2 LTS"
|
||||
VERSION_ID="20.04"
|
||||
HOME_URL="https://www.ubuntu.com/"
|
||||
SUPPORT_URL="https://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
|
||||
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
|
||||
VERSION_CODENAME=focal
|
||||
UBUNTU_CODENAME=focal
|
||||
```
|
||||
|
||||
##### Debian 9
|
||||
|
||||
Run the following command to check the operating system information:
|
||||
|
||||
```shell
|
||||
cat /etc/os-release
|
||||
```
|
||||
|
||||
The return result is as follows:
|
||||
|
||||
```shell
|
||||
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="9"
|
||||
VERSION="9 (stretch)"
|
||||
VERSION_CODENAME=stretch
|
||||
ID=debian
|
||||
HOME_URL="https://www.debian.org/"
|
||||
SUPPORT_URL="https://www.debian.org/support"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
||||
```
|
||||
|
||||
#### Check the kernel
|
||||
|
||||
Check the server kernel information to ensure that the operating system is 3.10.0 or later, and select the corresponding deployment package based on the kernel information.
|
||||
|
||||
Run the following command to check the kernel information:
|
||||
|
||||
```shell
|
||||
uname -a
|
||||
```
|
||||
|
||||
### seekdb server BIOS settings
|
||||
|
||||
#### BIOS options to disable
|
||||
|
||||
* Cstate
|
||||
|
||||
* Pstate
|
||||
|
||||
* EIST
|
||||
|
||||
* Power saving
|
||||
|
||||
#### BIOS options to configure
|
||||
|
||||
* Automatic Power on After Power Loss: Always on
|
||||
|
||||
* Intel Virtualization Technology: Enabled
|
||||
|
||||
* Hyper-threading: Enabled
|
||||
|
||||
* Hardware prefetcher: Enabled
|
||||
|
||||
* VT-d: Enabled
|
||||
|
||||
* SR-IOV: Enabled
|
||||
|
||||
* Turbo Mode: Enabled
|
||||
|
||||
* Energy performance: Set to maximum performance
|
||||
|
||||
:::info
|
||||
|
||||
The method for modifying BIOS settings varies by server. For specific operations, refer to the server operation manual.
|
||||
:::
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
|
||||
slug: /deploy-overview
|
||||
---
|
||||
|
||||
# Deployment overview
|
||||
|
||||
seekdb provides two deployment modes. You can choose the appropriate deployment mode based on your business scenario.
|
||||
|
||||
* **Embedded mode**: seekdb runs as a "library" inside your application. It can easily run on various "endpoints", making it suitable for mobile application development, desktop application development, and application development on IoT and edge devices. In this mode, you can connect and manage seekdb through Python scripts or SDKs.
|
||||
|
||||
* **Server mode**: Uses single-machine deployment, suitable for CI/CD and testing. It is simple, has low operational costs, and the server starts quickly. In this mode, you can connect and manage seekdb through MySQL, OBClient, or SDKs.
|
||||
|
||||
## Deployment methods
|
||||
|
||||
Different deployment modes provide various deployment methods that you can choose based on your needs.
|
||||
|
||||
* **Embedded mode**:
|
||||
|
||||
* Deploy seekdb using the pyseekdb SDK provided by seekdb.
|
||||
|
||||
For detailed deployment operations, see [Embedded deployment mode](600.python-seekdb.md).
|
||||
|
||||
* Deploy seekdb using Python.
|
||||
|
||||
For detailed deployment operations, see [Embedded deployment mode](600.python-seekdb.md).
|
||||
|
||||
* **Server mode**:
|
||||
|
||||
* Deploy seekdb using yum install.
|
||||
|
||||
For detailed deployment operations, see [Deploy seekdb using yum install](700.server-mode/100.deploy-by-systemd.md).
|
||||
|
||||
* Deploy seekdb in a container environment.
|
||||
|
||||
For detailed deployment operations, see [Deploy seekdb in a container environment](700.server-mode/200.deploy-by-docker.md).
|
||||
|
||||
* Deploy OceanBase Desktop.
|
||||
|
||||
OceanBase Desktop is a desktop application for managing and operating seekdb. It provides a graphical interface that enables users to easily perform database management, query execution, data import and export, and other operations.
|
||||
|
||||
For detailed deployment operations, see [Deploy OceanBase Desktop](700.server-mode/300.deploy-oceanbase-desktop.md).
|
||||
@@ -0,0 +1,16 @@
|
||||
---
|
||||
|
||||
slug: /configurations-overview
|
||||
---
|
||||
|
||||
# Pre-deployment configuration overview
|
||||
|
||||
To ensure that seekdb can be used effectively, you need to configure the operating system and installation environment as follows:
|
||||
|
||||
| Configuration item | Required | Description |
|
||||
| ------ | ------- | ---- |
|
||||
| [Create a user](300.create-regular-user.md) | <ul><li>For personal trial scenarios, you can use the root user.</li><li>For production environments, it is recommended to use a user with sudo privileges.</li></ul> | You can use a regular user with sudo privileges. |
|
||||
| [Plan disks](400.plan-disks.md) | <ul><li>For personal trial scenarios, no configuration is required.</li><li>For production environments, it is recommended to configure.</li></ul> | In production environments, it is recommended to use different disks for the log storage directory and data storage directory to avoid performance issues in high-pressure scenarios when both directories are planned on the same disk. |
|
||||
| [Configure limits.conf](500.configure-limits-conf.md) | <ul><li>For personal trial scenarios, no configuration is required.</li><li>For production environments, configuration is required.</li></ul> | Improves the stability and performance of the cluster during runtime. |
|
||||
| [Configure sysctl.conf](600.configure-sysctl-conf.md) | <ul><li>For personal trial scenarios, no configuration is required.</li><li>For production environments, configuration is required.</li></ul> | Improves Linux system performance, thereby improving seekdb performance. |
|
||||
| [Disable the firewall and SELinux](700.disable-firewall-and-selinux.md) | <ul><li>For personal trial scenarios, no configuration is required.</li><li>For production environments, configuration is required.</li></ul> | Prevents access to the database from being blocked. |
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
|
||||
slug: /create-regular-user
|
||||
---
|
||||
|
||||
# Create a user
|
||||
|
||||
For enterprise users, when deploying seekdb, it is recommended to use the admin user, or you can use other users. However, the user must have sudo privileges and be the owner of database-related directories. This topic describes how to create a regular user and set sudo privileges for the regular user.
|
||||
|
||||
1. Run the following commands to create the user group admin and create the user admin.
|
||||
|
||||
```shell
|
||||
[root@test001 ~]# useradd -U admin -d /home/admin -s /bin/bash
|
||||
[root@test001 ~]# chown -R admin:admin /home/admin
|
||||
```
|
||||
|
||||
2. Run the following command to set a password for the admin account.
|
||||
|
||||
```shell
|
||||
[root@test001 ~]# passwd admin
|
||||
```
|
||||
|
||||
3. Set sudo privileges for the admin account.
|
||||
|
||||
Run the following command to open the `/etc/sudoers` file:
|
||||
|
||||
```shell
|
||||
[root@test001 ~]# vim /etc/sudoers
|
||||
```
|
||||
|
||||
Add the following content at the end of the `/etc/sudoers` file:
|
||||
|
||||
```shell
|
||||
## Same thing without a password
|
||||
# %wheel ALL=(ALL) NOPASSWD: ALL
|
||||
admin ALL=(ALL) NOPASSWD: ALL
|
||||
```
|
||||
@@ -0,0 +1,269 @@
|
||||
---
|
||||
|
||||
slug: /plan-disks
|
||||
---
|
||||
|
||||
# Plan disks
|
||||
|
||||
seekdb servers depend on data disks, transaction log disks, and seekdb installation disks. If you are a personal user, you can put all data on a single disk and skip this step. If you are an enterprise user, it is recommended to mount data to three separate disks.
|
||||
|
||||
If your machine does not have three disks, or if you are using a RAID disk array, you need to partition the disk or the logical volumes of the disk array. It is recommended that you partition using the following scheme:
|
||||
|
||||
* Data disk
|
||||
|
||||
The data disk is used to store baseline data, and the path is specified by the configuration parameter `data_dir`. When you start seekdb for the first time, `${data_dir}/{sstable,slog}` will be created automatically. The size of the data disk is determined by the `datafile_disk_percentage`/`datafile_size` parameters. You can also dynamically expand disk files after deployment through the `datafile_next` and `datafile_maxsize` configuration items. For details, see [Configure dynamic expansion of disk data files](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001971412).
|
||||
|
||||
* Transaction log disk
|
||||
|
||||
The path of the transaction log disk is specified by the configuration parameter `redo-dir`. It is recommended that you set the size of the transaction log disk to 3 to 4 times or more of the seekdb memory. When you start seekdb for the first time, `${redo-dir}` will be created automatically. The transaction log disk contains multiple fixed-size files, and you can automatically create and clear transaction logs as needed. When transaction logs reach 80% of the total disk capacity, automatic clearing will be triggered. However, transaction logs can only be deleted when the memory data corresponding to the transaction logs has been merged into the baseline data.
|
||||
|
||||
With the same data volume, the size of transaction logs is approximately three times the size of memory data. Therefore, the upper limit of the space required for the transaction log disk is proportional to the total data volume after two merges. Empirical formula: Transaction log file size = 3~4 times the upper limit of incremental data memory.
|
||||
|
||||
* seekdb installation disk
|
||||
|
||||
The path of the seekdb installation disk is specified by the configuration parameter `base-dir`. The seekdb RPM package installation directory is located under `${base-dir}`. Baseline data files and transaction log files are linked to independent data disks and transaction log disks respectively through soft links. seekdb runtime logs are located under `${base-dir}/log`. Runtime logs continue to grow, and seekdb cannot automatically delete runtime logs, so you need to regularly delete runtime logs.
|
||||
|
||||
## Disk mounting
|
||||
|
||||
The disk mount point requirements for seekdb are shown in the following table.
|
||||
|
||||
* Personal users
|
||||
|
||||
For personal users, disk mounting is not required. It is recommended that the minimum available disk space be 5 GB when in use.
|
||||
|
||||
* Enterprise users
|
||||
|
||||
| Directory | Size | Purpose | File system format |
|
||||
|------------|----------------|----------------|-------------------------|
|
||||
| /home | 100 GB~300 GB | seekdb database installation disk | ext4 or xfs recommended |
|
||||
| /data/log1 | 2 times the memory size allocated to seekdb | seekdb process log disk | ext4 or xfs recommended |
|
||||
| /data/1 | Depends on the size of data to be stored | seekdb process data disk | ext4 or xfs recommended |
|
||||
|
||||
:::info
|
||||
<ul><li>It is recommended that the root directory be at least 50 GB. If using LVM, it is recommended to use striping parameters when creating. Example: <code>lvcreate -n data -L 3000G obvg --stripes=3 --stripesize=128</code></li>
|
||||
<li>In production environments, it is recommended to use different disks for the data disk, log disk, and installation disk to avoid performance issues.</li></ul>
|
||||
:::
|
||||
|
||||
## Disk mounting operations
|
||||
|
||||
Disk mounting must be performed under the root user, and there are two operation methods:
|
||||
|
||||
* Mount disks using LVM tools (recommended).
|
||||
* Mount disks using fdisk tools.
|
||||
|
||||
### Mount disks using LVM tools
|
||||
|
||||
1. Check disk information
|
||||
|
||||
Use the `fdisk -l` command to identify available disks and partitions, and confirm the target device (such as `/dev/sdb1`).
|
||||
|
||||
```shell
|
||||
fdisk -l
|
||||
```
|
||||
|
||||
2. Install LVM tools
|
||||
|
||||
If LVM is not pre-installed, run the following command to install LVM. If LVM is already installed, skip this step.
|
||||
|
||||
* Debian/Ubuntu systems
|
||||
|
||||
```shell
|
||||
apt-get install lvm2
|
||||
```
|
||||
|
||||
* CentOS/RHEL systems
|
||||
|
||||
```shell
|
||||
yum install lvm2
|
||||
```
|
||||
|
||||
3. Create a physical volume (PV).
|
||||
|
||||
1. Initialize the partition as a physical volume.
|
||||
|
||||
```shell
|
||||
pvcreate /dev/sdb1
|
||||
```
|
||||
|
||||
2. Verify the PV creation result
|
||||
|
||||
```shell
|
||||
pvs
|
||||
```
|
||||
|
||||
4. Create a volume group (VG).
|
||||
|
||||
1. Combine multiple physical volumes into one VG.
|
||||
|
||||
```shell
|
||||
vgcreate vg01 /dev/sdb1 /dev/sdc1
|
||||
```
|
||||
|
||||
2. View VG information
|
||||
|
||||
```shell
|
||||
vgs
|
||||
```
|
||||
|
||||
5. Create a logical volume (LV).
|
||||
|
||||
1. Create a 100 GB logical volume from the VG.
|
||||
|
||||
```shell
|
||||
lvcreate -L 100G -n lv01 vg01
|
||||
```
|
||||
|
||||
The size of the logical volume here can be set according to actual needs.
|
||||
|
||||
2. View LV information.
|
||||
|
||||
```shell
|
||||
lvs
|
||||
```
|
||||
|
||||
6. Format and mount.
|
||||
|
||||
1. Format as ext4 file system.
|
||||
|
||||
```shell
|
||||
mkfs.ext4 /dev/vg01/lv01
|
||||
```
|
||||
|
||||
2. Create a mount point.
|
||||
|
||||
```shell
|
||||
mkdir -p /data/1
|
||||
```
|
||||
|
||||
3. Temporarily mount.
|
||||
|
||||
```shell
|
||||
mount /dev/vg01/lv01 /data/1
|
||||
```
|
||||
|
||||
7. Set automatic mounting on boot.
|
||||
|
||||
Edit the `/etc/fstab` file and add the mount configuration:
|
||||
|
||||
```shell
|
||||
vim /etc/fstab
|
||||
```
|
||||
|
||||
Add the following content to the configuration file:
|
||||
|
||||
```shell
|
||||
/dev/vg01/lv01 /data/1 ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0
|
||||
```
|
||||
|
||||
### Mount disks using fdisk tools
|
||||
|
||||
1. Check disk information
|
||||
|
||||
Use the `fdisk -l` command to identify available disks and partitions, and confirm the target device (such as `/dev/sdb1`).
|
||||
|
||||
```shell
|
||||
fdisk -l
|
||||
```
|
||||
|
||||
2. Create a partition
|
||||
|
||||
Use the fdisk tool to create a new partition, for example `fdisk /dev/sdb1`, enter n to create a primary partition, and finally save (w).
|
||||
|
||||
```shell
|
||||
fdisk /dev/sdb1
|
||||
```
|
||||
|
||||
3. Format and mount.
|
||||
|
||||
1. Format as ext4 file system.
|
||||
|
||||
```shell
|
||||
mkfs.ext4 /dev/sdb1
|
||||
```
|
||||
|
||||
2. Create a mount point.
|
||||
|
||||
```shell
|
||||
mkdir -p /data/1
|
||||
```
|
||||
|
||||
3. Temporarily mount.
|
||||
|
||||
```shell
|
||||
mount /dev/sdb1 /data/1
|
||||
```
|
||||
|
||||
4. Set automatic mounting on boot.
|
||||
|
||||
Edit the `/etc/fstab` file and add the mount configuration:
|
||||
|
||||
```shell
|
||||
vim /etc/fstab
|
||||
```
|
||||
|
||||
Add the following content to the configuration file:
|
||||
|
||||
```shell
|
||||
/dev/sdb1 /data/1 ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0
|
||||
```
|
||||
|
||||
## Check disks
|
||||
|
||||
After disks are mounted, run the following command to check the disk mounting status:
|
||||
|
||||
```shell
|
||||
df -h
|
||||
```
|
||||
|
||||
The following result is returned:
|
||||
|
||||
```shell
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
devtmpfs 31G 0 31G 0% /dev
|
||||
tmpfs 31G 0 31G 0% /dev/shm
|
||||
tmpfs 31G 516K 31G 1% /run
|
||||
tmpfs 31G 0 31G 0% /sys/fs/cgroup
|
||||
/dev/vda1 493G 171G 302G 37% /
|
||||
tmpfs 6.2G 0 6.2G 0% /run/user/0
|
||||
/dev/sdb1 984G 77M 934G 1% /data/1
|
||||
/dev/vdc1 196G 61M 186G 1% /data/log1
|
||||
/dev/vdb1 492G 73M 467G 1% /home/admin/seekdb
|
||||
```
|
||||
|
||||
Result description
|
||||
|
||||
* `/data/1` is the data disk with a size of 1 TB.
|
||||
|
||||
* `/data/log1` stores logs.
|
||||
|
||||
* `/home/admin/seekdb` stores seekdb binary files and runtime logs.
|
||||
|
||||
Ensure that the disks corresponding to `data_dir`, `redo_dir`, and `home_path` in the configuration file have been mounted. The directories corresponding to `data_dir` and `redo_dir` are empty, and the disk usage of the directory corresponding to `data_dir` must be less than 4%.
|
||||
|
||||
## Set directory permissions
|
||||
|
||||
After disk mounting is complete, you need to check the permissions of the directories corresponding to the mounted disks.
|
||||
|
||||
Run the following command to check the permissions of cluster-related file directories.
|
||||
|
||||
Here, the `data` directory is used as an example:
|
||||
|
||||
```shell
|
||||
[root@test001 data]# ls -al
|
||||
```
|
||||
|
||||
The following result is returned:
|
||||
|
||||
```shell
|
||||
drwxr-xr-x 2 admin admin 4096 Feb 9 18:43 .
|
||||
drwxr-xr-x 2 admin admin 4096 Feb 9 18:43 log1
|
||||
```
|
||||
|
||||
If you find that the `admin` user does not have permissions for related files after checking directory permissions, run the following command to change the file owner:
|
||||
|
||||
```shell
|
||||
[root@test001 ~]# chown -R admin:admin /data/log1
|
||||
[root@test001 ~]# chown -R admin:admin /data
|
||||
```
|
||||
|
||||
Here, `/data/log1` and `/data` are example mount directories. You need to replace them with your actual mount directories.
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
|
||||
slug: /configure-limits-conf
|
||||
---
|
||||
|
||||
# Configure limits.conf
|
||||
|
||||
This topic describes how to limit the number of processes by configuring `limits.conf`.
|
||||
|
||||
If you are a personal user, you can skip this step. If you are an enterprise user, it is recommended to configure `limits.conf`.
|
||||
|
||||
You can modify resource limits using the following method:
|
||||
|
||||
Modify at the global level through the configuration file `/etc/security/limits.conf`.
|
||||
|
||||
The limits involved in seekdb processes include the maximum stack space size, maximum number of open files, and core file size.
|
||||
|
||||
## Modify configuration
|
||||
|
||||
Set the maximum stack space size at the session level to `unlimited`, the maximum number of open files to `655350`, and the core file size to `unlimited`.
|
||||
|
||||
Run the following command to open the `/etc/security/limits.conf` configuration file:
|
||||
|
||||
```shell
|
||||
sudo vim /etc/security/limits.conf
|
||||
```
|
||||
|
||||
Add the following content to the `/etc/security/limits.conf` configuration file:
|
||||
|
||||
```shell
|
||||
* soft nofile 655350
|
||||
* hard nofile 655350
|
||||
* soft stack unlimited
|
||||
* hard stack unlimited
|
||||
* soft nproc 655360
|
||||
* hard nproc 655360
|
||||
* soft core unlimited
|
||||
* hard core unlimited
|
||||
```
|
||||
|
||||
:::info
|
||||
|
||||
<ul><li>You need to check whether the nproc configuration exists in the <code>/etc/security/limits.d/20-nproc.conf</code> file. If it exists, you need to synchronously modify the nproc value in that file.</li>
|
||||
<li>The limits.conf configuration only takes effect for newly logged-in sessions (such as newly opened terminals, SSH connections, or newly started processes). Existing sessions or processes will not automatically inherit the new configuration and need to log in again or restart related services.</li></ul>
|
||||
:::
|
||||
|
||||
## View configuration
|
||||
|
||||
Exit the current session and log in again. Run the following command to check whether the configuration has taken effect.
|
||||
|
||||
```shell
|
||||
ulimit -a
|
||||
```
|
||||
|
||||
The output is as follows.
|
||||
|
||||
```shell
|
||||
core file size (blocks, -c) unlimited
|
||||
data seg size (kbytes, -d) unlimited
|
||||
scheduling priority (-e) 0
|
||||
file size (blocks, -f) unlimited
|
||||
pending signals (-i) 252876
|
||||
max locked memory (kbytes, -l) 64
|
||||
max memory size (kbytes, -m) unlimited
|
||||
open files (-n) 655350
|
||||
pipe size (512 bytes, -p) 8
|
||||
POSIX message queues (bytes, -q) 819200
|
||||
real-time priority (-r) 0
|
||||
stack size (kbytes, -s) unlimited
|
||||
cpu time (seconds, -t) unlimited
|
||||
max user processes (-u) 655360
|
||||
virtual memory (kbytes, -v) unlimited
|
||||
file locks (-x) unlimited
|
||||
```
|
||||
|
||||
From the results, you can see:
|
||||
|
||||
* Core file size indicates the maximum threshold of core files (in blocks), corresponding to the core parameter in the `limits.conf` configuration file. Check whether the value is unlimited.
|
||||
|
||||
* Open files indicates the maximum number of open file descriptors, corresponding to the nofile parameter in the `limits.conf` configuration file. Check whether the value is 655350.
|
||||
|
||||
* Stack size indicates the stack size (in kilobytes), corresponding to the stack parameter in the `limits.conf` configuration file. Check whether the value is unlimited.
|
||||
|
||||
* Max user processes indicates the maximum number of user processes, corresponding to the nproc parameter in the `limits.conf` configuration file. Check whether the value is 655360.
|
||||
@@ -0,0 +1,94 @@
|
||||
---
|
||||
|
||||
slug: /configure-sysctl-conf
|
||||
---
|
||||
|
||||
# Configure sysctl.conf
|
||||
|
||||
This topic describes how to improve Linux system performance by modifying the `sysctl.conf` configuration on the machine.
|
||||
|
||||
If you are a personal user, you can skip this step. If you are an enterprise user, it is recommended to configure `sysctl.conf`.
|
||||
|
||||
## Modify configuration
|
||||
|
||||
Run the following command to open the `/etc/sysctl.conf` configuration file:
|
||||
|
||||
```shell
|
||||
sudo vim /etc/sysctl.conf
|
||||
```
|
||||
|
||||
Add the following content to the `/etc/sysctl.conf` configuration file:
|
||||
|
||||
```shell
|
||||
# for seekdb
|
||||
## Modify kernel asynchronous I/O limits
|
||||
fs.aio-max-nr = 1048576
|
||||
|
||||
## Network optimization
|
||||
net.core.somaxconn = 2048
|
||||
net.core.netdev_max_backlog = 10000
|
||||
net.core.rmem_default = 16777216
|
||||
net.core.wmem_default = 16777216
|
||||
net.core.rmem_max = 16777216
|
||||
net.core.wmem_max = 16777216
|
||||
|
||||
net.ipv4.ip_forward = 0
|
||||
net.ipv4.conf.default.rp_filter = 1
|
||||
net.ipv4.conf.default.accept_source_route = 0
|
||||
net.ipv4.tcp_syncookies = 1
|
||||
net.ipv4.tcp_rmem = 4096 87380 16777216
|
||||
net.ipv4.tcp_wmem = 4096 65536 16777216
|
||||
net.ipv4.tcp_max_syn_backlog = 16384
|
||||
net.ipv4.tcp_fin_timeout = 15
|
||||
net.ipv4.tcp_slow_start_after_idle=0
|
||||
|
||||
vm.swappiness = 0
|
||||
vm.min_free_kbytes = 2097152
|
||||
vm.overcommit_memory = 0
|
||||
|
||||
fs.file-max = 6573688
|
||||
fs.pipe-user-pages-soft = 0
|
||||
|
||||
# Modify the number of virtual memory areas a process can own
|
||||
vm.max_map_count = 655360
|
||||
|
||||
# Set the filename format and directory for core files
|
||||
kernel.core_pattern = /data/core-%e-%p-%t
|
||||
```
|
||||
|
||||
Here, `/data` in `kernel.core_pattern` is the `data` directory of seekdb.
|
||||
|
||||
:::tip
|
||||
<ul><li>If the <code>max_map_count</code> configuration is unreasonable, it may cause serious memory leaks.</li>
|
||||
<li>You need to reserve at least the same amount of disk space as the memory_limit configured for seekdb for the core file directory, and avoid affecting the available space of the data directory and log directory.</li></ul>
|
||||
:::
|
||||
|
||||
## Load configuration
|
||||
|
||||
After modifying the configuration, run the following command to load the configuration and make it take effect.
|
||||
|
||||
```shell
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
## ARM environment deployment recommendations
|
||||
|
||||
* Enable NUMA support in BIOS/UEFI and kernel boot parameters.
|
||||
* In ARM and Hygon architecture environments, it is recommended to modify the configuration file `/etc/sysctl.conf` and set the parameters `kernel.numa_balancing`, `vm.zone_reclaim_mode`, and `vm.swappiness` to `0`, as follows:
|
||||
|
||||
```shell
|
||||
[root@xxx /]
|
||||
$vi /etc/sysctl.conf
|
||||
## Disable NUMA balancing to avoid performance jitter during balancing
|
||||
kernel.numa_balancing = 0
|
||||
## Disable memory reclaim and reallocation functions
|
||||
vm.zone_reclaim_mode = 0
|
||||
vm.swappiness = 0
|
||||
```
|
||||
|
||||
Apply the values in the sysctl.conf configuration file:
|
||||
|
||||
```shell
|
||||
[root@xxx /]
|
||||
$sysctl -p
|
||||
```
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
|
||||
slug: /disable-firewall-and-selinux
|
||||
---
|
||||
|
||||
# Disable the firewall and SELinux
|
||||
|
||||
This topic describes how to disable the firewall and SELinux. If you are a personal user, you can skip this step. If you are an enterprise user, it is recommended that you refer to this topic to disable the firewall and SELinux.
|
||||
|
||||
## Disable the firewall
|
||||
|
||||
Run the following commands in sequence to disable the firewall:
|
||||
|
||||
```shell
|
||||
systemctl disable firewalld
|
||||
systemctl stop firewalld
|
||||
systemctl status firewalld
|
||||
```
|
||||
|
||||
## Disable SELinux
|
||||
|
||||
Run the following command to open the `/etc/selinux/config` configuration file:
|
||||
|
||||
```shell
|
||||
vi /etc/selinux/config
|
||||
```
|
||||
|
||||
Modify the corresponding configuration item in the `/etc/selinux/config` configuration file to the following:
|
||||
|
||||
```shell
|
||||
SELINUX=disabled
|
||||
```
|
||||
|
||||
Run the following command or restart the server to make the changes take effect:
|
||||
|
||||
```shell
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
Run the following command to check whether the changes have taken effect:
|
||||
|
||||
```shell
|
||||
sestatus
|
||||
```
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
|
||||
slug: /deploy-embedded-seekdb
|
||||
---
|
||||
|
||||
# Embedded mode
|
||||
|
||||
seekdb provides an embedded deployment method that runs as a "library" inside your application. It can easily run on various "endpoints", making it suitable for mobile application development, desktop application development, and application development on IoT and edge devices.
|
||||
|
||||
You can deploy embedded seekdb through pyseekdb (the Python SDK provided by seekdb) or Python.
|
||||
|
||||
## Environment requirements
|
||||
|
||||
* **Supported operating systems**: Linux (glibc >= 2.28)
|
||||
|
||||
* **Supported Python versions**:
|
||||
|
||||
* **Use seekdb via pyseekdb**: Python 3.11 to 3.13
|
||||
|
||||
* **Use seekdb via Python**: CPython 3.8 to 3.14
|
||||
|
||||
* **Supported system architectures**: x86_64, aarch64
|
||||
|
||||
You can run the following command to check whether your environment meets the requirements.
|
||||
|
||||
```python
|
||||
python3 -c 'import sys;import platform; print(f"Python: {platform.python_implementation()} {platform.python_version()}, System: {platform.system()} {platform.machine()}, {platform.libc_ver()[0]}: {platform.libc_ver()[1]}");'
|
||||
```
|
||||
|
||||
The following result is returned:
|
||||
|
||||
```python
|
||||
Python: CPython 3.8.17, System: Linux x86_64, glibc: 2.32
|
||||
```
|
||||
|
||||
## (Recommended) Deploy seekdb using pyseekdb
|
||||
|
||||
Use pip to install, which automatically loads embedded seekdb. The specific commands are as follows.
|
||||
|
||||
```shell
|
||||
pip install pyseekdb
|
||||
# Or specify an installation source for faster installation
|
||||
pip install pyseekdb -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
## Deploy seekdb using Python
|
||||
|
||||
Use pip to install, which automatically detects the default Python version and platform.
|
||||
|
||||
```shell
|
||||
pip install pylibseekdb
|
||||
# Or specify an installation source for faster installation
|
||||
pip install pylibseekdb -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
```
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are prompted that the pip version is too low when deploying seekdb, upgrade pip first before installing.
|
||||
|
||||
```bash
|
||||
pip install --upgrade pip
|
||||
```
|
||||
@@ -0,0 +1,202 @@
|
||||
---
|
||||
|
||||
slug: /deploy-by-systemd
|
||||
---
|
||||
|
||||
# Deploy seekdb by using yum install
|
||||
|
||||
This topic describes how to deploy seekdb by using yum install.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before performing the operations in this topic, you need to confirm the following information:
|
||||
|
||||
* Your environment is an RPM platform system. The currently verified supported systems are as follows:
|
||||
|
||||
* Anolis OS 8.X (Linux kernel 4.19 or later)
|
||||
|
||||
* Anolis OS 23.X (Linux kernel 6.6 or later)
|
||||
|
||||
* CentOS Linux 7.X, 9.X (Linux kernel 4.19 or later)
|
||||
|
||||
* Debian 11, 12, and 13 (Linux kernel 4.19 or later)
|
||||
|
||||
* openEuler 22.03 and 24.03 (Linux kernel 5.10.0 or later)
|
||||
|
||||
* Ubuntu 20.04, 22.04, and 24.04 (Linux kernel 4.19 or later)
|
||||
|
||||
* The minimum CPU requirement in the current environment is 1 core.
|
||||
|
||||
* The minimum available memory in the current environment is 2 GB.
|
||||
|
||||
* The jq command-line tool is installed in your environment, and systemd is correctly configured as the system and service manager.
|
||||
|
||||
* Database connection tools (MySQL client or OBClient) are installed in your environment.
|
||||
|
||||
* The user you are using has permission to execute sudo commands.
|
||||
|
||||
## Deploy seekdb
|
||||
|
||||
### Step 1: Install seekdb
|
||||
|
||||
Depending on whether the environment can connect to an external network, there are two installation methods: online installation and offline installation.
|
||||
|
||||
#### Online installation
|
||||
|
||||
1. Add the seekdb repository
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
|
||||
```
|
||||
|
||||
2. Install seekdb
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo yum install seekdb obclient
|
||||
```
|
||||
|
||||
#### Offline installation
|
||||
|
||||
1. You can download the required version of seekdb from the [OceanBase Software Download Center](https://en.oceanbase.com/softwarecenter). After downloading, copy the installation package to your machine. It is recommended that you use the latest version of the installation package.
|
||||
|
||||
2. In the directory where the installation package is located, run the rpm command to install seekdb.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo rpm -ivh seekdb-*.rpm
|
||||
```
|
||||
|
||||
### Step 2: Start seekdb
|
||||
|
||||
After installing seekdb, you can start seekdb by following these steps.
|
||||
|
||||
1. (Optional) Modify the configuration file.
|
||||
|
||||
You can modify the configuration file in this step. If not modified, the default configuration in the configuration file will be used for deployment.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo vim /etc/oceanbase/seekdb.cnf
|
||||
```
|
||||
|
||||
The configuration items in this file are as follows:
|
||||
|
||||
```shell
|
||||
port=2881
|
||||
data-dir=/var/lib/oceanbase/store
|
||||
redo-dir=/var/lib/oceanbase/store/redo
|
||||
datafile_size=2G
|
||||
datafile_next=2G
|
||||
datafile_maxsize=50G
|
||||
cpu_count=4
|
||||
memory_limit=2G
|
||||
log_disk_size=2G
|
||||
```
|
||||
|
||||
The configuration items in the configuration file are described in the following table:
|
||||
|
||||
| Configuration item | Required | Default value | Description |
|
||||
|----------|-----------|----------|----------|
|
||||
| port | Optional | 2881 | The SQL service protocol port number of seekdb. |
|
||||
| redo_dir | Optional | /var/lib/oceanbase/store/redo | Directory for clog, ilog, and slog. It is recommended to configure it as an independent disk.<main id="notice" type='explain'><h4>Note</h4><p>The available disk space of the data disk (default: <code>/var/lib/oceanbase/</code>) should be greater than 15 GB.</p></main> |
|
||||
| data_dir | Optional | /var/lib/oceanbase/store | Directory for storing SSTable and other data. It is recommended to configure it as an independent disk.<main id="notice" type='explain'><h4>Note</h4><p>The available disk space of the data disk (default: <code>/var/lib/oceanbase/</code>) should be greater than 15 GB.</p></main> |
|
||||
| datafile_size | Optional | 2G | Specifies the size of data files (block_file). If not configured, the `datafile_disk_percentage` configuration item is used. For details, see [datafile_size](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001971955) and [datafile_disk_percentage](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001971961). |
|
||||
| datafile_next | Optional | 2G | Specifies the growth step size of data files. |
|
||||
| datafile_maxsize | Optional | 50G | Specifies the maximum size of data files. |
|
||||
| cpu_count | Optional | 4 | Total number of CPUs that seekdb can use. If set to 0, it will be automatically detected. |
|
||||
| memory_limit | Optional | 2G | Maximum memory that seekdb can obtain from the environment. |
|
||||
| log_disk_size | Optional | 2G | Used to set the size of the Redo log disk. If not configured, the `log_disk_percentage` configuration item is used. For details, see [log_disk_size](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001971764) and [log_disk_percentage](https://en.oceanbase.com/docs/common-oceanbase-database-10000000001971945). |
|
||||
|
||||
2. Start seekdb.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo systemctl start seekdb
|
||||
```
|
||||
|
||||
3. Check the startup status of seekdb.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo systemctl status seekdb
|
||||
```
|
||||
|
||||
When the status displays `Service is ready`, it indicates that seekdb has started successfully.
|
||||
|
||||
### Step 3: Connect to seekdb
|
||||
|
||||
Here, connecting to seekdb through OBClient is used as an example. The command is as follows:
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ obclient -h<IP> -uroot -P<Port> -p<Passwd> -A oceanbase
|
||||
```
|
||||
|
||||
Parameter description:
|
||||
|
||||
* -h: Provides the seekdb connection IP. The default IP for seekdb started with systemd is `127.0.0.1`.
|
||||
|
||||
* -u: Provides the seekdb connection account in the format: `username`. The default username for seekdb instances is `root`.
|
||||
|
||||
* -P: Provides the seekdb connection port, which is the value of `port` in `/etc/oceanbase/seekdb.cnf`.
|
||||
|
||||
* -p: Provides the seekdb connection password. The default is empty.
|
||||
|
||||
* -A: Indicates that OBClient does not automatically obtain statistics when connecting to the database.
|
||||
|
||||
* oceanbase: The name of the database to access, which can be changed to a business database name.
|
||||
|
||||
## Manage seekdb
|
||||
|
||||
Currently, only start, stop, and status operations are supported for seekdb through systemd.
|
||||
|
||||
### Check seekdb status
|
||||
|
||||
You can run the following command to check the seekdb status.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo systemctl status seekdb
|
||||
```
|
||||
|
||||
The seekdb status has the following scenarios:
|
||||
|
||||
* `Active` displays `active (running)`, and `Status` displays `seekdb is ready and running`, indicating that seekdb has started successfully.
|
||||
|
||||
* `Active` displays `inactive (dead)`, indicating that the service has stopped, that is, seekdb has stopped.
|
||||
|
||||
* `Active` displays `failed`, indicating that an error occurred in the service. You need to check the logs for troubleshooting.
|
||||
|
||||
### Clear seekdb
|
||||
|
||||
You can clear seekdb started with systemd by following these steps.
|
||||
|
||||
1. Stop seekdb.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo systemctl stop seekdb
|
||||
```
|
||||
|
||||
2. Uninstall seekdb.
|
||||
|
||||
1. Delete the seekdb database package
|
||||
|
||||
For online installation, you can run the following command:
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo yum erase seekdb
|
||||
```
|
||||
|
||||
`package` needs to be replaced with the name of the package to be deleted. You can check the package name using the `yum list | grep seekdb` command.
|
||||
|
||||
For offline installation, you can run the following command:
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo rpm -e seekdb
|
||||
```
|
||||
|
||||
`package` needs to be replaced with the name of the package to be deleted. You can check the package name using the `rpm -qa | grep seekdb` command.
|
||||
|
||||
2. Delete seekdb data.
|
||||
|
||||
After executing the first step, the return result will display `To clean OceanBase : bash /var/lib/oceanbase/oceanbase_clean.sh`. You can use this command to completely delete seekdb.
|
||||
|
||||
After executing this step to delete seekdb data, your deployed seekdb will be completely uninstalled.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ sudo bash /var/lib/oceanbase/oceanbase_clean.sh
|
||||
```
|
||||
@@ -0,0 +1,145 @@
|
||||
---
|
||||
|
||||
slug: /deploy-by-docker
|
||||
---
|
||||
|
||||
# Deploy seekdb in a container environment
|
||||
|
||||
This topic describes how to deploy seekdb through Docker containers.
|
||||
|
||||
## Overview
|
||||
|
||||
The `seekdb` Docker image is available from [dockerhub](https://hub.docker.com/r/oceanbase/seekdb), [quay.io](https://quay.io/repository/oceanbase/seekdb), and [ghcr.io](https://ghcr.io/oceanbase/seekdb), and is designed to help users quickly set up a seekdb environment for testing.
|
||||
|
||||
:::tip
|
||||
<ul><li>When running this image on macOS with Intel chips, there is a known issue if the Docker version is higher than 4.9.0. You can download the required version of <a href="https://desktop.docker.com/mac/main/amd64/81317/Docker.dmg?_gl=17jelfd_gcl_auOTk5Nzk0MDUwLjE3MTE4ODMyNzM._gaNDQyMjE1MDE5LjE3MTE4ODMyNzQ._ga_XJWPQMJYHQ*MTcxOTIxOTEwMy4xMS4xLjE3MTkyMjEwMTAuNjAuMC4w">Docker</a> here.</li>
|
||||
<li>This image is for testing only; do not use it in production environments.</li></ul>
|
||||
:::
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before deploying `seekdb`, ensure that the following requirements are met:
|
||||
|
||||
* Docker is installed and the Docker service is started. For details, see [Docker documentation](https://docs.docker.com/get-docker/).
|
||||
|
||||
* Your machine has at least 1 physical core and 2 GB of memory.
|
||||
|
||||
## Start a seekdb instance
|
||||
|
||||
To start a seekdb instance, use the following command:
|
||||
|
||||
```shell
|
||||
docker run -d -p 2881:2881 oceanbase/seekdb
|
||||
```
|
||||
|
||||
:::info
|
||||
<ul>
|
||||
<li>
|
||||
If pulling the Docker image fails, you can also pull the image from the quay.io or ghcr.io repository by replacing <code>oceanbase/seekdb</code> in the above command with <code>quay.io/oceanbase/seekdb</code> or <code>ghcr.io/oceanbase/seekdb</code>, for example, run <code>sudo docker run -d -p 2881:2881 quay.io/oceanbase/seekdb</code> to pull the image from quay.io.
|
||||
</li>
|
||||
<li>
|
||||
The above command pulls the latest version by default. You can select a version from <a href="https://hub.docker.com/r/oceanbase/seekdb">dockerhub</a>, <a href="https://quay.io/repository/oceanbase/seekdb">quay.io</a>, or <a href="https://ghcr.io/oceanbase/seekdb">ghcr.io</a> according to your actual needs.
|
||||
</li>
|
||||
</ul>
|
||||
:::
|
||||
|
||||
If you want to execute initialization SQL scripts after startup, you need to mount a directory containing initialization scripts and then specify the mounted directory in the container through the environment variable `INIT_SCRIPTS_PATH`. Example command:
|
||||
|
||||
```shell
|
||||
docker run -d -p 2881:2881 -v {init_sql_folder_path}:/root/boot/init.d -e INIT_SCRIPTS_PATH=/root/boot/init.d oceanbase/seekdb
|
||||
```
|
||||
In the command, `{init_sql_folder_path}` is the path to the initialization SQL scripts on the host machine.
|
||||
|
||||
:::tip
|
||||
Do not change the root user password in SQL scripts. If you want to change the root user password, use the environment variable <code>ROOT_PASSWORD</code>, for example: <code>docker run -d -p 2881:2881 -e ROOT_PASSWORD="******" oceanbase/seekdb</code>.
|
||||
:::
|
||||
|
||||
The supported environment variables are as follows:
|
||||
|
||||
| Variable name | Description | Default value |
|
||||
|-----------|--------------------|----------|
|
||||
| ROOT_PASSWORD | Password for the root user. | Empty by default |
|
||||
| CPU_COUNT | Value of cpu_count.| 4 |
|
||||
| MEMORY_LIMIT | Value of memory_limit.| 2G |
|
||||
| LOG_DISK_SIZE | Value of log_disk_size.| 2G |
|
||||
| DATAFILE_SIZE | Value of datafile_size.| 2G |
|
||||
| DATAFILE_NEXT | Value of datafile_next.| 2G |
|
||||
| DATAFILE_MAXSIZE | Value of datafile_maxsize.| 50G |
|
||||
| INIT_SCRIPTS_PATH | Path to initialization scripts in the container.| \ |
|
||||
|
||||
|
||||
If you want to modify more seekdb parameters, you can deploy seekdb using a configuration file.
|
||||
|
||||
You can mount the configuration file to `/etc/oceanbase/seekdb.cnf` in the container.
|
||||
|
||||
1. Create a configuration file on the host server. The default configuration file is as follows:
|
||||
|
||||
```shell
|
||||
datafile_size=2G
|
||||
datafile_next=2G
|
||||
datafile_maxsize=50G
|
||||
cpu_count=4
|
||||
memory_limit=8G
|
||||
log_disk_size=2G
|
||||
# config the parameter in the following format
|
||||
# key=value
|
||||
```
|
||||
|
||||
2. Start seekdb.
|
||||
|
||||
```shell
|
||||
docker run -d -p 2881:2881 -v {config_file}:/etc/oceanbase/seekdb.cnf oceanbase/seekdb
|
||||
```
|
||||
|
||||
In the command, `{config_file}` is the path to the configuration file on the host machine.
|
||||
|
||||
:::tip
|
||||
If you decide to use a configuration file, do not specify resource-related environment variables.
|
||||
:::
|
||||
|
||||
|
||||
## Data persistence
|
||||
|
||||
seekdb is deployed in the `/var/lib/oceanbase` directory. If you want to persist data to the host server, mount an empty directory on the host server to this path.
|
||||
|
||||
```shell
|
||||
mkdir -p seekdb
|
||||
docker run -d -p 2881:2881 -v $PWD/seekdb:/var/lib/oceanbase --name seekdb oceanbase/seekdb
|
||||
```
|
||||
|
||||
## Connect to a seekdb instance
|
||||
|
||||
You can use the OBClient or MySQL client on the host to connect to the seekdb instance.
|
||||
|
||||
```shell
|
||||
[admin@test001 ~]$ mysql -uroot -h127.0.0.1 -P2881 -p
|
||||
```
|
||||
|
||||
:::info
|
||||
If the password is not configured through environment variables when starting the seekdb instance, users created in the instance use empty passwords by default.
|
||||
:::
|
||||
|
||||
After a successful connection, the terminal displays the following content:
|
||||
|
||||
```shell
|
||||
Welcome to the MariaDB monitor. Commands end with ; or \g.
|
||||
Your MySQL connection id is 3221628904
|
||||
Server version: 5.7.25 OceanBase 4.3.5.3 seekdb (r1.0.0.0) (Built 102025110516-83ac0ad994286047a3e713e82e9541383f6df531 Nov 5 2025)
|
||||
|
||||
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
|
||||
|
||||
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
||||
|
||||
MySQL [(none)]>
|
||||
```
|
||||
|
||||
## Access the obshell dashboard
|
||||
|
||||
The container also starts obshell, which provides a user-friendly web interface. If you want to access the obshell dashboard, you can also map the obshell dashboard port.
|
||||
|
||||
```shell
|
||||
# 2886 is the port for the obshell dashboard
|
||||
docker run -d -p 2881:2881 -p 2886:2886 oceanbase/seekdb
|
||||
```
|
||||
|
||||
You can access `http://${server_ip}:2886` through a browser. The login password is the same as the root user password. If `ROOT_PASSWORD` is not set, leave the password field empty.
|
||||
@@ -0,0 +1,249 @@
|
||||
---
|
||||
|
||||
slug: /deploy-oceanbase-desktop
|
||||
---
|
||||
|
||||
# Deploy OceanBase Desktop
|
||||
|
||||
This topic describes how to deploy OceanBase Desktop on Windows or macOS.
|
||||
|
||||
## Overview
|
||||
|
||||
OceanBase Desktop is a desktop application for managing and operating seekdb. It provides a graphical interface that enables users to easily perform database management, query execution, data import and export, and other operations.
|
||||
|
||||
OceanBase Desktop has the following features:
|
||||
|
||||
* **Graphical interface:** An intuitive and easy-to-use graphical interface that simplifies database management tasks.
|
||||
|
||||
* **Database management:** Supports creating and managing database instances.
|
||||
|
||||
* **Query execution:** Provides an SQL query command line.
|
||||
|
||||
* **Monitoring and logs:** Real-time monitoring of database status.
|
||||
|
||||
## Check configuration
|
||||
### Windows
|
||||
|
||||
Before installing OceanBase Desktop on Windows, ensure that your machine meets the following requirements:
|
||||
|
||||
* The operating system is Windows (x86-64 chip). WSL 2 requires Windows 10 version 1903 or later (build 18362 or later), or Windows 11.
|
||||
|
||||
* At least 1 vCPU, 2 GB memory, and 5 GB disk space are available.
|
||||
|
||||
You can check whether your machine meets the requirements as follows:
|
||||
|
||||
* Check the Windows version
|
||||
|
||||
Press [Win] + [Q] on your keyboard, search for **Settings**, and click **Settings**. On the **Settings** page, click **System**, scroll down to find **About**, and you can view the Windows operating system build number.
|
||||
|
||||
<!---->
|
||||
|
||||
* Check memory and CPU
|
||||
|
||||
Press [Win] + [Q] on your keyboard, search for **Task Manager**, and click to open it. Go to the **Performance** interface. Switch to the **CPU** tab to view the number of CPU cores. Switch to the **Memory** tab to view memory usage.
|
||||
|
||||
<!---->
|
||||
|
||||
* Check disk
|
||||
|
||||
Press [Win] + [Q] on your keyboard, search for **File Explorer**, and click to open it. In **File Explorer**, click **This PC** on the left to view the disk information displayed under **Devices and drives**.
|
||||
|
||||
### macOS
|
||||
|
||||
Before installing OceanBase Desktop on macOS, ensure that your machine meets the following requirements:
|
||||
|
||||
* The operating system is macOS (Apple Silicon chip and Intel chip).
|
||||
|
||||
* At least 1 vCPU, 2 GB memory, and 5 GB disk space are available.
|
||||
|
||||
You can check whether your machine meets the requirements as follows:
|
||||
|
||||
* Check CPU and memory
|
||||
|
||||
Open Finder, click **Applications**, select the **Utilities** folder in the **Applications** module, and then double-click to open **Activity Monitor**. You can view CPU usage in the **CPU** tab of Activity Monitor. Switch to the **Memory** tab to view memory usage.
|
||||
|
||||
<!---->
|
||||
|
||||
* Check disk
|
||||
|
||||
Click the Apple icon in the upper-left corner of your computer, then click **About This Mac**. In the window that appears, click **More Info** to view the disk information displayed under **Storage**.
|
||||
|
||||
<!---->
|
||||
|
||||
## Procedure
|
||||
|
||||
### Windows
|
||||
|
||||
1. Install dependencies
|
||||
|
||||
Installing OceanBase Desktop on Windows requires WSL (Windows Subsystem for Linux). WSL is a feature released by Microsoft in 2016 on the Windows 10 platform that enables users to run Linux executables in ELF format on Windows.
|
||||
|
||||
WSL has released two generations: WSL 1 and WSL 2. WSL 1 implements a Linux compatibility layer that converts Linux system calls to Windows NT system calls. WSL 2 uses Windows Hyper-V functionality to run Linux virtual machines directly through virtualization technology, providing an experience closer to native Linux.
|
||||
|
||||
:::tip
|
||||
WSL 2 is not an upgrade of WSL 1, so you do not need to install WSL 1 before installing WSL 2. OceanBase Desktop images can only use WSL 2.
|
||||
:::
|
||||
|
||||
1. Check whether virtualization is enabled.
|
||||
|
||||
Press [Win] + [Q] on your keyboard, search for **Task Manager**, and click to open it. Go to the **Performance** interface and view **CPU**. As shown in the following figure, if virtualization is enabled, the **Virtualization** field displays **Enabled**. If the **Virtualization** field displays **Disabled**, refer to the following steps to enable virtualization in BIOS.
|
||||
|
||||
<!---->
|
||||
|
||||
2. Enable motherboard virtualization.
|
||||
|
||||
This section uses ThinkPad (a Lenovo brand) as an example to describe how to enter BIOS and enable motherboard virtualization. The operations for entering BIOS and enabling motherboard virtualization vary slightly for different computer brands. You can visit the official websites of your brand to view specific operations, such as [Dell](https://www.dell.com/support/kbdoc/zh-cn/000195978/how-to-enable-or-disable-hardware-virtualization-on-dell-systems?lang=en), [Lenovo](https://support.lenovo.com/us/en/solutions/ht500006-how-to-enable-virtualization-technology-on-lenovo-computers), [ThinkPad (a Lenovo brand)](https://support.lenovo.com/us/en/solutions/ht500006-how-to-enable-virtualization-technology-on-lenovo-computers), [HP](https://support.hp.com/us-en/search?q=enable%20virtualization), or search for your computer model in a browser.
|
||||
|
||||
1. Open the **Start** menu, click the **Power** button, and click **Restart**.
|
||||
|
||||
2. After the computer restarts, immediately press the **F1** key on your keyboard to access BIOS settings.
|
||||
|
||||
3. On the BIOS page, click the **Security** option, and then click **Security Virtualization** on the **Security** page.
|
||||
|
||||
4. After entering the corresponding settings page, set the button after **Virtualization Technology** to **no**.
|
||||
|
||||
5. After adjustment, click **Save and Exit** to save the changes and exit BIOS settings, and wait for the system to restart.
|
||||
|
||||
:::info
|
||||
After enabling, you can refer to the previous step to verify again whether virtualization is enabled.
|
||||
:::
|
||||
|
||||
2. Install OceanBase Desktop
|
||||
|
||||
1. Download the installation package.
|
||||
|
||||
Visit the [OceanBase Software Download Center](https://en.oceanbase.com/softwarecenter), find **OceanBase Desktop One-Click Deployment Installation Package**, and click to download **Windows Version-1.3**.
|
||||
|
||||
2. Install the application.
|
||||
|
||||
1. Double-click the downloaded `OceanBase-Desktop-Setup-x.x.x.exe` file.
|
||||
|
||||
2. In the **User Account Control** window that appears, click **Yes** to allow the application to make changes to the device.
|
||||
|
||||
3. On the `Installer Language` page that appears, select the installation language. The default is Chinese (Simplified).
|
||||
|
||||
<!---->
|
||||
|
||||
4. Select the application installation location. By default, it is installed on drive C. You can click **Browse** to select another folder for installation. After confirmation, click **Install**.
|
||||
|
||||
<!---->
|
||||
|
||||
5. After installation is complete, click **Finish**. OceanBase Desktop will automatically run.
|
||||
|
||||
<!---->
|
||||
|
||||
3. Start OceanBase Desktop.
|
||||
|
||||
After installation is complete, open the desktop version. A login interface for obshell Dashboard appears. The default login password is empty. Click **Login** to enter.
|
||||
|
||||
<!---->
|
||||
|
||||
After entering the obshell Dashboard page, the instance starts automatically. You can view instance information and manage instances on this page.
|
||||
|
||||
<!---->
|
||||
|
||||
3. Connect to OceanBase Desktop
|
||||
|
||||
After OceanBase Desktop starts successfully, you can connect to OceanBase Desktop through the command line interface. The connection string example is as follows:
|
||||
|
||||
```shell
|
||||
wsl.exe -d oceanbase-desktop --exec bash -c "obclient -h127.0.0.1 -P2881 -uroot -Doceanbase -A"
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
Two installation methods are available on macOS: installation through Homebrew and installation through a dmg installation package. This section describes both methods.
|
||||
|
||||
* Install through Homebrew
|
||||
|
||||
1. Install Homebrew
|
||||
|
||||
If Homebrew is not installed in the current environment, run the following command to install it.
|
||||
|
||||
```shell
|
||||
/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
|
||||
```
|
||||
|
||||
2. Add the OceanBase Desktop Tap.
|
||||
|
||||
After adding the OceanBase Desktop Tap to Homebrew, you can install the official package provided by seekdb using the `brew install` command.
|
||||
|
||||
```shell
|
||||
brew tap oceanbase/homebrew-oceanbase-desktop https://gitee.com/oceanbase/homebrew-oceanbase-desktop.git
|
||||
```
|
||||
|
||||
3. Install OceanBase Desktop.
|
||||
|
||||
```shell
|
||||
brew install --cask oceanbase-desktop
|
||||
```
|
||||
|
||||
After the command is executed, the latest version of OceanBase Desktop will be automatically downloaded, and OrbStack will be installed as a dependency (if not already installed in the environment). After successful installation, the application will be placed in the Applications folder.
|
||||
|
||||
4. Start the application.
|
||||
|
||||
Find `OceanBase Desktop` in the Applications folder, or use Spotlight to search for `OceanBase Desktop`, and double-click to start it. Please wait patiently when starting the application for the first time, as the program will complete initialization in the background. After entering the application, click the **Start** button on the page to start seekdb.
|
||||
|
||||
:::info
|
||||
To uninstall OceanBase Desktop, run the <code>brew uninstall --cask oceanbase-desktop</code> command. This command will also clean up application files, application support data, saved application state, and application virtual machines.
|
||||
:::
|
||||
|
||||
* Install through a dmg installation package
|
||||
|
||||
1. Install dependencies
|
||||
|
||||
Installing OceanBase Desktop on macOS requires OrbStack. OrbStack is a modern container and virtual machine management tool designed for macOS users, aiming to provide efficient container runtime (such as Docker containers) and lightweight virtual machine support. Its goal is to replace Docker Desktop and other cumbersome virtualization tools while significantly improving performance, saving system resources, and simplifying the developer experience.
|
||||
|
||||
:::info
|
||||
There are two installation methods in the OrbStack official tutorial: downloading the installation package and running the brew command. This section uses downloading the installation package as an example. For other methods, see the <a href="https://docs.orbstack.dev/quick-start">official tutorial</a>.
|
||||
:::
|
||||
|
||||
1. Download the installation package.
|
||||
|
||||
You can visit the [official download link](https://orbstack.dev/download) to download the installation package. The link provides two installation packages based on the chip used by the operating system (Apple Silicon chip and Intel chip). You can click the Apple icon in the upper-left corner of your computer, then click **About This Mac** to view the chip type used by your computer.
|
||||
|
||||

|
||||
|
||||
2. Install.
|
||||
|
||||
Double-click the corresponding dmg installation package and drag the icon to the Applications folder for installation.
|
||||
|
||||
:::tip
|
||||
If this is the first installation, be sure to complete the OrbStack initial setup process; otherwise, images cannot be imported normally.
|
||||
:::
|
||||
|
||||
<!---->
|
||||
|
||||
3. (Optional) Verify whether the installation is successful.
|
||||
|
||||
Select the Machines (Virtual Machines) section and install the latest Ubuntu image. This process may take a long time. Please wait patiently.
|
||||
|
||||
<!---->
|
||||
|
||||
After installation is complete, double-click the corresponding virtual machine. If you can enter the command line connection interface, it means OrbStack has been successfully installed.
|
||||
|
||||
<!---->
|
||||
|
||||
2. Install OceanBase Desktop
|
||||
|
||||
1. Download the installation package.
|
||||
|
||||
Visit the [OceanBase Software Download Center](https://en.oceanbase.com/softwarecenter), find **OceanBase Desktop One-Click Deployment Installation Package**, and click to download **Mac Version-1.3**.
|
||||
|
||||
|
||||
2. Install the application.
|
||||
|
||||
Click the corresponding installation package and drag the icon to the Applications folder for installation.
|
||||
|
||||
3. Start OceanBase Desktop.
|
||||
|
||||
After installation is complete, a seekdb instance in the `Stopped` state will be automatically deployed. Click the **Start** button on the graphical page to start seekdb.
|
||||
|
||||
|
||||
### Connect to OceanBase Desktop
|
||||
|
||||
After seekdb starts successfully, click the **Connect** button in OceanBase Desktop to automatically connect to seekdb. You can also manually connect to seekdb. The connection string example is as follows:
|
||||
|
||||
```shell
|
||||
mysql -h127.0.0.1 -P2881 -uroot -Doceanbase -A
|
||||
```
|
||||
Reference in New Issue
Block a user