一文讲透 OceanBase 单机版:架构介绍、部署流程、性能测试、MySQL对比、资源配置等等

OceanBase 初探学习历程之——安装部署 OceanBase 数据库是一个原生的分布式关系数据库,它是完全由阿里巴巴和蚂蚁集团自主研发 的项目。OceanBase 数据库构建在通用服务器集群上,基于 Paxos 协议和分布式架构,提供 金融级高可用和线性伸缩能力,不依赖特定硬件架构,具备高可用、线性扩展、高性能、低成 本等核心技术优势。说明:MySQL 从 5.6 开始兼容,Oracle 从 Oracle 11g 开始兼容。 阅读详情
AI摘要

本文介绍OceanBase单机版,它是极简数据库架构,适用于开发测试等场景。阐述了其部署方式、主备租户架构部署,对比了与MySQL单机版的性能,还介绍了与OBD自带测试工具的测试结果。此外,说明了单机版资源配置,包括巡检、最低运行环境和推荐参数配置。

引言

OceanBase 单机集中式集群(即单机版,后文不再称“单机集中式集群”)是OceanBase 推出的极简数据库架构,区别于分布式集群架构,单机版无多副本和扩缩容能力,适用于开发测试环境及数据安全性要求不高的业务系统。

OceanBase 社区版和企业版都支持单机版部署,相关区别如下。

  • 主备集群: OceanBase v4.1.0 之前,物理备库的产品形态为集群级主备。

    集群有两种角色:主集群和备集群。主集群下面所有用户租户都是主租户;备集群下面所有用户租户都是备租户,备集群会自动同步主集群的租户变更操作。

  • 主备租户: OceanBase v4.1.0 之后,物理备库的产品形态变更为租户级主备,即主或备的角色信息属于租户,分为主租户和备租户,集群不再有主备角色的概念,而只是承载租户的容器。

安装部署

1.1 OceanBase 单机版部署方式

OceanBase 单机社区版部署方式有 3 种,分别是:

  1. 通过 OBD ALL-IN-ONE 包部署

    • 推荐,轻量级部署,所需资源少(OBD 和 OceanBase 单机版数据库可复用1台服务器),方便快速
  2. 通过命令行方式部署

    • 需纯手工命令行操作
  3. 通过 OCP 社区版平台部署

    • 适合规模化部署,需要额外资源部署 OCP 云平台,运维方便

    • 生产环境推荐

1.2 OceanBase 单机版最简部署

需要提前在 OceanBase 官网上下载 OBD all-in-one 安装包,下载地址:https://www.oceanbase.com/softwarecenter

1. 通过 all-in-one 安装包部署 OBD 环境

su - admin
tar -xzf oceanbase-all-in-one-*.tar.gz
cd oceanbase-all-in-one/bin/
./install.sh
source ~/.oceanbase-all-in-one/bin/env.sh

2. 禁用远程仓库

obd mirror disable remote
obd mirror list
# 查看 Type=remote 对应的 Enabled 变成了 False,说明已关闭远程镜像源

3. 查看本地镜像中安装包列表

obd mirror list local

4. 准备配置文件

cd ~/.oceanbase-all-in-one/obd/usr/obd/example/
cp mini-single-example.yaml mini-single-20240221.yaml
vim mini-single-20240221.yaml

添加如下参数到配置文件。

user:
    username: admin
    password: OceanBase_123#
    port: 22
oceanbase-ce:
  servers:
    - 10.186.58.87
  global:
    home_path: /home/admin/observer
    data_dir: /data/1
    redo_dir: /data/log1
    devname: eth0
    mysql_port: 2881
    rpc_port: 2882
    zone: zone1
    cluster_id: 1
    memory_limit: 12G
    system_memory: 1G
    datafile_size: 10G
    datafile_next: 2G
    datafile_maxsize: 20G
    log_disk_size: 20G
    cpu_count: 12
    production_mode: false
    enable_syslog_wf: false
    enable_syslog_recycle: true
    max_syslog_file_count: 4
    root_password: OceanBase_123#

5. 部署 OceanBase 数据库

下述命令创建一个名字为 obtest 的单节点集群

obd cluster deploy obtest -c mini-single-20240221.yaml

输出 obtest deployed 表示该集群创建完成。

6. 配置 lib 环境变量

通过 OCP 社区版或 OBD 启动时不会有环境变量问题(启动时带了相关库),手工启动或执行 observer 命令将报错,解决方式如下。

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/observer/lib' >> ~/.bash_profile
source ~/.bash_profile

7. 检查和启动数据库

确认 observer 程序在目标机器安装成功。

/home/admin/observer/bin/observer --version

结果为 observer (OceanBase_CE 4.2.2.0)。

启动 OceanBase 数据库。

obd cluster start obtest

启动完成后,使用 root 登录数据库(默认登录 sys 租户)进行创建业务租户等操作。

mysql -h10.186.58.87 -P2881 -uroot -p'OceanBase_123#' -Doceanbase -A
show full processlist;

主备架构

2.1 单机版主备租户简述

