OceanBase从离线手动部署到应用开发

作者简介:沙仟罚,成都某游戏公司大数据平台负责人,拥有10年研发经验、7年大数据经验。

1 OceanBase离 线部署

1.1 环境检查

1.1.1 硬件与操作系统准备

OceanBase从离线手动部署到应用开发-每日运维

检查操作系统版本:

OceanBase从离线手动部署到应用开发-每日运维

输出:

CentOS Linux release 7.9.2009 (Core)

OceanBase从离线手动部署到应用开发-每日运维

文件系统        容量  已用  可用 已用% 挂载点

devtmpfs         32G     0   32G    0% /dev

tmpfs            32G   44K   32G    1% /dev/shm

tmpfs            32G   14M   32G    1% /run

tmpfs            32G     0   32G    0% /sys/fs/cgroup

/dev/sda2        40G   26G   12G   70% /

/dev/sda4       502G   31G  446G    7% /data

/dev/sda1       477M  144M  304M   33% /boot

cm_processes     32G  237M   32G    1% /run/cloudera-scm-agent/process

OceanBase从离线手动部署到应用开发-每日运维

OceanBase从离线手动部署到应用开发-每日运维

 total        used        free      shared  buff/cache   available

Mem:             62           5          22           0          34          56

Swap:             7           0           7 

OceanBase从离线手动部署到应用开发-每日运维

检查CPU:

OceanBase从离线手动部署到应用开发-每日运维

...24-Core Processor

1.2 安装部署

1.2.1 服务器配置

hosts配置命令:

OceanBase从离线手动部署到应用开发-每日运维

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1  localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.21.194 cmagent021194.youxiapi.com cmagent021194

192.168.21.193 cmagent021193.youxiapi.com cmagent021193

192.168.21.192 cmagent021192.youxiapi.com cmagent021192

192.168.21.17 cmagent021017.youxiapi.com cmagent021017

192.168.25.47 cmagent025047.youxiapi.com cmagent025047

配置主机名称命令:

OceanBase从离线手动部署到应用开发-每日运维

1.2.2 服务器优化

配置limits文件命令:

OceanBase从离线手动部署到应用开发-每日运维

内容

soft  nofile 1048576

*  hard  nofile 1048576

*  soft  nproc  1048576

*  hard  nproc  1048576

*  soft  memlock unlimited

*  hard  memlock unlimited 

配置nproc文件:

OceanBase从离线手动部署到应用开发-每日运维

内容

*  soft  nproc  1048576

*  hard  nproc  1048576 

配置sysctl文件命令:

OceanBase从离线手动部署到应用开发-每日运维

内容

fs.aio-max-nr = 1048576

fs.file-max = 6815744

#net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_mem = 3077271 4103031 6154542

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 16384 16777216

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

vm.swappiness = 1

vm.min_free_kbytes = 204800

vm.max_map_count = 2048000

kernel.pid_max = 819200

vm.zone_reclaim_mode = 0 

配置防火墙(如内网使用,且对防火墙不熟的,最好关闭防火墙)

OceanBase从离线手动部署到应用开发-每日运维

内容

*nat

:PREROUTING ACCEPT [101:7584]

:INPUT ACCEPT [22:924]

:OUTPUT ACCEPT [366:22236]

:POSTROUTING ACCEPT [366:22236]

COMMIT

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [12999:36600587]

-A INPUT -s 192.168.0.0/16 -p tcp -j ACCEPT

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8000:10000 -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 53278 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A INPUT -j REJECT --reject-with icmp-port-unreachable

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A INPUT -s 172.21.254.105/32 -j ACCEPT

COMMIT

重启防火墙

OceanBase从离线手动部署到应用开发-每日运维

输出:

Chain INPUT (policy ACCEPT)

target  prot opt source  destination

ACCEPT  tcp -- 192.168.0.0/16  0.0.0.0/0

ACCEPT  all -- 0.0.0.0/0  0.0.0.0/0  state RELATED,ESTABLISHED

DROP  tcp -- 0.0.0.0/0  0.0.0.0/0  tcp dpt:2881

DROP  tcp -- 0.0.0.0/0  0.0.0.0/0  tcp dpt:2882

ACCEPT  tcp -- 0.0.0.0/0  0.0.0.0/0  state NEW tcp dpts:8000:10000

ACCEPT  icmp -- 0.0.0.0/0  0.0.0.0/0

ACCEPT  all -- 0.0.0.0/0  0.0.0.0/0

ACCEPT  tcp -- 0.0.0.0/0  0.0.0.0/0  state NEW tcp dpt:53278

REJECT  all -- 0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited

REJECT  all -- 0.0.0.0/0  0.0.0.0/0  reject-with icmp-port-unreachable

ACCEPT  all -- 172.21.254.105  0.0.0.0/0

Chain FORWARD (policy ACCEPT)

target  prot opt source  destination

REJECT  all -- 0.0.0.0/0  0.0.0.0/0  reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)

target  prot opt source  destination 

重启服务器

OceanBase从离线手动部署到应用开发-每日运维

1.2.3           创建用户

创建admin用户并设置密码:

OceanBase从离线手动部署到应用开发-每日运维

上传安装包至cmagent025047等3台主机 /opt/apps目录

