OceanBase(4)OceanBase日常运维
56
2022-05-07
一、OceanBase简介
OceanBase是一种原生的分布式数据库,阿里旗下很多服务都是运行于OceanBase上,比如淘宝、支付宝、天猫、花呗等,后来随着发展又有工商银行、中国移动、招商证券等金融机构开始使用OceanBase。OceanBase有以下核心特性
· 分布式:集群形式部署,支持水平扩展,在线扩容缩容方便,能自动负载均衡
· 高可用:基于Paxos协议做到数据强一致性,即便少数副本故障也不会丢失数据,服务自动恢复(RPO=0;RTO<30S)
· 多租户:按需分配实例(集群创建好了后通过命令来创建业务实例),可以对配置在线调整,CPU和内存资源可以相互隔离
· 高兼容:原生的SQL和事务引擎,兼容MySQL、Oracle(社区版暂不支持Oracle的兼容),数据可以平滑迁移
· 高性能:在真实业务系统下单表最大3200亿行,QPS 6100万次,准内存处理性能
· 低成本:X86服务器,不依赖存储设备
OceanBase可以解决MySQL集群以下痛点
二、OceanBase社区版安装部署
1、OceanBase软件包介绍
oceanbase-ce(必需):OceanBase社区版核心程序
oceanbase-ce-libs(必需):OceanBase社区版库文件
ob-deploy:自动化部署工具
obproxy:OceanBase反向代理工具,当集群数量较多时建议使用
2、下载OceanBase软件包
可通过以下3种方式获取OceanBase安装包
· 官方下载:https://open.oceanbase.com/softwareCenter/community
· Github下载:https://github.com/oceanbase/oceanbase/releases
· 阿里云Yum:https://mirrors.aliyun.com/oceanbase/OceanBase.repo
3、手动部署OceanBase三副本集群(以下操作每个节点都需要执行)
· 下载RPM包进行安装,RPM 包将被自动安装在/home/admin/oceanbase
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.1-4.el7.x86_64.rpm wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm rpm -ivh oceanbase-ce-*
· 建立admin用户并配置sudo权限
useradd admin
usermod admin -G wheel
· 建立数据目录,和使用 OBD 自动化部署不同的是这里指定了一个集群名——obdemo
#创建总目录 mkdir -p /home/admin/oceanbase/store/obdemo #创建数据和日志目录 mkdir -p /data/obdemo/{sstable,etc3} mkdir -p /redo/obdemo/{clog,ilog,slog,etc2} #创建软连接 for f in {clog,ilog,slog,etc2}; do ln -s /redo/obdemo/$f /home/admin/oceanbase/store/obdemo/$f done for f in {sstable,etc3}; do ln -s /data/obdemo/$f /home/admin/oceanbase/store/obdemo/$f done chown -R admin. /data/obdemo chown -R admin. /redo/obdemo
· 最终目录结构如下
· 启动服务(如果节点之间配置一致,启动参数里只有 -z 参数不同)
-z 选项:声明节点所属的zone,三个 zone 的三个节点就可以初始化为一个三副本集群,需要注意对应关系一定要正确
-o 选项:内存相关配置,需要注意系统可用内存不要低于memory_limit 值。如果节点内存足够(大于64G),那么可以不用额外声明 -o。
-d 选项:数据存放目录
-r 选项:节点信息
-c 选项:集群标识号,节点之间配置一个相同的号码
su - admin /home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" /home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone2 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" /home/admin/oceanbase/bin/observer -i eth0 -p 2881 -P 2882 -z zone3 -d /home/admin/oceanbase/store/obdemo -r '172.20.1.212:2882:2881;172.20.1.213:2882:2881;172.20.1.214:2882:2881' -c 20220518 -n obdemo -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2"
· 初始化集群
当 OceanBase 集群三个节点都正常启动后就可以通过2881端口连接到任一节点进行bootstrap集群初始化操作,如果初始化失败的话需要排查上一步初始化时-o所配置的参数,比如内存是否不足、cpu是否配置不够等都会导致初始化集群失败
mysql -h 172.20.1.212 -u root -P 2881 -p -c -A set session ob_query_timeout=1000000000;alter system bootstrap ZONE 'zone1' SERVER '172.20.1.212:2882', ZONE 'zone2' SERVER '172.20.1.213:2882', ZONE 'zone3' SERVER '172.20.1.214:2882' ; #大概需要30秒左右
· 修改root用户和OBProxy用户密码
mysql -h 172.20.1.212 -u root@sys -P 2881 -p -c -A alter user root identified by '123456' ; #这两部这里可以先不做,等需要进行obpxory的时候再操作,可以看后面的相关文章 #create user proxyro; # 默认 OBProxy 连接 OceanBase 集群时使用用户 proxyro 。该用户不存在,需要手动创建。 #grant select on oceanbase.* to proxyro identified by '123456' ;
发表评论
暂时没有评论,来抢沙发吧~