OceanBase 单机版支持主备租户架构,并采用异步方式做数据同步。由于 OceanBase 集群支持部署多个业务租户,所以主备租户架构有三种部署方式:

  1. 集群中仅有主租户或备租户

    • 典型场景,适用于两地容灾等多种业务场景

  1. 集群中既有主租户又有备租户

    • 适用于两地多写(容灾)场景

  1. 主租户和备租户在同一个集群中

    • 适用于业务升级(保留数据镜像)场景

2.2 单机版主备租户部署

本章以经典架构(集群中仅有主租户或备租户)为例进行部署,部署方式使用相对简便的 OCP 社区版云平台进行部署。

2.2.1 部署 OCP 社区版

使用 OBD 白屏工具部署 OCP 社区版,具体步骤略。

2.2.2 添加主备主机

OCP 社区版部署完成后,登录到 OCP Web 控制台,添加 2 台主备服务器。

2.2.3 安装两个集群

上传需要部署的 OceanBase 数据库安装包到 OCP 中,需要上传的包如下(具体版本以实际为准):

  • oceanbase-ce-utils-4.2.2.0-100000192024011915.el7.x86_64.rpm

  • oceanbase-ce-libs-4.2.2.0-100000192024011915.el7.x86_64.rpm

  • oceanbase-ce-4.2.2.0-100000192024011915.el7.x86_64.rpm

安装包上传完成后,分别创建 2 个单机集中式集群。

2.2.4 创建主备租户

第一步,集群 1 中创建示例主租户 tmysql。

第二步,集群 2 中创建实例备租户 tmysql。

2.2.5 数据同步验证

安装完成后可通过 OCP - 租户 - 拓扑图 界面验证主备关系,查看同步延时。

业务数据写入验证如下:

  • 主库写入数据。

  • 备库查看数据。

  • 备库同步延时查看(需要使用备租户所在集群的 sys 租户)。
MySQL [oceanbase]> SELECT TENANT_NAME, TENANT_ID, TENANT_ROLE, SCN_TO_TIMESTAMP(SYNC_SCN),NOW()  FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'tmysql';
+-------------+-----------+-------------+----------------------------+---------------------+
| TENANT_NAME | TENANT_ID | TENANT_ROLE | SCN_TO_TIMESTAMP(SYNC_SCN) | NOW()               |
+-------------+-----------+-------------+----------------------------+---------------------+
| tmysql      |      1004 | STANDBY     | 2024-02-23 17:07:06.028739 | 2024-02-23 17:07:06 |
+-------------+-----------+-------------+----------------------------+---------------------+
1 row in set (0.02 sec)

2.2.6 故障切换验证

测试 OceanBase 单机版主备租户模式的高可用能力,检查是否支持故障转移。

  • 主库 kill 前状态,tmysql 租户主角色在集群 singlecluster 上。

  • 主库 kill 后状态,异步同步链路中断。

  • 通过手工进行容灾切换的方式进行故障转移。

  • 手工容灾切换后,tmysql 租户主角色切换到集群 singleClusterSlave。

对比 MySQL 单机版

校正性能基准

3.1 测试命令

本章测试目的是在获取测试服务器 CPU、磁盘基准性能的情况下,对 OceanBase 4.2.2 单机(社区)版和 MySQL 8.0.35 单机(社区)版数据库性能对比测试环境和命令如下。

注意:为减少不同服务器之间误差,本次测试 MySQL 和 OB 数据库都在同一台服务器上进行测试,测试交替进行,MySQL 测试完毕后就关闭 mysqld 服务,启动 OB 数据库进行测试。

3.2 测试机基准测试

3.2.1 磁盘 FIO 测试

使用 Fio 工具测试服务器的磁盘性能指标如下。

  • 4K seq read

    • IOPS: 4975
  • 4K seq write

    • IOPS: 3919
  • 4K rand read

    • IOPS: 4768
  • 4k rand write

    • IOPS: 3074
# 4k seq read
[root@10-186-58-85 disktest]# fio -filename=/data/disktest/file -direct=1 -iodepth 1 -thread -ioengine=psync -bs=4k -size=10G -numjobs=30 -runtime=60 -group_reporting -name=iotest4kW -rw=read

fio-3.7
...
   iops        : min= 3822, max= 5786, avg=4975.06, stdev=262.95, samples=3591
...

# 4K seq write
[root@10-186-58-85 disktest]# fio -filename=/data/disktest/file -direct=1 -iodepth 1 -thread -ioengine=psync -bs=4k -size=10G -numjobs=30 -runtime=60 -group_reporting -name=iotest4kW -rw=write
...
   iops        : min= 2370, max= 5004, avg=3919.07, stdev=481.46, samples=3577
...

# 4K rand read
[root@10-186-58-85 data]# fio -filename=/data/disktest/file -direct=1 -iodepth 1 -thread -ioengine=psync -bs=4k -size=10G -numjobs=30 -runtime=60 -group_reporting -name=iotest4kW -rw=randread
...
   iops        : min= 3746, max= 5390, avg=4768.96, stdev=259.29, samples=3583
...

