PullRequest: 983 V4.0.0 fix data security errors

This commit is contained in:
obdev 2023-09-18 07:28:41 +00:00 committed by ob-robot
parent 8d07a02e42
commit 93cbdc7a39
26 changed files with 277 additions and 269 deletions

View File

@ -179,7 +179,7 @@ Perform the following steps to deploy the OceanBase cluster:
obd cluster autodeploy obtest -c distributed-with-obproxy-example.yaml
```
For more information about the `obd cluster autodeploy` command, see [OBD Documentation](https://open.oceanbase.com/docs/obd-cn/V1.3.0/10000000000099589).
For more information about the `obd cluster autodeploy` command, see [OBD Documentation](https://en.oceanbase.com/docs/community-obd-en-10000000000904961).
* View the OceanBase cluster.

View File

@ -1,101 +1,94 @@
# Deploy OceanBase Database in a Kubernetes cluster
This topic describes how to use ob-operator to deploy OceanBase Database in a Kubernetes cluster.
This topic describes how to deploy OceanBase Database in a Kubernetes environment by using ob-operator. Currently, only Kubernetes version 1.23.6 is tested, and if you encounter any issues while deploying other versions, feel free to contact us.
## Background
The topic is divided into three parts:
Like other operators, ob-operator aims to enable OceanBase Database to run in a Kubernetes cluster as a container.
ob-operator now supports the creation and deletion of OceanBase clusters, complete lifecycle management for nodes, and OBProxy management, and will support features such as tenant management and multiple Kubernetes clusters in the future.
You can perform the following steps to use ob-operator to deploy OceanBase Database.
## Deploy CRDs
```bash
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/crd.yaml
```
1. Deploy ob-operator
2. Deploy OceanBase Database
3. Monitor OceanBase Database
## Deploy ob-operator
### Deploy ob-operator based on the default configurations
Using ob-operator can simplify the deployment and operation of OceanBase Database in a Kubernetes cluster. The following two ways are available to deploy ob-operator:
```bash
### Deploy ob-operator with Helm
You can deploy ob-operator by running the following commands:
```shell
helm repo add ob-operator https://oceanbase.github.io/ob-operator/
helm install ob-operator ob-operator/ob-operator --namespace=oceanbase-system --create-namespace --version=1.1.0
```
### Deploy ob-operator with configuration files
You can deploy ob-operator with configuration files by running the following commands:
```shell
# deploy CRD
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/crd.yaml
# deploy ob-operator
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/operator.yaml
```
### Deploy ob-operator based on custom configurations
#### Customize ob-operator
You can modify the `operator.yaml` file based on your configurations.
For example, you can add the startup parameter `--cluster-name` to the `operator.yaml` file. In this way, ob-operator processes only a custom resource definition (CRD) whose `cluster` value is the same as the value of the startup parameter `--cluster-name`.
> **Notice**
>
> The value of `--cluster-name` must be the same as the value of `cluster` in the configurations of the OceanBase cluster.
> Modify the configuration file based on the following content:
If you need to customize ob-operator, download the configuration file by running the following commands:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
control-plane: controller-manager
name: ob-operator-controller-manager
namespace: oceanbase-system
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
template:
metadata:
labels:
control-plane: controller-manager
spec:
containers:
- args:
- --health-probe-bind-address=:8081
- --metrics-bind-address=127.0.0.1:8080
- --leader-elect
- --cluster-name=cn
command:
- /manager
image: ob-operator:latest
imagePullPolicy: Always
name: manager
```shell
# download the config file
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/crd.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/operator.yaml
```
## Configure labels for Kubernetes nodes
After you modify the configuration file, deploy ob-operator by running the following commands:
You must configure labels for Kubernetes nodes. The labels must match the value of `nodeSelector` in the `obcluster.yaml` file. ob-operator will schedule pods to nodes with the corresponding labels.
We recommend that you specify the key of a label to `topology.kubernetes.io/zone`. We recommend that you configure different labels for different zones for disaster recovery.
```shell
# after making some modification
kubectl apply -f crd.yaml
kubectl apply -f operator.yaml
```
```bash
kubectl label node nodename topology.kubernetes.io/zone=zonename
kubectl label node ${node_name} topology.kubernetes.io/zone=${zone_name}
## Deploy OceanBase Database
### Preparations
#### Configure labels for Kubernetes nodes
ob-operator uses `nodeSelector` in the `obcluster.yaml` configuration file of OceanBase Database to determine the distribution of observer nodes. Therefore, you need to configure labels for the Kubernetes nodes first.
You can set the label for a node by running the following command:
```shell
kubectl label node <node_name> <label_key>=<label_value>
# for example
kubectl label node node1 ob.zone=zone1
```
## Deploy local-path-provisioner
In the default configurations of ob-operator, local-path-provisioner is used. Therefore, you must get it ready in advance.
To deploy OceanBase Database by using ob-operator, create a Persistent Volume Claim (PVC) as storage. For optimal performance, local storage is recommended. This topic uses local-path-provisioner to manage PVC.
Run the following command to deploy local-path-provisioner:
Use the following command to deploy local-path-provisioner:
```text
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.22/deploy/local-path-storage.yaml
```shell
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml
```
For more information, see <https://github.com/rancher/local-path-provisioner>.
For more information, see [local-path-provisioner](https://github.com/rancher/local-path-provisioner).
## Deploy the OceanBase cluster
### Deploy OceanBase Database
### Deploy the OceanBase cluster based on the default configurations
The OceanBase cluster is defined in a YAML configuration file. You can customize the configuration file provided by ob-operator to suit your needs. Use the following command to download the `obcluster.yaml` configuration file for OceanBase Database:
```bash
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obcluster.yaml
```shell
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obcluster.yaml
```
### Deploy the OceanBase cluster based on custom configurations
You can modify the `obcluster.yaml` file based on your configurations.
Modify the configuration file based on the following content:
The sample content of the configuration file is shown below.
```yaml
apiVersion: cloud.oceanbase.com/v1
@ -104,8 +97,9 @@ metadata:
name: ob-test
namespace: obcluster
spec:
imageRepo: oceanbasedev/oceanbase-cn
tag: v3.1.3-10100042022051821
imageRepo: oceanbase/oceanbase-ce
tag: 4.0.0.0-100000272022110114
imageObagent: oceanbase/obagent:1.2.0
clusterID: 1
topology:
- cluster: cn
@ -113,21 +107,21 @@ spec:
- name: zone1
region: region1
nodeSelector:
topology.kubernetes.io/zone: zone1
ob.zone: zone1
replicas: 1
- name: zone2
region: region1
nodeSelector:
topology.kubernetes.io/zone: zone2
ob.zone: zone2
replicas: 1
- name: zone3
region: region1
nodeSelector:
topology.kubernetes.io/zone: zone3
ob.zone: zone3
replicas: 1
parameters:
- name: freeze_trigger_percentage
value: "30"
- name: log_disk_size
value: "40G"
resources:
cpu: 2
memory: 10Gi
@ -141,43 +135,62 @@ spec:
- name: log
storageClassName: "local-path"
size: 30Gi
- name: obagent-conf-file
storageClassName: "local-path"
size: 1Gi
volume:
name: backup
nfs:
server: ${nfs_server_address}
path: /opt/nfs
readOnly: false
```
Description of parameters:
Parameters in the sample content are described as follows:
- `imageRepo`: the image repository of OceanBase Database.
- `tag`: the tag of the OceanBase image.
- `imageRepo`: The image repository of OceanBase Database.
- `cluster`: If you want to deploy an OceanBase cluster in a Kubernetes cluster, set this value to the same as that of the startup parameter `--cluster-name` of ob-operator.
- `parameters`: custom parameters of OceanBase Database. Specify this parameter as needed.
- `tag`: The tag of the OceanBase image.
- `cpu`: the number of CPU cores. We recommend that you set the value to an integer greater than 2. A value smaller than 2 will cause a system exception.
- `imageObagent`: The image of OBAgent, which is used to collect monitoring data for the OceanBase cluster.
- `memory`: the memory size. We recommend that you set the value to an integer greater than 10 GiB. A value smaller than 10 GiB will cause a system exception.
- `cluster`: To deploy an OceanBase cluster in a Kubernetes cluster, set the value of this parameter to the same as that of the startup parameter `--cluster-name` of ob-operator.
- `data-file`: the data file size. The value must be the same as that of the `datafile_size` parameter of the OBServer. We recommend that you set this parameter to a value that is three times the memory size. You can specify `storageClassName` as needed.
- `parameters`: The custom parameters of OceanBase Database. Specify the parameters as needed.
- `data-log`: the data directory size. The value must be the same as the size of the `data_dir` directory of the OBServer. We recommend that you set this parameter to a value that is five times the memory size You can specify `storageClassName` as needed.
- `cpu`: The number of pod CPU cores. We recommend that you set the value to an integer greater than 2. A value smaller than 2 may cause system exceptions.
- `log`: the size of the system log directory of the OBServer. We recommend that you set a value greater than 30 GiB. You can specify `storageClassName` as needed.
- `memory`: The pod memory size. We recommend that you set the value to an integer greater than 10 GiB. A value smaller than 10 GiB may cause system exceptions.
## Deploy OBProxy
- `data-file`: The data storage configuration of OceanBase Database. You can specify the size and `storageClassName` to use as the data directory for OceanBase Database. We recommend that you configure a value at least 3 times the size of memory or larger.
### Deploy OBProxy based on the default configurations
- `data-log`: The log storage configuration of OceanBase Database. You can specify the size and `storageClassName` to use as the Clog directory for OceanBase Database. We recommend that you configure a value at least 3 times the size of memory or larger.
```bash
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obproxy.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obproxy/deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obproxy/service.yaml
- `log`: The process log storage configuration of OceanBase Database. You can specify the size and `storageClassName` to use as the directory for storing process logs for OceanBase Database. We recommend that you configure a value of at least 10Gi or larger.
- `obagent-conf-file`: The storage configuration of OBAgent configuration files, which is used to store OBAgent configuration files. A smaller size, generally around 1Gi, is sufficient.
- `volume`: The storage for backup data. If no backup requirement exists, this can be left unconfigured. However, once the cluster is created, it cannot be added later, so we recommend that you plan for this before deployment.
After you modify the configuration file, run the following command to deploy the cluster:
```shell
kubectl apply -f obcluster.yaml
```
### Deploy OBProxy based on custom configurations
### Deploy OceanBase Database Proxy (ODP)
You can modify the `obproxy.yaml` file based on your configurations.
Modify the configuration file based on the following content:
ODP is defined by using yaml configuration files. You can customize these files by referring to the configuration files of ob-operator. To download the ODP configuration files, run the following command:
```shell
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obproxy/deployment.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/obproxy/service.yaml
```
The sample content of the `deployment.yaml` file is shown below.
```yaml
# deployment
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
@ -187,7 +200,7 @@ spec:
selector:
matchLabels:
app: obproxy
replicas: 3
replicas: 2
template:
metadata:
labels:
@ -195,7 +208,7 @@ spec:
spec:
containers:
- name: obproxy
image: oceanbase/obproxy-ce:3.2.3
image: oceanbase/obproxy-ce:4.0.0-5
ports:
- containerPort: 2883
name: "sql"
@ -207,13 +220,29 @@ spec:
- name: OB_CLUSTER
value: ob-test
- name: RS_LIST
value: $(SVC_OB_TEST_SERVICE_HOST):$(SVC_OB_TEST_SERVICE_PORT)
value: $RS_LIST
resources:
limits:
memory: 2Gi
cpu: "1"
---
# service
```
Parameters in the sample content are described as follows:
- APP_NAME: The name of the ODP application.
- OB_CLUSTER: The name of the OceanBase cluster that the ODP connects to.
- RS_LIST: The `rs_list` of the OceanBase cluster, which has the format `${ip1}:${port1};${ip2}:${port2};${ip3}:${port3}`. Replace values in this format with actual ones. The following two ways are available to obtain the address of `rs_list`:
- Method 1: Connect to the OceanBase cluster and run the s `show parameters like 'rootservice_list';` command to view it.
- Method 2: Use the `kubectl get RootService rs-${cluster_name} -n ${namespace} -o yaml` command to query all Root Service addresses, and then concatenate them into a complete `rs_list`. Replace `${cluster_name}` and `${namespace}` with the actual OceanBase cluster name and namespace.
The `service.yaml` file opens two ports: one for SQL connection and the other for monitoring data collection. Here is what the `service.yaml` file contains:
```yaml
# service.yaml
apiVersion: v1
kind: Service
metadata:
@ -224,37 +253,72 @@ spec:
selector:
app: obproxy
ports:
- name: "tcp"
- name: "sql"
port: 2883
targetPort: 2883
nodePort: 30083
- name: "prometheus"
port: 2884
targetPort: 2884
nodePort: 30084
```
Description of main environment variables:
After you modify the configuration file, run the following commands for deployment:
- `APP_NAME`: the app name of OBProxy.
- `OB_CLUSTER`: the name of the OceanBase cluster to which OBProxy connects.
- `RS_LIST`: the RootService list of the OceanBase cluster, which is generated based on the service address of the OceanBase cluster. After you deploy the OceanBase cluster, two environment variables are automatically generated: `SVC_OB_TEST_SERVICE_HOST` and `SVC_OB_TEST_SERVICE_PORT`. They respectively indicate the service address and port of the OceanBase cluster.
## Deploy Prometheus
### Deploy Prometheus based on the default configurations
```bash
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/cluster-role.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/cluster-role-binding.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/configmap.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/service.yaml
```shell
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
```
### Deploy Prometheus based on custom configurations
### Connect to OceanBase Database
The request address used by Prometheus to query OBAgent is configured by using a ConfigMap, and the requests are filtered by service name and port number. If custom configurations have been specified for the OceanBase cluster or OBProxy cluster, you must specify a regular expression for the service name based on the actual situation.
We recommend that you connect to OceanBase Database through ODP. After you deploy OceanBase Database and ODP, run the following command to obtain the service connection address of ODP:
```shell
kubectl get svc ${servicename} -n ${namespace}
# for example
kubectl get svc obproxy-service -n obcluster
# output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
obproxy-service NodePort xxx.xxx.xxx.xxx <none> 2883:30083/TCP,2884:30084/TCP 1m
```
You can make a connection using CLUSTER-IP and PORT. The corresponding connection commands are as follows:
```shell
# use clusterip without password
obclient -hxxx.xxx.xxx.xxx -P2883 -uroot@sys oceanbase -A -c
# use clusterip with password
obclient -hxxx.xxx.xxx.xxx -P2883 -uroot@sys -p oceanbase -A -c
# using nodeport without password
obclient -h<node_ip> -P30083 -uroot@sys oceanbase -A -c
# using nodeport with password
obclient -h<node_ip> -P30083 -uroot@sys -p oceanbase -A -c
```
## Monitor OceanBase Database
### Deploy Prometheus
Download the Prometheus configuration files by running the following command and customize them by referring to the Prometheus configuration files provided by ob-operator:
```shell
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/cluster-role.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/cluster-role-binding.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/configmap.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/deployment.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/prometheus/service.yaml
```
Prometheus selects the address for collecting data based on the name and port of the service in Kubernetes. You can configure filtering for data collection using regular expressions, as shown in the configuration in the `configmap.yaml` file:
```yaml
# Key configurations in the ConfigMap
# Configurations in configmap.yaml
scrape_configs:
- job_name: 'obagent-monitor-basic'
kubernetes_sd_configs:
@ -290,43 +354,51 @@ scrape_configs:
action: keep
```
Specify the service name and port number by using the service discovery capability of Kubernetes. All endpoints will be automatically found. You can query the corresponding monitoring data based on the request path.
Configuration description:
The configurations are described as follows:
- Service and port:
- OceanBase Database: ob-operator will create a service based on the name of the deployed OceanBase cluster. The service name is in the format of `svc-monitor-${obcluster_name}`. The port name is `monagent`. If a cluster name has been specified when you deploy OceanBase Database, you must modify the corresponding configuration based on the actual cluster name.
- OBProxy: You must configure the service and port names for the corresponding OBProxy.
- OceanBase: ob-operator creates a service based on the OceanBase cluster name to obtain the exporter address. The naming rule for the service is `svc-monitor-${obcluster_name}`, and the port name is `monagent`. If you customized the cluster name during deployment, modify the relevant configuration according to the actual cluster name.
- Request paths for monitoring metrics:
- ODP: You need to configure the corresponding ODP service and port name.
- Monitoring metrics of OceanBase Database: `/metrics/ob/basic` and `/metrics/ob/extra`
- Request path for monitoring metrics:
- Monitoring metrics of OBProxy: `/metrics`. OBProxy supports the exposure of monitoring metrics by using the Prometheus protocol.
- OceanBase cluster: The request paths are `/metrics/ob/basic` and `/metrics/ob/extra`.
### Verify whether the configurations have taken effect
- ODP cluster: ODP supports the ability to expose monitoring metrics using the Prometheus protocol, and the request path is `/metrics`.
Input the Prometheus address in your browser and press **Enter**. On the page that appears, choose **Status** > **Targets** and verify whether the endpoints under `proxy-monitor`, `obagent-monitor-host`, `obagent-monitor-basic`, and `obagent monitor-extra` are all in the `up` state.
Click **Graph** and enter a PromQL expression for querying the configured parameters.
After you modify the configuration file, deploy it by running the following command:
## Deploy Grafana
### Deploy Grafana based on the default configurations
```bash
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/configmap.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/pvc.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/service.yaml
```shell
kubectl apply -f cluster-role.yaml
kubectl apply -f cluster-role-binding.yaml
kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
```
### Deploy Grafana based on custom configurations
#### Verification
Key configuration information of Grafana, including the address of the Prometheus data source, is set by using a ConfigMap. If Prometheus is deployed based on custom configurations, you must configure the actual service address.
Open the Prometheus address in a browser and navigate to **Status** > **Targets** to verify that the `Endpoint` under `proxy-monitor`, `obagent-monitor-host`, `obagent-monitor-basic`, and `obagent-monitor-extra` are all in the up state.
Click on **Graph** to enter PromQL expressions and perform queries.
### Deploy Grafana
Download the Grafana configuration files by running the following command and customize them by referring to the Prometheus configuration files provided by ob-operator:
```shell
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/configmap.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/pvc.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/deployment.yaml
wget https://raw.githubusercontent.com/oceanbase/ob-operator/master/deploy/grafana/service.yaml
```
The `configmap.yaml` file contains key configuration information about Grafana, including the address of the Prometheus data source. If Prometheus was customized during deployment, you need to configure the actual service address.
```yaml
# Key configurations in the ConfigMap
# Key configurations in configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
@ -351,20 +423,32 @@ data:
}
```
Configuration description:
The Grafana configuration uses the service address of Prometheus as the data source configuration (`url` field in `datasources`). You need to fill this in according to the actual deployment of Prometheus.
- `url`: The service address of Prometheus will be used as the URL of the data source in the configurations of Grafana. You must configure the actual service address of Prometheus.
After you modify the configuration file, deploy it by running the following command:
### Verify whether the configurations have taken effect
```shell
kubectl apply -f configmap.yaml
kubectl apply -f pvc.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
```
Input the Grafana address in your browser and press **Enter**. On the page that appears, input the username and default password `admin` to log on. When you log on for the first time, you will be prompted to change the password.``
Three configured dashboards are available. You can directly import them.
#### Verification
Open the Grafana address in a browser and log on with the `admin` user. The default password is also `admin`, and you will be prompted to change it the first time you log on. The Grafana configuration includes the OceanBase Database dashboard by default, which you can view by opening the following link in a browser:
```shell
http://${node_ip}:${node_port}/d/oceanbase
```
You can view the host metrics and ODP monitoring templates by adding the following dashboard IDs.
- oceanbase: 15215
- Host: 15216
- obproxy: 15354
After the import, you can view the corresponding monitoring graphs.
> **Note**
>
> Monitoring data will be displayed only after OBProxy receives actual requests.
- ODP: 15354
<main id="notice" type='explain'>
<h4>Note</h4>
<p>ODP monitoring data will only be displayed after actual requests are sent.</p>
</main>

View File

@ -214,4 +214,4 @@ python test.py
## 更多信息
创建 Python 3.x 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Python3 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/python3-pymysql)。
创建 Python 3.x 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Python3 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/python3-pymysql)。