OceanBase从离线手动部署到应用开发-每日运维

1.2.4 数据库部署

创建相关目录:

OceanBase从离线手动部署到应用开发-每日运维

安装OceanBase

OceanBase从离线手动部署到应用开发-每日运维

内容:

/home/admin/oceanbase/store/

`-- obdemo

|-- clog -> /redo/obdemo/clog

|-- etc2 -> /redo/obdemo/etc2

|-- etc3 -> /data/obdemo/etc3

|-- ilog -> /redo/obdemo/ilog

|-- slog -> /redo/obdemo/slog

`-- sstable -> /data/obdemo/sstable

/data/obdemo

|-- etc3

`-- sstable

/redo/

`-- obdemo

|-- clog

|-- etc2

|-- ilog

`-- slog

配置环境变量

OceanBase从离线手动部署到应用开发-每日运维

配置环境变量

OceanBase从离线手动部署到应用开发-每日运维

内容:

/usr/local/mysql/lib/mysql:/usr/local/lib:/usr/lib:/home/admin/oceanbase/lib

OceanBase从离线手动部署到应用开发-每日运维

1.2.5 启动OceanBase

启动Observer,只有-z zone1参数有差别,注意网卡名称em2 与实际网卡名称相符

OceanBase从离线手动部署到应用开发-每日运维

OceanBase从离线手动部署到应用开发-每日运维

输出内容:

 devname: em2

mysql port: 2881

rpc port: 2882

zone: zone3

data_dir: /home/admin/oceanbase/store/obdemo

rs list: 192.168.25.47:2882:2881;192.168.21.192:2882:2881;192.168.21.17:2882:2881

cluster id: 20210912

appname: obdemo

optstr: memory_limit=28G,cache_wash_threshold=2G,__min_full_resource_pool_memory=268435456,system_memory=4G,memory_chunk_cache_size=128M,cpu_count=18,net_thread_count=4,datafile_size=200G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2

data_dir: /home/admin/oceanbase/store/obdemo

OceanBase从离线手动部署到应用开发-每日运维

查看端口监听情况

OceanBase从离线手动部署到应用开发-每日运维

内容:

tcp  0  0 0.0.0.0:2881  0.0.0.0:*

tcp  0  0 0.0.0.0:2882  0.0.0.0:* 

OceanBase从离线手动部署到应用开发-每日运维

1.2.6 初始化OceanBase

初始化

OceanBase从离线手动部署到应用开发-每日运维

内容:

Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (1 min 7.95 sec)

+-----------------------------+

| Database  |

+------------------------------+

| oceanbase  |

| information_schema |

| mysql  |

| SYS  |

| LBACSYS  |

| ORAAUDITOR  |

| test  |

+------------------------------+

OceanBase从离线手动部署到应用开发-每日运维

修改密码

OceanBase从离线手动部署到应用开发-每日运维

1.2.7 启动OBProxy

启动OBProxy

OceanBase从离线手动部署到应用开发-每日运维

内容:

tcp  0  0 0.0.0.0:2883  0.0.0.0:*

tcp  0  0 0.0.0.0:2884  0.0.0.0:*

连接配置OceanBase

OceanBase从离线手动部署到应用开发-每日运维

OceanBase从离线手动部署到应用开发-每日运维

1.3 租户管理

1.3.1 资源管理

系统root资源管理

OceanBase从离线手动部署到应用开发-每日运维

OceanBase从离线手动部署到应用开发-每日运维

1.3.2 管理用户

租户root登录youxi_db数据库并创建数据库和普通用户

OceanBase从离线手动部署到应用开发-每日运维

内容:

+-----------------------------------+

| Database  |

+-----------------------------------+

| information_schema  |

| dw  |

+-----------------------------------+

至此普通用户bigdata创建成功,可用于业务开发了。

2 应用开发

2.1 使用jdbc进行应用开发

使用普通用户通过jdbc连接数据库做业务开发,jdbc参数配置代码如下:

OceanBase从离线手动部署到应用开发-每日运维

2.2  使用FlinkCDC连接OB进行大数据实时数仓开发

以Kafka做数据源:

OceanBase从离线手动部署到应用开发-每日运维

以Oceanbase做数据源做数仓第二层加工:

OceanBase从离线手动部署到应用开发-每日运维

以OceanBase为数据写入的目的地:

OceanBase从离线手动部署到应用开发-每日运维

数据加工并实时写入OceanBase数据库:

OceanBase从离线手动部署到应用开发-每日运维

抽取代码后,Flink实时ETL代码如下:

OceanBase从离线手动部署到应用开发-每日运维

代码配置化、脚本化后,支持从Kafka、MySQL、Oracle、OceanBase、MongoDB、Postgres、SQLserver、等数据源实时同步数据并加工后写入OceanBase中,OceanBase作为数据中台核心/实时数仓的雏形初步完成。

欢迎持续关注 OceanBase 技术社区,我们将不断输出技术干货内容,与千万技术人共同成长!!!

搜索🔍钉钉群(33254054),或扫描下方二维码,还可进入 OceanBase 技术答疑群,有任何技术问题在里面都能找到答案哦~

OceanBase从离线手动部署到应用开发-每日运维