目录
OceanBase 数据库(OceanBase Database)是一款蚂蚁集团完全自研的企业级原生分布式数据库,在普通硬件上实现金融级高可用,首创“三地五中心”城市级故障自动无损容灾新标准,刷新 TPC-C 标准测试,单集群规模超过 1500 节点,具有云原生、强一致性、高度兼容 Oracle/MySQL 等特性。
一、体系架构
如图所示,数据服务层表示一个 OceanBase 数据库集群。该集群由三个子集群(Zone)组成,一个 Zone 由多台物理机器组成,每台物理机器称之为数据节点(OBServer 节点)。OceanBase 数据库采用 Shared-Nothing 的分布式架构,每个数据节点都是对等的。
OceanBase 数据库中存储的数据分布在一个 Zone 的多个数据节点上,其它 Zone 存放多个数据副本。如图所示的 OceanBase 数据库集群中的数据有三个副本,每个 Zone 存放一份。这三个 Zone 构成一个整体的数据库集群,为用户提供服务。
根据部署方式的不同,OceanBase 数据库可以实现各种级别容灾能力:
- 服务器(Server)级无损容灾:能够容忍单台服务器不可用,自动无损切换。
- 机房(Zone)级无损容灾:能够容忍单个机房不可用,自动无损切换。
- 地区(Region)级无损容灾:能够容忍某个城市整体不可用,自动无损切换。
当数据库集群部署在一个机房的多台服务器时,实现服务器级别容灾。当集群的服务器在一个地区的多个机房中时,能够实现机房级别容灾。当集群的服务器在多个地区的多个机房中时,能够实现地区级别容灾。
二、集群规划
角色 | 机器 | 备注 |
---|---|---|
OBD | 192.168.1.219 | 安装在中控机上的自动化部署软件 |
OBServer 节点 | 192.168.1.219 | OceanBase 数据库 Zone1 |
OBServer 节点 | 192.168.1.220 | OceanBase 数据库 Zone1 |
OBServer 节点 | 192.168.1.225 | OceanBase 数据库 Zone1 |
OBAgent | 192.168.1.[219,220,225] | OceanBase 数据库监控采集框架 |
本案例采用的是单Zone多OBserver机器模式即数据库集群部署在一个机房的多台服务器上,实现服务器级别的容灾。
三、配置要求
1.Linux操作系统
2.安装jdk
3.可用内存不少于8G(生产环境最低要求 16 GB,长期使用要求不低于 32 GB,推荐 256 GB 及以上)
4.安装目录空间不少于50G
四、部署前配置
1.配置 limits.conf
将会话级别的最大栈空间大小设置为 unlimited
,最大文件句柄数设置为 655350
,Core 文件大小设置为 unlimited。
vi /etc/security/limits.conf
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
2.配置 sysctl.conf
vi /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 = 16777216net.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 = 0
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=0vm.swappiness = 0
vm.min_free_kbytes = 2097152
#修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360#此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /oceanbase/data/core-%e-%p-%t
3.关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
4.关闭 SELinux
vi /etc/selinux/config
5.创建数据目录,修改文件所有者信息
mkdir -p /oceanbase/data
mkdir -p /oceanbase/redo
chown -R obadmin:obadmin /oceanbase
6.设置无密码 SSH 登录
ssh-keygen #一路回车
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys#复制文件到其他服务器
scp -rp ~/.ssh 192.168.1.220: #最后是英文冒号
scp -rp ~/.ssh 192.168.1.225: #最后是英文冒号
7.安装jdk
OBD所在服务器需要安装jdk。OBD默认使用/usr/bin/java命令,所以还需要配置软连接:
ln -s /home/obadmin/tools/jdk1.8.0_202/bin/java /usr/bin/java
五、解压执行安装
1.解压:tar -zxf oceanbase-all-in-one-4.1.0.0-100120230423105040.el7.x86_64.tar.gz
2.进入解压目录 oceanbase-all-in-one,执行:./bin/install.sh 安装
3.配置环境变量
source ~/.oceanbase-all-in-one/bin/env.sh
4.禁用远程仓库
obd mirror disable remote
六、集群部署
集群部署可以使用obd命令行或者obd白屏两种方法部署。
1.OBD命令行部署
(1)修改配置文件(all-components-min.yaml)
a)修改用户名和密码
b)修改机器的 IP、端口和相关目录,并配置内存相关参数及密码。
c)修改网络适配器名称
d)配置 obproxy-ce 组件并修改 IP 和 home_path
e)修改 obagent 和 ocp-express 组件的 IP 和 home_path。
(2)部署 OceanBase 集群
obd cluster deploy obtest -c conf/all-components-min.yaml
(3)启动 OceanBase 集群
obd cluster start obtest
2. OBD白屏部署
执行 obd web
命令启动白屏界面,具体参考官网配置:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000220851
七、访问数据库
1.使用obclient访问
obclient -h127.0.0.1 -P2883 -uroot -Doceanbase -A
2.使用mysql客户端访问
mysql -uroot -P2883 -h192.168.1.219 -Doceanbase -A