View File

@ -30,7 +30,7 @@ obclient -h100.88.xx.xx -uroot@test -p****** -P2881 -Doceanbase
根据 Go 语言的不同版本,可以选择不同的安装方式。
#### 通过 go get 安装适用于Go V1.13 - V1.16
#### 通过 go get 安装(适用于 Go V1.13 - V1.16
安装命令如下:
@ -175,4 +175,4 @@ Hello OceanBase
## 更多信息
创建 Go 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Go 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/go-go_sql_driver)。
创建 Go 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Go 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/golang-go-sql-driver)。

View File

@ -124,4 +124,4 @@ an,1
## 更多信息
创建 Java 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Java 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/java-jdbc)。
创建 Java 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Java 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/java-mysql-connector-java)。

View File

@ -124,4 +124,4 @@ an,1
## 更多信息
创建 Java 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Java 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/java-jdbc)。
创建 Java 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Java 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/java-mysql-connector-java)。

View File

@ -175,4 +175,4 @@ Hello OceanBase
## 更多信息
创建 Go 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Go 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/go-go_sql_driver)。
创建 Go 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Go 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/golang-go-sql-driver)。

View File

@ -214,4 +214,4 @@ python test.py
## 更多信息
创建 Python 3.x 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Python3 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/python3-pymysql)。
创建 Python 3.x 示例应用程序在 OceanBase 数据库开源社区中也有相关的完整示例,详情请参考 [Python3 示例应用程序](https://github.com/oceanbase/ob-example/tree/master/examples/driver/python3-pymysql)。

View File

@ -25,4 +25,4 @@
| Zone | OceanBase 是分布式数据库集群监控由多个Zone 采集汇总而成。汇总方式由指标类型决定。选择单个 Zone展示对应 Zone 的监控数据。 |
| OBServer | OceanBase 是分布式数据库集群监控由多个OBServer 采集汇总而成。汇总方式由指标类型决定。选择单个 OBServer展示对应 OBServer 的监控数据。 |
性能指标分数据库性能和主机性能,更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/oceanbase-cloud-platform/oceanbase-cloud-platform/V3.1.2/pmt1bh)。
性能指标分数据库性能和主机性能,更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/community-ocp-cn-10000000000866676)。