# 4K rand write
[root@10-186-58-85 data]# fio -filename=/data/disktest/file -direct=1 -iodepth 1 -thread -ioengine=psync -bs=4k -size=10G -numjobs=30 -runtime=60 -group_reporting -name=iotest4kW -rw=randwrite
...
   iops        : min=  784, max= 4416, avg=3074.03, stdev=636.20, samples=3574
...

3.2.2 CPU 测试

使用 Sysbench 工具测试服务器的 CPU 性能指标如下。

[root@10-186-58-85 ~]# /root/sysbench-1.0.20/src/sysbench cpu --time=60 --threads=4 --report-interval=2 run
...
CPU speed:
    events per second: 16316.69

General statistics:
    total time:                          60.0011s
    total number of events:              979033

Latency (ms):
         min:                                    0.23
         avg:                                    0.24
         max:                                   40.26
         95th percentile:                        0.25
         sum:                               239493.26

Threads fairness:
    events (avg/stddev):           244758.2500/1500.12
    execution time (avg/stddev):   59.8733/0.01

3.3 4c8g 对比测试结果

同一服务器(配置为 4c8g)下测试 OB 和 MySQL 单机版的对比结果。

通过上述测试,在校准测试服务器性能偏差的情况下,对比 OceanBase 单机版和 MySQL 单机版的测试结果结论如下:

低并发场景,OB 单机版性能比 MySQL 单机版低 50% 左右。

3.4 12c16g 对比测试结果

同一服务器(扩容虚机配置为 12c16g)下测试 OB 和 MySQL 单机版的对比结果。

通过上述测试,在校准测试服务器性能偏差的情况下,对比 OceanBase单机版和 MySQL 单机版的测试结果结论如下

混合读写场景,OB 单机版性能与 MySQL 单机版持平(虚拟机多次测试结果上下差 ±2000 左右,所以该场景 OB 与 MySQL 的性能结果相差不大)。

纯写场景,OB 单机版性能与 MySQL 单机版略高 15% 左右。

对比 OBD 自带测试工具

OBD test 命令可以一键进行 sysbench 测试,原理上还是需要调用 sysbench 测试工具的 bin 文件和 LUA Scripts,仅在最外层包装了一层 Python 脚本进行调用,调用文件存储在:/oceanbase-all-in-one/obd/usr/obd/plugins/sysbench/4.0.0.0/run_test.py。

4.1 测试命令

4.2 测试结果

使用 OBD test sysbench 与 直接使用 sysbench 测试 OceanBase 单机版结果差不多,部分测试结果如下:

OB 单机版资源配置

5.1 单机版集群配置巡检

本节适用于集群做 Sysbench 测试前,对单机版集群的资源规格和集群配置等做一轮巡检,已提供更好的性能表现。

在部署 OceanBase 单机版集群之后,可以使用 obdiag (OceanBase Diagnose )工具对部署好的集群巡检,步骤如下。

5.1.1 安装 obdiag 工具

Obdiag 工具在 OBD ALL-IN-ONE 包中已提供,可直接使用 obd 进行安装。

cd ~/oceanbase-all-in-one/rpms/
obd mirror clone oceanbase-diagnostic-tool-1.6.0-22024020410.el7.x86_64.rpm
obd obdiag deploy

5.1.2 巡检集群输出报告

odb obdiag check <cluster_name>
# 巡检正常完成,会有如下提示:Check observer finished. For more details, please run cmd' cat ./check_report//check_report_observer_2024-02-27-14-16-19.table '
  • 直接复制命令,粘贴执行即可查看配置建议。
