作者简介:沙仟罚,成都某游戏公司大数据平台负责人,拥有10年研发经验、7年大数据经验。
1 OceanBase离 线部署
1.1 环境检查
1.1.1 硬件与操作系统准备
检查操作系统版本:
输出:
CentOS Linux release 7.9.2009 (Core)
文件系统 容量 已用 可用 已用% 挂载点
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
total used free shared buff/cache available
Mem: 62 5 22 0 34 56
Swap: 7 0 7
检查CPU:
...24-Core Processor
1.2 安装部署
1.2.1 服务器配置
hosts配置命令:
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
配置主机名称命令:
1.2.2 服务器优化
配置limits文件命令:
内容
soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576
* soft memlock unlimited
* hard memlock unlimited
配置nproc文件:
内容
* soft nproc 1048576
* hard nproc 1048576
配置sysctl文件命令:
内容
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
配置防火墙(如内网使用,且对防火墙不熟的,最好关闭防火墙)
内容
*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
重启防火墙
输出:
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
重启服务器
1.2.3 创建用户
创建admin用户并设置密码:
上传安装包至cmagent025047等3台主机 /opt/apps目录
1.2.4 数据库部署
创建相关目录:
安装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
配置环境变量
配置环境变量
内容:
/usr/local/mysql/lib/mysql:/usr/local/lib:/usr/lib:/home/admin/oceanbase/lib
1.2.5 启动OceanBase
启动Observer,只有-z zone1参数有差别,注意网卡名称em2 与实际网卡名称相符
输出内容:
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
查看端口监听情况
内容:
tcp 0 0 0.0.0.0:2881 0.0.0.0:*
tcp 0 0 0.0.0.0:2882 0.0.0.0:*
1.2.6 初始化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 |
+------------------------------+
修改密码
1.2.7 启动OBProxy
启动OBProxy
内容:
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
1.3 租户管理
1.3.1 资源管理
系统root资源管理
1.3.2 管理用户
租户root登录youxi_db数据库并创建数据库和普通用户
内容:
+-----------------------------------+
| Database |
+-----------------------------------+
| information_schema |
| dw |
+-----------------------------------+
至此普通用户bigdata创建成功,可用于业务开发了。
2 应用开发
2.1 使用jdbc进行应用开发
使用普通用户通过jdbc连接数据库做业务开发,jdbc参数配置代码如下:
2.2 使用FlinkCDC连接OB进行大数据实时数仓开发
以Kafka做数据源:
以Oceanbase做数据源做数仓第二层加工:
以OceanBase为数据写入的目的地:
数据加工并实时写入OceanBase数据库:
抽取代码后,Flink实时ETL代码如下:
代码配置化、脚本化后,支持从Kafka、MySQL、Oracle、OceanBase、MongoDB、Postgres、SQLserver、等数据源实时同步数据并加工后写入OceanBase中,OceanBase作为数据中台核心/实时数仓的雏形初步完成。
欢迎持续关注 OceanBase 技术社区,我们将不断输出技术干货内容,与千万技术人共同成长!!!
搜索🔍钉钉群(33254054),或扫描下方二维码,还可进入 OceanBase 技术答疑群,有任何技术问题在里面都能找到答案哦~