View File

@ -21,7 +21,7 @@
| Zone | OceanBase 是分布式数据库,租户在多个 Zone 上有数据副本。租户监控由多个 Zone 的副本采集汇总而成。汇总方式由指标类型决定。选择单个 Zone只展示 Zone 所在的租户副本的监控数据。 |
| OBServer | OceanBase 是分布式数据库租户在多个OBServer 有数据副本。租户监控由多个 OBServer 的副本采集汇总而成。汇总方式由指标类型决定。选择单个 OBServer只展示对应 OBServer 所在的租户副本的监控数据。 |
性能指标分性能与 SQL、事务、存储与缓存 ,更多详情请参见 [监控指标](https://www.oceanbase.com/docs/oceanbase-cloud-platform/oceanbase-cloud-platform/V3.1.2/pmt1bh)。
性能指标分性能与 SQL、事务、存储与缓存 ,更多详情请参见 [监控指标](https://www.oceanbase.com/docs/community-ocp-cn-10000000000866676)。
## 租户 SQL 诊断

View File

@ -19,4 +19,4 @@
| 选择时间 | 监控展示的时间范围,支持查看近 30 天数据。 |
| 统计周期 | 支持按分钟、10 秒对采集的监控指标进行平均值统计并展示,默认为分钟级别。 |
性能监控指标分服务监控和系统监控,更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/oceanbase-cloud-platform/oceanbase-cloud-platform/V3.1.2/pmt1bh)。
性能监控指标分服务监控和系统监控,更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/community-ocp-cn-10000000000866676)。