[root@10-186-58-75 oceanbase-diagnostic-tool]# cat ./check_report//check_report_observer_2024-02-27-14-16-19.table
+----------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                    fail-tasks-report                                                                     |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
|                    task                   | task_report                                                                                                  |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
| sysbench.sysbench_free_test_network_speed | [fail] [remote:10.186.58.86] network_speed is  and the type is <class 'str'>, not int or float ordecimal !   |
+-------------------------------------------+--------------------------------------------------------------------------------------------------------------+
+----------------------------------------------------------------------------------------------------------------------------------------+
|                                                         critical-tasks-report                                                          |
+-------------------------------------------+--------------------------------------------------------------------------------------------+
|                    task                   | task_report                                                                                |
+-------------------------------------------+--------------------------------------------------------------------------------------------+
|   sysbench.sysbench_free_test_cpu_count   | [critical] [remote:10.186.58.86] cpu_count/os_cpu_count is 8%,is not between 80 and 100    |
|  sysbench.sysbench_free_test_memory_limit | [critical] [remote:10.186.58.86] memory_limit/os_memory is 26%,is not between 80 and 100   |
| sysbench.sysbench_test_cluster_parameters | [critical] [cluster:obcluster] cluster's enable_perf_event is true , need to change False  |
+-------------------------------------------+--------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                warning-tasks-report                                                                                               |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                     task                     | task_report                                                                                                                                                        |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|    sysbench.sysbench_free_test_cpu_count     | [warning] [cluster:obcluster] cpu_count is 2 , need to calculate the relationship between cpu_count and the number of system CPUs                                  |
| sysbench.sysbench_test_cluster_datafile_size | [warning] [remote:10.186.58.86] When the data disk and log disk are on the same disk, the log disk needs to occupy more than 30% of the disk space. now it is 11%  |
|                                              | [warning] [remote:10.186.58.86] When the data disk and log disk are on the same disk, the data disk needs to occupy more than 60% of the disk space. now it is 5%  |
| sysbench.sysbench_test_cluster_log_disk_size | [warning] [cluster:obcluster] log_disk_size <20G tenant: trenzy . log_disk_size need >20G                                                                          |
| sysbench.sysbench_test_tenant_cpu_parameters | [warning] [cluster:obcluster] cpu_count is 2. the min_cpu of tenant should cpu_count/2 ~ cpu_count. tenant: sys,trenzy need check                                  |
|                                              | [warning] [cluster:obcluster] the MAX_IOPS of tenant should max_cpu * 10000 ~ max_cpu * 1000000 .  tenant: trenzy need check                                       |
|                                              | [warning] [cluster:obcluster] the MIN_IOPS of tenant should max_cpu * 10000 ~ max_cpu * 1000000 .  tenant: trenzy need check                                       |
|                                              | [warning] [cluster:obcluster] cpu_count is 2. the max_cpu of tenant should cpu_count/2 ~ cpu_count. tenant: sys,trenzy need check                                  |
| sysbench.sysbench_test_tenant_log_disk_size  | [warning] [cluster:obcluster] log_disk_size <20G tenant: trenzy . log_disk_size need >20G                                                                          |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                  all-tasks-report                                                                                                 |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                     task                     | task_report                                                                                                                                                        |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|    sysbench.sysbench_free_test_cpu_count     | [critical] [remote:10.186.58.86] cpu_count/os_cpu_count is 8%,is not between 80 and 100                                                                            |
|                                              | [warning] [cluster:obcluster] cpu_count is 2 , need to calculate the relationship between cpu_count and the number of system CPUs                                  |
|   sysbench.sysbench_free_test_memory_limit   | [critical] [remote:10.186.58.86] memory_limit/os_memory is 26%,is not between 80 and 100                                                                           |
|  sysbench.sysbench_free_test_network_speed   | [fail] [remote:10.186.58.86] network_speed is  and the type is <class 'str'>, not int or float ordecimal !                                                         |
| sysbench.sysbench_test_cluster_datafile_size | [warning] [remote:10.186.58.86] When the data disk and log disk are on the same disk, the log disk needs to occupy more than 30% of the disk space. now it is 11%  |
|                                              | [warning] [remote:10.186.58.86] When the data disk and log disk are on the same disk, the data disk needs to occupy more than 60% of the disk space. now it is 5%  |
| sysbench.sysbench_test_cluster_log_disk_size | [warning] [cluster:obcluster] log_disk_size <20G tenant: trenzy . log_disk_size need >20G                                                                          |
|  sysbench.sysbench_test_cluster_parameters   | [critical] [cluster:obcluster] cluster's enable_perf_event is true , need to change False                                                                          |
| sysbench.sysbench_test_cpu_quota_concurrency | all pass                                                                                                                                                           |
|       sysbench.sysbench_test_log_level       | all pass                                                                                                                                                           |
| sysbench.sysbench_test_sql_net_thread_count  | all pass                                                                                                                                                           |
| sysbench.sysbench_test_tenant_cpu_parameters | [warning] [cluster:obcluster] cpu_count is 2. the min_cpu of tenant should cpu_count/2 ~ cpu_count. tenant: sys,trenzy need check                                  |
|                                              | [warning] [cluster:obcluster] the MAX_IOPS of tenant should max_cpu * 10000 ~ max_cpu * 1000000 .  tenant: trenzy need check                                       |
|                                              | [warning] [cluster:obcluster] the MIN_IOPS of tenant should max_cpu * 10000 ~ max_cpu * 1000000 .  tenant: trenzy need check                                       |
|                                              | [warning] [cluster:obcluster] cpu_count is 2. the max_cpu of tenant should cpu_count/2 ~ cpu_count. tenant: sys,trenzy need check                                  |
| sysbench.sysbench_test_tenant_log_disk_size  | [warning] [cluster:obcluster] log_disk_size <20G tenant: trenzy . log_disk_size need >20G                                                                          |
|  sysbench.sysbench_test_tenant_primary_zone  | all pass                                                                                                                                                           |
+----------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+

5.2 最低稳定运行环境

经过测试,OceanBase 单机版最少资源规格稳定运行所需的环境如下。

  • 服务器规格

    • CPU 2C,内存 5G(确保可用内存大于 4G),磁盘 100G
  • 系统租户规格

    • CPU 1G,内存 2G
  • 业务租户规格

    • CPU 1G,内存 1G
  • 集群配置文件

# cat min-2c4g.yaml
user:
    username: admin
    password: OceanBase_123#
    port: 22
