实践练习二(必选):手动部署 OceanBase 集群

实验目录:
(必选)手动部署一个 OB 单副本集群,包括一个 OBProxy 节点。
(必选)创建一个业务租户、一个业务数据库,以及一些表等。
(可选)如果单台服务器内存有32G,或者有三台服务器,改为部署一个 OB 三副本集群,包括一个 OBProxy 节点。
(可选)如果有三台服务器并且服务器内存有 32 G,可以单服务器内启动 2 个节点,实现 1-1-1 扩容到 2-2-2 。

服务器基础配置

以下以单机模拟部署3副本集群为例

系统配置

关闭防火墙和SELinux
关闭透明大页:echo never > /sys/kernel/mm/transparent_hugepage/enabled

# 修改/etc/security/limits.conf
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited

# 不便重启的环境修改root用户ulimit值
echo "ulimit -n 655350" >> /etc/profile
source /etc/profile
# 修改/etc/sysctl.conf
# for oceanbase
## 修改内核异步 I/O 限制
fs.aio-max-nr=1048576

## 网络优化
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_local_port_range = 3500 65535 
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_max_syn_backlog = 16384 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_slow_start_after_idle=0

vm.overcommit_memory=0
vm.swappiness = 0
vm.min_free_kbytes = 2097152
fs.file-max = 6573688

# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360

# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t

# sysctl -p --使配置生效

java环境

Java:部署 OCP Express 的机器上需先安装配置 Java 环境,目前仅支持 JDK1.8 版本。详细操作可参考:https://www.oceanbase.com/docs/community-obd-cn-10000000001690696

中控机软件安装

需要登录网站:https://www.ocean
base.com/softwarecenter
下载这3个安装包:oceanbase-ce、oceanbase-ce-libs、obproxy-ce
实验机器是ARM架构的,下载了arm版安装包。

# all-in-one
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/7/aarch64/oceanbase-all-in-one-4.2.2.0-100010012024022719.el7.aarch64.tar.gz
# 也可单独下载rpm包
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/observer/v4.2.2_CE_HF1/oceanbase-ce-4.2.2.0-100010012024022719.el7.aarch64.rpm
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/observer/v4.2.2_CE_HF1/oceanbase-ce-libs-4.2.2.0-100010012024022719.el7.aarch64.rpm
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/obproxy/v4.2.3_CE/obproxy-ce-4.2.3.0-3.el7.aarch64.rpm

tar zxvf oceanbase-all-in-one-4.2.2.0-100010012024022719.el7.aarch64.tar.gz
cd oceanbase-all-in-one/bin
./install.sh
# 终端输出显示如下:
#########################################################################################
 Install Finished 
=========================================================================================
Setup Environment:              source ~/.oceanbase-all-in-one/bin/env.sh 
Quick Start:                    obd demo 
Use Web Service to install:     obd web 
Use Web Service to upgrade:     obd web upgrade 
More Details:                   obd -h 
=========================================================================================
source ~/.oceanbase-all-in-one/bin/env.sh

集群部署

cd ~/.oceanbase-all-in-one/obd/usr/obd/example/
编辑部署文件:default-components.yaml

## Only need to configure when remote login is required
user:
   username: root
   password: XXX
#   key_file: your ssh-key file path if need
   port: 22
oceanbase-ce:
  servers:
    - name: server1
      ip: 192.168.111.111
    - name: server2
      ip: 192.168.111.111
    - name: server3
      ip: 192.168.111.111
  global:
    devname: enp125s0f0
    # 单个observer的最大内存使用限制(实验环境单机多实例部署,所以调小了)
    # 但不能过小,否则后续启动报错 [ERROR] OBD-2009: when production_mode is True, memory_limit can not be less then 16.0G, Please set production_mode to false
    memory_limit: 16G
    # system_memory需要合理配置
    # 否则后续启动报错 [ERROR] OBD-2010: system_memory too large. system_memory must be less than memory_limit/memory_limit_percentage(默认80%)., `system_memory` should be less than 0.75 * memory_limit/memory_limit_percentage.
    system_memory: 10G
    datafile_size: 192G
    log_disk_size: 192G
    enable_syslog_wf: false
    enable_syslog_recycle: true
    max_syslog_file_count: 0
    appname: obcluster
    ocp_meta_tenant: # The config for ocp express meta tenant
      tenant_name: ocp
      max_cpu: 1
      memory_size: 1G
      log_disk_size: 7680M    
  server1:
    mysql_port: 1881
    rpc_port: 1882
    obshell_port: 1886
    home_path: /data/observer-server-1881
    data_dir: /data/observer-data-1881
    redo_dir: /data/observer-redo-1881
    zone: zone1
  server2:
    mysql_port: 2881
    rpc_port: 2882
    obshell_port: 2886
    home_path: /data/observer-server-2881
    data_dir: /data/observer-data-2881
    redo_dir: /data/observer-redo-2881
    zone: zone2
  server3:
    mysql_port: 3881
    rpc_port: 3882
    obshell_port: 3886
    home_path: /data/observer-server-3881
    data_dir: /data/observer-data-3881
    redo_dir: /data/observer-redo-3881
    zone: zone3