View File

@ -10,6 +10,6 @@
3. 在显示的页面的导航栏上,单击 **监控**
目前支持查看近 30 天监控数据。 更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/enterprise-oceanbase-ocp-cn-10000000002100815)。
目前支持查看近 30 天监控数据。 更多性能指标详情,请参见 [监控指标](https://www.oceanbase.com/docs/community-ocp-cn-10000000000866676)。
![ob11](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8729721461/p347740.png)

View File

@ -30,9 +30,9 @@
3. 暂停执行中的数据传输或导入/导出任务。
您可以直接通过在 OCP 中的 TOPSQL、会话管理功能排查正在批量写入的 SQL如果不能快速判断跑批任务来自哪个系统也可以直接通过 OMS 查看当前节点是否正在进行数据传输任务,如果是的话,可以根据需要将其暂停,缓解 IO 压力后再继续执行。
更多信息可以阅览 [管理迁移任务](https://www.oceanbase.com/docs/oceanbase-migration-service/oms-1-4-2/V1.4.2/pvapnp)。
更多信息可以阅览 [管理数据迁移项目](https://www.oceanbase.com/docs/community-oms-cn-10000000001223093)。
您还可以通过 ODC 查看当前节点是否正在进行导数,在 **任务中心** 面板的 **导入** 页签查看任务列表。进入目标数据库连接后,单击上方导航栏中的 **任务** 标签弹出任务中心面板,在面板中单击 **导入** 页签展示任务列表,进入导入任务页签后,可以根据需要进行 **终止****重试** 操作。更多信息可以阅览 [导入任务](https://www.oceanbase.com/docs/oceanbase-developer-center/odc/V3.2.2/import-tasks-2)。此外其他第三方的大数据平台、DataX 组件也可能存在定时执行的任务,可以按需手动停掉。
您还可以通过 ODC 查看当前节点是否正在进行导数,在 **任务中心** 面板的 **导入** 页签查看任务列表。进入目标数据库连接后,单击上方导航栏中的 **任务** 标签弹出任务中心面板,在面板中单击 **导入** 页签展示任务列表,进入导入任务页签后,可以根据需要进行 **终止****重试** 操作。更多信息可以阅览 [导入任务](https://www.oceanbase.com/docs/community-odc-cn-10000000000834195)。此外其他第三方的大数据平台、DataX 组件也可能存在定时执行的任务,可以按需手动停掉。
4. 调低转储线程数

View File

@ -81,7 +81,7 @@
1. 从 [GitHub](https://github.com/oceanbase/obdeploy/blob/master/example/obproxy/obproxy-only-example.yaml) 上下载对应的配置文件模板。
2. 根据自身机器情况修改配置文件,配置文件各个模块的含义可参考 [配置文件说明](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182168)。
2. 根据自身机器情况修改配置文件,配置文件各个模块的含义可参考 [配置文件说明](https://www.oceanbase.com/docs/community-obd-cn-1000000000050418)。
> **注意**
>

View File

@ -60,4 +60,4 @@
> **说明**
>
> 上述步骤中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182177)。
> 上述步骤中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428)。

View File

@ -34,9 +34,9 @@
由于开源 OBProxy 组件在 V3.2.3 之后正式更名为 obproxy-ce因此使用 `obd cluster upgrade` 命令升级会报 No such package obproxy-3.2.3 错误。
若想要从 OBProxy V3.2.3 之前的版本升级到 V3.2.3,具体操作可参考 [如何升级 obproxy 到 obproxy-ce 3.2.3](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182176)
若想要从 OBProxy V3.2.3 之前的版本升级到 V3.2.3,具体操作可参考 OBD 文档 [常见问题汇总](https://www.oceanbase.com/docs/community-obd-cn-1000000000050422) 中 **如何升级 obproxy 到 obproxy-ce 3.2.3**
除此之外的其他升级情况,可直接执行 [obd cluster upgrade](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182176) 命令进行升级操作。
除此之外的其他升级情况,可直接执行 [obd cluster upgrade](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428) 命令进行升级操作。
执行命令成功后,可在 OBProxy 集群中的对应机器 `home_path/bin` 下执行 `./obproxy -V` 命令查看 OBProxy 的版本,确认是否升级成功。

View File

@ -62,4 +62,4 @@
> **说明**
>
> 上述命令中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182177)。
> 上述命令中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428)。

View File

@ -47,7 +47,7 @@
1. 从 [GitHub](https://github.com/oceanbase/obdeploy/blob/master/example/obproxy/obproxy-only-example.yaml) 上下载对应的配置文件模板。
2. 根据自身机器情况修改配置文件,配置文件各个模块的含义可参考 [配置文件说明](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182168)。
2. 根据自身机器情况修改配置文件,配置文件各个模块的含义可参考 [配置文件说明](https://www.oceanbase.com/docs/community-obd-cn-1000000000050418)。
> **注意**
>
@ -140,4 +140,4 @@
> **说明**
>
> 上述步骤中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182177)。
> 上述步骤中使用的到 OBD 命令,详细信息可参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428)。

View File

@ -97,4 +97,4 @@
> **说明**
>
> 上述步骤中使用到的 OBD 命令,详细信息可参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182177)。
> 上述步骤中使用到的 OBD 命令,详细信息可参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428)。

View File

@ -65,7 +65,7 @@ OceanBase 数据库中各集群参数的详细说明信息请参见 [系统配
2. 修改/添加配置文件中的配置项
配置文件各个模块的含义可参考 [配置文件说明](https://open.oceanbase.com/docs/obd-cn/V1.3.3/10000000000182168)。
配置文件各个模块的含义可参考 [配置文件说明](https://www.oceanbase.com/docs/community-obd-cn-1000000000050418)。
若需要修改的参数配置文件中不存在,您可手动添加配置项,根据不同的生效范围选择添加到全局配置或节点配置。

View File

@ -9,7 +9,7 @@ OceanBase 数据库支持基于 Trace 功能快速获取上一次 SQL 请求的
1. 开启 Trace 功能。
可通过如下两种方式来开启 Trace 功能:
* 通过设置 Hint[](https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.0/optimizer-hint-1)中的 `trace_log` 字段来开启 Trace 功能。这种方式只对携带 Hint 的当前语句生效。更多 Hint 语句相关的介绍,请参见《 SQL 调优指南》中的 **Optimizer Hint**
* 通过设置 Hint 中的 `trace_log` 字段来开启 Trace 功能。这种方式只对携带 Hint 的当前语句生效。更多 Hint 语句相关的介绍,请参见 [Optimizer Hint](../../../900.performance-tuning-guide/500.sql-optimization/400.sql-optimization-1/700.manage-execution-plans/100.optimizer-hint.md)
```sql
obclient > SELECT /*+trace_log=on*/c1 FROM t1 LIMIT 2;

View File

@ -7,7 +7,7 @@ CloudCanal 社区版是一款由 [ClouGence公司](https://www.clougence.com)
CloudCanal 提供了完整的产品化能力,用户在可视化界面完成数据源添加和任务创建即可自动完成结构迁移、全量迁移、增量实时同步。本文将说明如何将 MySQL 数据库中的数据迁移同步到对端 OceanBase 中,其他源端例如 Oracle 或 PostgreSQL 同步到OceanBase也可以按照类似的方式进行。
![1](https://cdn.nlark.com/yuque/0/2022/png/96442/1646818715874-52b4ef02-51ac-4543-9d48-32119694229f.png?x-oss-process=image%2Fresize%2Cw_1650%2Climit_0#crop=0&crop=0&crop=1&crop=1&id=eEaja&originHeight=685&originWidth=1650&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-01.png)
## 下载安装
@ -118,7 +118,7 @@ CloudCanal 提供了完整的产品化能力,用户在可视化界面完成数
2. 数据源管理->新增数据源
3. 选择自建数据库中OceanBase
![1](https://www.askcug.com/assets/uploads/files/1646041871146-6a37c3f6-b2a1-4fca-b5db-8ce37eaeb180-image.png#crop=0&crop=0&crop=1&crop=1&id=l7ogK&originHeight=1926&originWidth=3822&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-02.png)
### 任务创建
@ -128,17 +128,17 @@ CloudCanal 提供了完整的产品化能力,用户在可视化界面完成数
2. 选择 **源****目标** 数据库
3. 点击 下一步
![1](https://www.askcug.com/assets/uploads/files/1646042039253-7277e649-63c6-4810-a07f-309607ec9612-image.png#crop=0&crop=0&crop=1&crop=1&id=ytt2b&originHeight=1936&originWidth=3836&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-03.png)
4. 选择 **增量同步**,并且启用 **全量数据初始化**
5. 点击下一步
![1](https://www.askcug.com/assets/uploads/files/1646042117837-b2c2b010-57a5-4ad5-9a11-d63bfa5f65e3-image.png#crop=0&crop=0&crop=1&crop=1&id=Itopt&originHeight=1934&originWidth=3828&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-04.png)
6. 选择订阅的表,结构迁移自动创建的表会按照默认类型映射进行处理。对端表如果已经提前建好,这里也可以直接映射对端已经存在的表
7. 点击下一步
![1](https://www.askcug.com/assets/uploads/files/1646042245392-51a5dc5c-766a-4380-b06d-867921bad904-image.png#crop=0&crop=0&crop=1&crop=1&id=RREMG&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-05.png)
8. 配置列映射
9. 点击下一步
@ -147,15 +147,15 @@ CloudCanal 提供了完整的产品化能力,用户在可视化界面完成数
>
> 如果是通过 CloudCanal 结构迁移自动建表,这边不允许重命名、裁剪以及列映射; 如果映射的是对端已经提前建好的表,这边支持列的裁剪和映射
![1](https://www.askcug.com/assets/uploads/files/1646042317818-caabefcb-a25b-434d-96f7-8d2caa8a74f6-image.png#crop=0&crop=0&crop=1&crop=1&id=yq8ug&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-06.png)
10. 创建任务
![1](https://www.askcug.com/assets/uploads/files/1646042482020-31f7a359-539b-4c2c-b66c-627df0fed46b-image.png#crop=0&crop=0&crop=1&crop=1&id=nmnWE&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-07.png)
11. 查看任务状态。任务创建后,会自动完成结构迁移、全量、增量阶段。
![1](https://www.askcug.com/assets/uploads/files/1646050682728-1b50e50b-b6c6-41e4-9c38-b6e256095f38-image.png#crop=0&crop=0&crop=1&crop=1&id=ZfFq4&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)
![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer/V3.1.5/zh-CN/400.data-migration/CloudCanal-08.png)
## 参考资料

View File

@ -4,7 +4,7 @@
## 前提条件
使用 OBDOceanBase Deploy 启动一个集群。详细操作步骤,请参考 [使用 OBD 快速启动 OceanBase 数据库](https://github.com/oceanbase/obdeploy#%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8-oceanbase-%E6%95%B0%E6%8D%AE%E5%BA%93)
使用 OBDOceanBase Deploy 启动一个集群。详细操作步骤,请参考 [使用 OBD 快速启动 OceanBase 数据库](https://www.oceanbase.com/docs/community-obd-cn-1000000000050431)
## 名词解释

View File

@ -79,7 +79,7 @@ obd cluster deploy <deploy name> [-c <yaml path>] [-f] [-U] [-A]
obd cluster start <deploy name> [flags]
```
更多信息,请参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.2.0/10000000000017241)。
更多信息,请参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428)。
## (可选)启动 Prometheus
@ -132,4 +132,4 @@ groups:
## (可选)更新 KV 配置
要更新 KV 配置,请使用 `obd cluster edit-config`。详细信息,请参考 [集群命令组](https://open.oceanbase.com/docs/obd-cn/V1.2.0/10000000000017241) 中 `obd cluster edit-config` 章节。
要更新 KV 配置,请使用 `obd cluster edit-config`。详细信息,请参考 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428) 中 `obd cluster edit-config` 章节。

View File

@ -68,7 +68,7 @@
完成 OceanBase 数据库与 OBProxy 中间件在 ARM 架构平台下的适配验证,并发布基于 ARM 架构的版本,社区用户可以在 ARM 平台下进行业务开发、编译测试和应用部署。
平台与操作系统兼容列表请参考 [OS 兼容列表](https://github.com/oceanbase/oceanbase#os-compatibility-list)。
平台与操作系统兼容列表请参考 [OS 兼容列表](https://github.com/oceanbase/oceanbase/wiki/Compile_CN#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%85%BC%E5%AE%B9%E5%88%97%E8%A1%A8)。
### 支持更小规格

View File

@ -4,146 +4,76 @@
## 版本新特性
本次迭代版本v3.1.1OceanBase 全面提升内核兼容、工具生态、接口开放、备份恢复、开源 OS 支持和易用性能力,持续增强开源产品化应用能力。您可以获得以下关键特性:
* 支持 MySQL 5.7 驱动协议。
* 新增 MySQL 8.0 的通用表表达式(`Common Table Expressions`),丰富了 SQL 的能力,满足复杂业务查询需求实现。
* 新增校验函数(`CRC32()`),完善 MySQL 数据迁移到 OceanBase 的数据校验环节。
* 新增物理备份和恢复功能,支持近实时的数据备份和恢复到历史任意时间点功能,提升社区版的容灾能力。
* 新增 TABLE API 接口,支持 KV 接口读写数据,提升高性能存储访问能力。
* 新增 REDO 日志接口 CDC 能力,方便用户抽取 OceanBase 增量数据和跟第三方数据同步产品对接,解决了数据实时流出 OceanBase 难题。
* 支持对接 Prometheus提升性能监控和诊断能力。
* 新增管理员工具 `ob_admin` 和 ERROR CODE 解释工具 `ob_error`,提升问题排查分析和故障应急处理能力。
* OBD 新增命令参数,支持自动配置相关参数;新增租户管理命令;新增常用数据库性能测试框架,方便初次使用 OceanBase 。
## 新增功能
### MySQL 兼容
* 适配支持 MySQL 5.7 驱动协议。
* 支持通用表表达式(`Common Table Expressions`)。语法兼容 MySQL 8.0,支持非递归 CTE 和递归 CTE。CTE 相当于一个临时表但没有实际存储,仅在查询执行期间被使用,丰富了 SQL 的功能。详细信息,参考 [PR 314](https://github.com/oceanbase/oceanbase/pull/314)。
* 支持系统函数 `CRC32()`。您可以通过计算字符串的 `CRC32` 校验和来校验数据。例如 `SELECT CRC32("abc");`。详细信息,参考 [PR 152](https://github.com/oceanbase/oceanbase/pull/152)。
* 支持系统函数 `CONVERT_TZ()`。此函数可以实现时区转换查询。例如 `SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00');`。详细信息,参考 [PR 276](https://github.com/oceanbase/oceanbase/pull/276)。
* 支持网络地址相关函数 `INET_ATON()`、`INET_NTOA()`、`INET6_ATON()`、`INET6_NTOA()`、`IS_IPV4()`、`IS_IPV6()`、`IS_IPV4_MAPPED()` 和 `IS_IPV6_MAPPED()`。详细信息,参考 [PR 198](https://github.com/oceanbase/oceanbase/pull/198)。
* 支持租户/用户最大连接数设置。系统变量 `MAX_CONNECTIONS` 设置租户最大连接数。系统变量 `MAX_USER_CONNECTIONS` 设置用户最大并发连接数。创建用户时,可以通过参数 `MAX_USER_CONNECTIONS` 指定用户的最大并发连接数。参数 `MAX_CONNECTIONS_PER_HOUR` 指定用户的每小时最大连接数。
### 高可用性
支持物理备份与恢复。物理备份是集群级别的,包括数据全量和增量备份、事务日志近实时备份(秒级别触发);物理恢复是租户级别的,能恢复到历史任意时间点(几秒之前)。详细信息,参考 [物理备份与恢复概述](https://www.oceanbase.com/docs/community-observer-cn-10000000000014176)。
### 易用性
* OBD 支持根据系统资源情况自动配置 OceanBase 参数。新增 `obd cluster autodeploy` 命令,支持自动使用最高规格启动 OceanBase 数据库。新增 `obd cluster tenant create/drop` 命令支持创建/删除租户。详细信息,参考 [OBD 创建租户](https://github.com/oceanbase/obdeploy/blob/master/README-CN.md#obd-cluster-tenant-create)。
* OBD 支持自动化测试。OBD 支持集成运行 `mysql_test`、`TPCH` 和 `Sysbench` 测试框架。详细信息,参考 [OBD 测试命令](https://github.com/oceanbase/obdeploy/blob/master/README-CN.md#%E6%B5%8B%E8%AF%95%E5%91%BD%E4%BB%A4%E7%BB%84)。
* OBD 支持根据系统资源情况自动配置 OceanBase 参数。新增 `obd cluster autodeploy` 命令,支持自动使用最高规格启动 OceanBase 数据库。新增 `obd cluster tenant create/drop` 命令支持创建/删除租户。详细信息,参见 OBD 文档 [集群命令组](https://www.oceanbase.com/docs/community-obd-cn-1000000000050428) 中对应命令介绍。
* OBD 支持自动化测试。OBD 支持集成运行 `mysql_test`、`TPCH` 和 `Sysbench` 测试框架。详细信息,参考 [OBD 测试命令](https://www.oceanbase.com/docs/community-obd-cn-1000000000050427)。
* 新增错误码解析工具 `ob_error`。`ob_error` 可以帮助您根据 OceanBase 数据库返回的错误码快速找到帮助信息,输入形式为 `ob_error [option] errorcode`。详细信息,参考 [错误码工具](https://github.com/oceanbase/oceanbase/discussions/185)。
* 新增管理员工具 `ob_admin`。ob_admin 支持解析事务日志和转换事务 ID ,提升疑难问题分析诊断能力。输入形式为 `ob_admin clog_tool/usec_tools <args>`。详细信息,参考 [clog_tool](https://www.oceanbase.com/docs/community-observer-cn-10000000000013354)。
### 接口开放
* 开源 TABLE API 接口。OceanBase 数据库支持使用 NoSQL 接口访问。TABLE API 接口是表模型和 KV 模型数据的操作接口,定义了客户端和数据库服务端之间的一组通用的交互协议。行操作接口支持 `execute()` 执行单行操作和 `batch_execute()` 执行多行批量操作。支持 `retrieve/get`、`insert_or_update/put`、`delete`、`insert`、`update`、`replace`、`increment` 和 `append` 操作。
* 开源 Change data captureCDC。CDC 是 OceanBase 数据库对外提供事务日志访问的接口。作为数据链路的一环CDC 支持解析、抽取和组装事务日志为下游数据同步提供消费数据。例如CDC 与 Canal 对接可以实现数据增量迁移。
## 社区生态
* 支持数据同步工具 Canal 和 DataX。支持将数据从 MySQL 迁移到 OceanBase 数据库。支持使用 DataX 向 OceanBase 数据库全量迁移数据。详细信息,参考 [使用 DataX 向 OceanBase 数据库全量迁移数据](https://www.oceanbase.com/docs/community-observer-cn-10000000000013798) 和 [使用 Canal 向 OceanBase 数据库增量迁移数据](https://www.oceanbase.com/docs/community-observer-cn-10000000000013799)。
* 支持 Prometheus 监控系统。增强了社区版本集群监控能力。例如资源使用监控包括CPU、内存、IO 和网络、系统压力监控SQL 时延、活跃会话和 CACHE 命中率等、集群使用约束NTP 时钟同步等)。
* 支持客户端工具 DBeaver。详细信息参考 [文档TODO](https://github.com/dbeaver/dbeaver/discussions/13175) 和 [PR 13596](https://github.com/dbeaver/dbeaver/issues/13596)。
* 支持使用 Docker 部署 OceanBase 数据库。详细信息,参考 [使用 Docker 部署 OceanBase 数据库](https://www.oceanbase.com/docs/community-observer-cn-10000000000013233)。
* 支持多个 x86 平台操作系统。详细信息,参考 [兼容性列表](https://github.com/oceanbase/oceanbase/blob/master/README-CN.md#%E5%85%BC%E5%AE%B9%E6%80%A7%E5%88%97%E8%A1%A8)。
* 支持多个 x86 平台操作系统。详细信息,参考 [兼容性列表](https://github.com/oceanbase/oceanbase/wiki/Compile_CN#%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%85%BC%E5%AE%B9%E5%88%97%E8%A1%A8)。
## 兼容性变化
| 配置项 | 原默认值 | 修改类型 | 新默认值 | 描述 |
|--------------------------------|-------|------|-------|---------------------------------------|
| minor_freeze_times | 5 | 修改 | 100 | 增加内存转储次数,避免内存合并被触发,提升大批量写时性能稳定性。 |
@ -155,16 +85,10 @@
| enable_pg | FALSE | 删除 | -- | 已废弃的功能。 |
| _enable_split_partition | FALSE | 删除 | -- | 已废弃的功能。 |
## Bug修复
* 修复聚合函数与别名相同使用报错的问题。对某字段使用聚合函数后,对结果设置成相同字段别名后,使用聚合结果排序必须使用别名,不能使用原来的聚合函数排序。详细信息,参考 [Issue 173](https://github.com/oceanbase/oceanbase/issues/173)。
* 修复 timediff 精度的问题。当数据的小数点超过 2 位时,计算结果为 NULL。详细信息参考 [Issue 177](https://github.com/oceanbase/oceanbase/issues/177)。
* 修复跨图查询视图报错的问题。详细信息,参考 [Issue 298](https://github.com/oceanbase/oceanbase/issues/298)。