oceanbase-ce:
  servers:
    - 10.186.56.101
  global:
    home_path: /home/admin/observer
    data_dir: /data/1
    redo_dir: /data/log1
    devname: eth0
    mysql_port: 2881
    rpc_port: 2882
    zone: zone1
    cluster_id: 1
    memory_limit: 4G
    system_memory: 1G
    datafile_size: 10G
    datafile_next: 2G
    datafile_maxsize: 20G
    log_disk_size: 20G
    cpu_count: 2
    production_mode: false
    enable_syslog_wf: false
    enable_syslog_recycle: true
    max_syslog_file_count: 4
    __min_full_resource_pool_memory: 1073741824
    root_password: OceanBase_123#

5.2.1 最低运行环境下启动 OB

部署的Linux服务器规格如下

[root@10-186-56-101 admin]# grep process /proc/cpuinfo
processor        : 0
processor        : 1

[root@10-186-56-101 admin]# free -m
              total        used        free      shared  buff/cache   available
Mem:           4797        2624         979          16        1194        1917
Swap:             0           0           0

[root@10-186-56-101 admin]# ps -ef | grep obs
admin     2636     1 29 07:25 ?        00:08:29 /home/admin/observer/bin/observer -r 10.186.56.101:2882:2881 -p 2881 -P 2882 -z zone1 -c 1 -d /data/1 -i eth0 -o __min_full_resource_pool_memory=1073741824,memory_limit=4G,system_memory=1G,datafile_size=10G,datafile_next=2G,datafile_maxsize=20G,log_disk_size=20G,cpu_count=2,enable_syslog_wf=False,enable_syslog_recycle=True,max_syslog_file_count=4

5.2.2 最低运行环境下 Sysbench 持续测试

[root@10-186-58-75 example]# sysbench /root/sysbench-1.0.20/src/lua/oltp_read_write.lua --tables=5 --table_size=1000 --mysql-host=10.186.56.101 --mysql-port=2881 --mysql-user='root@trenzy' --mysql-password='OceanBase_123#' --mysql-db=sbtest --report-interval=2 --time=3600 --threads=1 run
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Report intermediate results every 2 second(s)
Initializing random number generator from current time

Initializing worker threads...

Threads started!

[ 2s ] thds: 1 tps: 37.42 qps: 749.45 (r/w/o: 524.42/149.69/75.34) lat (ms,95%): 42.61 err/s: 0.00 reconn/s: 0.00
...
[ 342s ] thds: 1 tps: 60.50 qps: 1215.48 (r/w/o: 851.48/243.00/121.00) lat (ms,95%): 24.38 err/s: 0.00 reconn/s: 0.00
[ 344s ] thds: 1 tps: 58.01 qps: 1159.20 (r/w/o: 812.14/231.04/116.02) lat (ms,95%): 23.95 err/s: 0.00 reconn/s: 0.00

注意:

  • 业务规格为 1c1g 情况下,持续写入很容易打满内存。报如下错误,但不影响 observer 运行。
  • 可以调整 alter system set memstore\_limit\_percentage=80; 将内存适度调大。