obproxy-ce:
  depends:
    - oceanbase-ce
  servers:
    - 192.168.111.111
  global:
    listen_port: 2883
    prometheus_listen_port: 2884
    home_path: /data/obproxy
    enable_cluster_checkout: false
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false
obagent:
  depends:
    - oceanbase-ce
  servers:
    - name: server2
      ip: 192.168.111.111
  global:
    home_path: /data/obagent
    monagent_http_port: 28088
    mgragent_http_port: 28089
ocp-express:
  depends:
    - oceanbase-ce
    - obproxy-ce
    - obagent
  servers:
    - 192.168.111.111
  global:
    home_path: /data/ocp-express
    log_dir: /data/ocp-express-log
    memory_size: 1G
    logging_file_total_size_cap: 10G

部署:obd cluster deploy obtest -c default-components.yaml
启动:obd cluster start obtest
启动过程中,如果有报错,如下修改配置:
obd cluster edit-config obtest
obd cluster reload obtest

部署参考文档:
https:
//www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000508275
https://open.oceanbase.com/blog/8600152

测试用例

登录验证

查看自动生成的随机密码:obd cluster edit-config obtest


[root@Node1 example]# obclient -h10.1.200.54 -P2883 -uroot -p -Doceanbase -A
Enter password: 
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 2
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:21:00)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@mysqldb 10:47:  [oceanbase]> 

创建业务租户

# 查看默认租户
root@mysqldb 10:48:  [oceanbase]> select tenant_id,tenant_name,primary_zone from __all_tenant;
+-----------+-------------+--------------+
| tenant_id | tenant_name | primary_zone |
+-----------+-------------+--------------+
|         1 | sys         | RANDOM       |
+-----------+-------------+--------------+
1 row in set (0.007 sec)

# 创建新的资源规格UNIT1
root@mysqldb 10:54:  [oceanbase]> CREATE RESOURCE UNIT UNIT1 MAX_CPU=2,MIN_CPU=2,MEMORY_SIZE='2G',LOG_DISK_SIZE='2G';
Query OK, 0 rows affected (0.028 sec)

# 以UNIT1的资源规格创建资源池pool1(由于是单节点集群环境,所以ZONE_LIST=('zone1');假设为3节点集群,则ZONE_LIST=('zone1','zone2','zone3')。)
root@mysqldb 10:54:  [oceanbase]> CREATE RESOURCE POOL pool1 UNIT='UNIT1',UNIT_NUM=1,ZONE_LIST=('zone1');
Query OK, 0 rows affected (0.018 sec)

# 创建租户tenant1(分配pool1)
root@mysqldb 10:54:  [oceanbase]> CREATE TENANT tenant1 CHARSET='utf8mb4', ZONE_LIST=('zone1'), PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%',ob_compatibility_mode='mysql';
Query OK, 0 rows affected (25.480 sec)

# 查看已有租户
root@mysqldb 10:55:  [oceanbase]> select tenant_id,tenant_name,primary_zone from __all_tenant;
+-----------+-------------+--------------+
| tenant_id | tenant_name | primary_zone |
+-----------+-------------+--------------+
|         1 | sys         | RANDOM       |
|      1001 | META$1002   | zone1        |
|      1002 | tenant1     | zone1        |
+-----------+-------------+--------------+
3 rows in set (0.001 sec)

root@mysqldb 10:55:  [oceanbase]> 

创建业务库表

root@mysqldb 10:58:  [oceanbase]> create database dev;
Query OK, 1 row affected (0.061 sec)

root@mysqldb 10:58:  [oceanbase]> use dev
Database changed
root@mysqldb 10:58:  [dev]> create table test_tbl(id int,data varchar(50));
Query OK, 0 rows affected (0.100 sec)

root@mysqldb 10:58:  [dev]> insert into test_tbl values(1,'qwe');
Query OK, 1 row affected (0.011 sec)

root@mysqldb 10:58:  [dev]> insert into test_tbl values(2,'asd');
Query OK, 1 row affected (0.002 sec)

root@mysqldb 10:58:  [dev]> insert into test_tbl values(3,'zxc');
Query OK, 1 row affected (0.002 sec)

root@mysqldb 10:59:  [dev]> select * from test_tbl;
+------+------+
| id   | data |
+------+------+
|    1 | qwe  |
|    2 | asd  |
|    3 | zxc  |
+------+------+
3 rows in set (0.006 sec)

root@mysqldb 10:59:  [dev]>
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值