FATAL: mysql_stmt_execute() returned error 4013 (No memory or reach tenant memory limit) for query 'SELECT c FROM sbtest4 WHERE id BETWEEN ? AND ? ORDER BY c'
FATAL: `thread_run' function failed: /usr/local/share/sysbench/oltp_common.lua:432: SQL error, errno = 4013, state = 'HY001': No memory or reach tenant memory limit
FATAL: mysql_stmt_execute() returned error 4013 (No memory or reach tenant memory limit) for query 'SELECT c FROM sbtest2 WHERE id BETWEEN ? AND ? ORDER BY c'

5.3 单机版推荐参数配置

结合 Sysbench 性能压测,推荐的集群、租户的参数或变量设置如下(适应于性能要求较高的测试环境)。

  • 集群参数配置
# 默认 2G,可创建 unit 的最小内存阈值,若不设置创建 1G 内存规格的 unit 将失败。
alter system set __min_full_resource_pool_memory=1073741824;

# 默认 5s,设置查询执行时间的阈值。超过时间的请求可能被暂停,暂停后自动被判断为大查询,执行大查询调度策略
alter system set large_query_threshold='600s';

# 默认 true,是否开启审计日志;开发或性能要求高的场景可关闭,生产环境需开启
alter system set enable_sql_audit=false;

# 默认 true,是否开启信息采集;开发或性能要求高的场景可关闭,生产环境需开启
alter system set enable_perf_event=false;

# 默认 true,是否开启 Trace Log 功能
alter system set enable_record_trace_log=false;

# 默认 WDIAG,系统日志的日志级别
alter system set syslog_level='INFO';
  • 业务租户参数配置
# 默认 false,是否启用批处理功能的成组执行优化
alter system set ob_enable_batched_multi_statement=true;

# 默认 false,用于对日志传输是否使用压缩,建议开启减少网卡压力
alter system set log_transport_compress_all=true;
  • 业务租户变量配置
# 默认 MANUAL,用于设置并行度选择策略。
set global parallel_degree_policy=AUTO;

# 默认 5,SQL 执行的租户内存百分比限制
set global ob_sql_work_area_percentage=20; 

# 默认 10000000,设置 SQL 最大执行时间,单位是微秒
set global ob_query_timeout=13888000000;

# 默认 16777216,设置最大网络包大小,单位是 Byte
set global max_allowed_packet=41943040;

附件

MySQL 配置文件

章节三对比测试中,用到的 MySQL 8.0.35 配置文件如下。

[mysql]
default-character-set = utf8mb4
user         = root
password =

[mysqld]
# Basic Settings
server-id = 1019938001
port = 8001
pid-file = mysqld.pid
socket =        mysqld.sock
mysqlx_socket = mysqldx.sock
character_set_server =        utf8mb4
default_storage_engine = InnoDB
lower_case_table_names = 1
skip_name_resolve = 1
skip_external_locking =        1
skip_slave_start =        1
basedir = /data/mysql/8001/base
datadir = /data/mysql/8001/data
tmpdir =  /data/mysql/8001/tmp

# P_S Settings
performance-schema-instrument='wait/lock/metadata/sql/mdl=ON'

# Session Memory Settins
join_buffer_size = 2M
sort_buffer_size = 2M
tmp_table_size = 8M
max_heap_table_size = 8M
max_allowed_packet = 128M

# Global Memory and Cache Settings
temptable_max_ram = 1G
open_files_limit =  65535
max_connections = 1024
table_open_cache = 2048

# InnoDB Settings
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:12M:autoextend
innodb_buffer_pool_instances = 1
innodb_file_per_table = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_flush_log_at_trx_commit = 1
innodb_io_capacity = 2000
innodb_io_capacity_max = 10000
innodb_flush_method = O_DIRECT
innodb_strict_mode = 1
innodb_flush_neighbors = 1
innodb_page_cleaners = 8
innodb_purge_threads = 8
innodb_log_file_size = 1024M
innodb_log_buffer_size = 16777216
innodb_print_all_deadlocks =  1
innodb_sort_buffer_size = 67108864

# Log Settings
log_error = mysql-error.log
log_bin = mysql-bin.log
slow_query_log_file = mysql-slow.log
relay_log        = mysql-relay.log
log_slave_updates        = 1
sync_binlog =         1
relay_log_recovery = 1
binlog_format         = row
binlog_expire_logs_seconds = 2592000
slow_query_log = 1
long_query_time = 3
log_slow_admin_statements = 1
log_slow_slave_statements = 1

# Replication Settings
slave_skip_errors = ddl_exist_errors
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
enforce_gtid_consistency = 1
binlog_gtid_simple_recovery = 1
binlog_rows_query_log_events = 1
slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 8
slave_preserve_commit_order = 1
binlog_group_commit_sync_delay=10000
binlog_group_commit_sync_no_delay_count=32

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
OceanBase社区版 手动部署集群(单机版) 切换到admin用户后,分别安装oceanbase-ce、oceanbase-ce-libs、obclient、obproxy-ce RPM包,默认安装到/home/admin/oceanbase和obproxy-4.1.0.0目录下。-r 参数中指定observer的地址和端口,多台用逗号分隔, -p 指定端口,-c 指定 dbproxy 集群名,这里和oceanbase集群采用了不同名称,以便区分。通过obclient登录到observer上,用户名root,默认密码为空。 阅读详情

相关推荐

OceanBase:02-单机部署(生产环境)

OceanBase:单机部署(生产环境)

m0_37559973的博客 2574

OceanBase简介及其与MySQL的比较

OceanBase是阿里巴巴和蚂蚁金服完全自主研发的通用的分布式关系型数据库,定位为商用企业级数据库。OceanBase能提供金融级别的可靠性,目前主要应用用于金融行业,同时也适用于非金融行业场景。它融合传统关系数据库和分布式系统的优势,利用普通的PC服务器组成数据库集群,拥有出色的线性扩展性。

Hopefully Sky的博客 5万+

在MacBook Pro上跑OceanBase 4.2.1社区版:Docker部署实测与性能初探

本文详细介绍了在MacBook Pro上通过Docker轻量化部署OceanBase 4.2.1社区版的完整流程,包括环境配置、参数调优、常见问题解决及性能测试。针对开发者资源受限的场景,提供了ARM架构适配方案和性能优化建议,帮助用户在本地高效运行分布式数据库。

weixin_30296405的博客 112

OceanBase详解

OceanBase是阿里开发的分布式关系型(SQL)数据库,其目标是支持数百TB的数据量以及数十万TPS、数百万QPS的访问量,无论是数据量还是访问量,即使采用非常昂贵的小型机甚至是大型机,单台关系数据库系统都无法承受。 案例:OceanBase分布式关系数据库渡过了一个成功的双十一:支持了支付宝核心的交易、支付、会员和账务等,并且创造了新的纪录:交易创建17.5万笔/秒、交易支付12万笔/秒、全天累计支付10.5亿笔 1、特性 1.1、高扩展性 传统关系型数据库,比如Oracle或者MySQL功能已经很完

qq_22162093的博客 3万+

【信息科学与工程学】计算机科学与自动化——第一百九十八篇 高并发高可用的知识点01

以上补充约 110 行,涵盖分布式协调、服务网格细节、数据库高级特性、性能分析工具、混沌工程、安全渗透、合规审计、研发效能、新兴技术、架构模式、实用工具及经典论文。涵盖数据库索引与锁、NoSQL、前端性能、安全攻防、压测工具深入、监控深入、云原生存储、服务治理扩展、代码质量、DevOps 文化、行业标准、软技能及未来趋势。好的,继续补充更多高并发、高可用、高可靠的知识与技术,涵盖更深层的数据库内部机制、分布式事务、服务治理、运维自动化、安全与前沿技术等领域。

weixin_49199313的博客 730

【信息科学与工程学】【解决方案体系】【系统工程】 第三十五篇 AI + ICT + 云计算 + 网络解决方案​ 的软件配置清单01

AI + ICT + 云计算 + 网络解决方案​ 的软件配置清单。需要说明:结合当前主流通用 CAE、数学建模、AI 框架、云原生与网络仿真工具整理出的推荐软件栈。软件 / 平台功能说明Kubernetes (K8s)​容器编排,承载 AI 训练、仿真任务调度、微服务化网络功能(CNF)OpenStack / 云管平台​私有云 IaaS 底座,提供虚拟机、GPU 算力、VPC 网络Slurm / Altair PBS​HPC 集群作业调度,支撑大规模电磁 / CFD / 光子仿真Docker / Singu

weixin_49199313的博客 404

一文讲透 OceanBase 单机版:架构介绍、部署流程、性能测试、MySQL对比、资源配置等等...

引言OceanBase 单机集中式集群(即单机版,后文不再称“单机集中式集群”)是OceanBase 推出的极简数据库架构,区别于分布式集群架构,单机版无多副本和扩缩容能力,适用于开发测试环境及数据安全性要求不高的业务系统。OceanBase 社区版和企业版都支持单机版部署,相关区别如下。主备集群: OceanBase v...

cnzzs的博客 1813

双目视觉三维重构(一)————简介

优快云中关于立三维重构的介绍层出不穷,CNKI中也有各类综述对三维重构进行总结,撰写这篇博客仅作为本人对该类博客、论文的总结学习,加深自身学习的印象、作为学习的笔记。如有错误的地方,欢迎指正。   1、三维重构 1.1、三维重构到底是什么?   首先要了解立体匹配算法,首先要知道立体匹配算法主要具体应用于什么方向。 三维重构又被称为三维重建,百度百科中对它的定义为:指对三维物体建立适合...

qq_39634612的博客 1万+

深入讲解 OceanBase 单机版

为大家整体介绍OceanBase单机版的架构、部署流程、性能测试、MySQL对吧、资源配置等。

OceanBase分布式数据库的博客 3757

达梦7实时主备集群

达梦7实时主备配置实时主备数据环境说明配置主库配置 dm.ini配置dmmal.ini配置dmarch.ini配置dmwatcher.ini配置dmwatcher.ini以mount方式启动主库设置OGUID修改数据库为primary模式配置备库 在服务器部署过程中,通常搭建有数据库主备集群,用于防备数据库服务器产生问题影响数据正常,在此,我们分享一下在虚拟机环境中模拟搭建实时主备的数据守护模式。 在搭建环境之前,需用户确认主备DM7的数据库已安装完成,且版本一致,同时还应注意各实例所在主机的操作系统位数、

g360382的博客 1022

【SoloPi】SoloPi使用2-功能使用,录制回放

Soloπ是什么 Soloπ是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。 录制回放功能 Soloπ拥有录制操作的能力,用户只需要通过Soloπ执行用例步骤,Soloπ就能够将用户的操作记录下来,并且支持在各个设备上进行回放,这一切都能够在手机上独立完成。 ...

q_Catherine的博客 5828

OceanBase—02(实战篇——Docker部署OB集群与多客户端连接效率对比)

本文详细介绍了使用Docker部署OceanBase集群的实战步骤,包括环境准备、集群配置优化以及多客户端连接效率对比测试。通过Docker Compose简化部署流程,并对比分析了ob-mysql、OBClient、DBeaver和ODC等客户端工具的性能差异,为生产环境选型提供实用建议。

weixin_30430169的博客 417

1. Klipper从安装到运行

本文记录Klipper固件从安装,配置到运行的详细过程

weixin_42098934的博客 1万+

AllData国产化适配实战:鲲鹏海光麒麟欧拉与OceanBase

随着信创产业加速落地,如何让大数据平台在国产芯片和操作系统上稳定运行,已成为企业数字化建设的核心挑战。国产化适配不仅是替换底层基础设施,更需理解ARM与x86架构差异、操作系统安全机制、数据库方言兼容等关键技术问题。以开源数据底座AllData为例,其基于微服务与容器化架构,依赖Flink、Spark等组件,在迁移至鲲鹏、海光、银河麒麟、openEuler及OceanBase环境时,通过依赖架构调整、驱动优化、SQL兼容性改造和全链路联调,能够实现无业务逻辑修改的平滑运行。该方案适用于政务、金融、能源等数据

weixin_34280237的博客 154

小米手机Magisk解锁与Root完整指南:从Bootloader到模块管理

Android系统Root权限获取是设备深度定制的核心技术之一,其核心原理在于通过修改系统启动流程获取超级用户权限。Systemless Root技术通过动态挂载修改,在不触碰系统分区的前提下实现功能注入,既保证了系统完整性,又能绕过完整性检测。这一技术为设备带来了极高的可定制性,用户可以通过模块化方式增强系统功能、修改UI界面或启用隐藏特性。在小米手机生态中,由于官方提供了完整的Bootloader解锁通道,结合Magisk的无系统修改Root方案,使得安全可控的深度定制成为可能。本文聚焦于Bootloa

weixin_29164185的博客 333

国产化软件设计:遵循信创要求,助力信息技术自主创新

支持国产操作系统、CPU、数据库和中间件。确保网络通信的身份鉴别、数据传输机密性和完整性。实现应用和数据层的身份鉴别、数据传输机密性完整性、数据存储机密性完整性。依托法院密码服务平台提供的商用密码能力。

qq_41186565的博客 3372

国产数据库核心指标横评:兼容性、高可用、性能谁更能打?

作为信息系统的核心组件,数据库不仅承载着海量数据的存储与管理任务,更直接影响到业务系统的稳定性、响应效率和长期可扩展性。若新数据库支持多语法兼容能力,尤其是对Oracle、MySQL等主流数据库语法的高度适配,则可大幅降低代码改造成本,实现平滑过渡,减少停机时间与潜在风险。一个合格的企业级数据库应具备完善的访问控制机制、加密传输与存储功能、细粒度审计日志,并通过国家相关权威机构的安全认证,满足不同行业的合规要求。:提供主备架构与集群方案,具备基本的容灾能力,但在极端异常条件下,恢复时间略长于行业领先水平。

jysjfxs的博客 859

YOLOv11模型改进-模块-引入空间池化模块StripPooling 解决遮挡、小目标

本文介绍了一种新的空间池化策略,称为,用于场景解析。结构:包括两个平行路径,分别进行水平和垂直方向的条带池化,然后通过1D卷积层进行特征调整。:结合了条带池化和传统的空间池化,分别用于捕捉长距离和短距离的依赖关系。作用捕捉长距离依赖:通过长条形的池化窗口,有效捕捉分布离散的区域之间的关系。避免不相关信息干扰:窄条形的池化窗口有助于捕捉局部上下文,防止不相关区域干扰标签预测。提高场景解析性能:在多个基准数据集上,证明了这种方法能够显著提升场景解析的效果。

qq_64693987的博客 4204

oceanBase数据库基础知识

OceanBase数据库基础概念,执行计划分析等

qq_54961709的博客 4953

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OceanBase 数据库入门知识

OceanBase 是一款阿里巴巴集团开发的高性能、高可用、高扩展性的分布式关系型数据库。它采用了分布式架构,支持大规模数据存储和高并发访问,能够满足企业级应用的需求。本文将介绍如何下载、安装和使用 OceanBase 数据库,并提供详细的解释和代码示例。本文介绍了如何下载、安装和使用 OceanBase 数据库。首先,我们需要确保计算机满足最低系统要求。然后,按照官方提供的安装步骤进行操作即可。在安装过程中,需要注意选择正确的安装类型和路径,配置数据库的端口号、管理员账户和密码等信息。

我是程序员Amin,关注我,带你学习有趣的计算机知识 4433

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

万字长文:OceanBase 保姆级教程详解

目前OceanBase已经逐渐成熟,并展现出强大的实力,越来越多的公司选择从Mysql迁移到OceanBase,并且该项目在github上的star已经来到了7k+,那么他究竟有什么魔力让越来越的公司去选择他,下面将为大家揭晓答案!如果对以上的内容有疑问或者想交流可在评论区留下您的看法。

qq_28754027的博客 1万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

OceanBase详解(详解OceanBase特性)

OceanBase是阿里开发的分布式关系型(SQL)数据库,其目标是支持数百TB的数据量以及数十万TPS、数百万QPS的访问量,无论是数据量还是访问量,即使采用非常昂贵的小型机甚至是大型机,单台关系数据库系统都无法承受。 OceanBase案例:OceanBase分布式关系数据库渡过了一个成功的双十一:支持了支付宝核心的交易、支付、会员和账务等,并且创造了新的纪录:交易创建17.5万笔/秒、交易支付12万笔/秒、全天累计支付11.5亿笔

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 2884

阿里巴巴OceanBase介绍

OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库,始创于2010年。是全球唯一在 TPC-C 和 TPC-H 测试上都刷新了世界纪录的国产原生分布式数据库。2010年,创始人阳振坤加入阿里巴巴,OceanBase 同年诞生。2019年,TPC-C 6088 万 tpmC 登顶榜首,打破 Oracle 保持 9 年的世界纪录,“双 11”创造 6100 万次/秒数据库处理峰值记录。

zy08403的专栏 2858
上一篇: MySQL 重启之后无法写入数据了?
下一篇: 一文讲透 OceanBase 单机版:架构介绍、部署流程、性能测试、MySQL对比、资源配置等等
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值