本文已加入 《OceanBase 4.x DBA 进阶教程》用户共建计划
https://ask.oceanbase.com/t/topic/35617370/
所有参与共建的用户,都会出现在 OceanBase 进阶教程电子书的致谢名单中,欢迎大家加入~
一、OceanBase 社区版
为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户;面向未来携手生态伙伴,共建开源开放的数据库内核和生态。
文档:
https://www.oceanbase.com/docs
二、OCP云平台部署
OceanBase 云平台(OceanBase Cloud Platform,OCP)是一款为 OceanBase 集群量身打造的企业级管理平台,兼容 OceanBase 所有主流版本。OCP 提供对 OceanBase 图形化管理能力,包括数据库及相关资源的全生命周期管理、监控告警、性能诊断、故障恢复、备份恢复等,旨在协助客户更加高效地管理 OceanBase 数据库,降低企业的IT运维成本和用户的学习成本。
https://www.oceanbase.com/docs/ocp
1、主机规划
本教程部署简化版集群 1ocp 1oms 2proxy 3zone6server 共10台主机,另外独立安装zabbix6和minio
ocp配置 16C 64G 500G
其他主机配置 8C 32G 500G
操作系统为anolis8,全部关闭防火墙
tntocp 192.168.4.100
tntoms 192.168.4.101
tntproxy1 192.168.4.102
tntproxy2 192.168.4.103
tntob1-1 192.168.4.104
tntob1-2 192.168.4.105
tntob2-1 192.168.4.106
tntob2-2 192.168.4.107
tntob3-1 192.168.4.108
tntob3-2 192.168.4.109
tntzabbix6 192.168.4.110
tntminio 192.168.4.111
tntproxy 192.168.4.99 keepalived虚拟IP
2、安装准备
下载OceanBase社区版一键安装包 (OceanBase All in One)
OceanBase 数据库一键离线安装包,包括 OceanBase 数据库和 OCP(自 V4.3.3 起包含)、obd、OBProxy、OBClient、OCP Express、Prometheus、Grafana,以及诊断和测试工具。
https://www.oceanbase.com/softwarecenter
OCP依赖仅支持 JDK1.8 版本,下载并安装 jre-8u441-linux-x64.rpm
https://www.java.com/en/download/manual.jsp
3、图形化部署OCP
所有主机关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
上传一键安装包至OCP主机、解压安装
解压
tar zxf oceanbase-all-in-one-4.3.5_bp1_20250320.el8.x86_64.tar.gz
启动obd
cd oceanbase-all-in-one/bin
source ~/.oceanbase-all-in-one/bin/env.sh
obd web install
生成网页安装URL
进入 OCP 部署向导页面
部署OCP云平台并创建全新数据库
设置集群名称
创建metaDB,我这里使用ocp主机单机部署metaDB,即OCP、数据库节点、OBProxy都是一台服务器
OCP 资源规划为20台主机
预检查无异常
部署中,等待
部署完成,记好账号密码
三、OCP云平台使用
1、登录OCP云平台
看到OCP平台初始化失败
查看异常为netstat: 未找到命令
yum install net-tools -y
所有OB主机都需要netstat!全部安装一遍
点击重启,执行成功
OCP部署成功
2、OCP操作流程
添加主机-新建集群-创建租户-创建用户-创建OBProxy集群
3、添加作为OBProxy集群和OBserver的主机
192.168.4.102-109
主机标准化
分为OBProxy和OceanBase,等待标准化完成
OBProxy标准化无异常但也需要修复一下,OceanBase标准化有8个异常,都需要修复
修复
检查透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
生效
chmod +x /etc/rc.d/rc.local
添加到开机启动
vi /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
安装python2.7
yum install python2 -y
禁用swap分区
swapoff -a
删除swap分区
/etc/fstab
安装软件
yum -y install net-tools mtr tar binutils bind-utils curl nc iproute
添加admin用户
groupadd -g 500 admin
useradd -m -u 500 -g 500 -s /bin/bash admin
id admin
关闭selinux
检查ulimit信息
/etc/security/limits.d/99-oceanbase_limits.conf
root soft nofile 655350
root hard nofile 655350
admin soft nofile 655350
admin hard nofile 655350
admin soft stack 10240
admin hard stack 10240
admin soft nproc 655360
admin hard nproc 655360
admin soft core unlimited
admin hard core unlimited
检查 clocksource 信息
echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource
时间同步
调整端口范围,保留端口
sudo sysctl net.ipv4.ip_local_port_range
vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_local_reserved_ports = 62881-63881
生效
sudo sysctl -p
python2软连接到python
sudo ln -sf /usr/bin/python2 /usr/bin/python
创建软件目录
mkdir /data/log1 -p
mkdir /data/1 -p
重新检查,修复完成
4、新建集群
新建tntob集群,3zone,每zone 2台主机,由于是实验集群,我没有开启cgroup
创建中
安装完成
5、创建租户
创建zabbix6租户
Unit规格选择S1并允许所有IP访问
创建完成
6、创建用户
在zabbix6租户中创建用户zabbixdb,先不用创建数据库,一会直接导入一个数据库
7、创建OBProxy集群
创建tntproxy集群,加入102、103两台主机
创建完成
连接到tntob集群
8、连接测试
使用adminer登陆测试一下
连接参数
mysql -h192.168.4.102 -P2883 -uroot@zabbix6#tntob -p
登录成功
OceanBase分布式数据库集群部署完毕
四、OMS迁移服务部署zabbix6数据迁移
OMS文档
https://www.oceanbase.com/docs/oms-cn
1、创建oms租户
创建oms租户作为OMS迁移服务的元数据库,需要使用租户的root用户
2、安装OMS迁移服务
下载软件包 oms_4.2.8-ce.tar.gz 上传到tntoms主机
https://www.oceanbase.com/softwarecenter
安装docker
yum install -y yum-utils
#阿里云加速源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl enable --now docker
导入镜像
docker load -i oms_4.2.8-ce.tar.gz
查看镜像名
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
reg.docker.alibaba-inc.com/oceanbase/oms feature_4.2.8_ce d56598287295 7 weeks ago 10.9GB
获取部署脚本
sudo docker run -d --net host --name oms-config-tool reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool
启动部署
mkdir /oms
bash docker_remote_deploy.sh -o /oms -i 192.168.4.101 -d reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce
安装中
****CPU****
CPU_Name(System_Name): Intel(R) Xeon(R) Silver 4309Y CPU @ 2.80GHz
Total_physical_CPU: 8
Total_core_num: 8
*****Memory******
Total_Mem: 32915048 KB
Total_Mem: 31 G
*****Disk******
Total_disk_avail: 954 G
提示:输入 <Control-C> 可退出部署
请选择部署模式:
●单地域单节点
单地域多节点
多地域
您选择的部署模式是:单地域单节点部署模式
请选择您所需要进行的任务:
●无配置文件,全新部署 OMS,从生成配置文件开始
已通过脚本[-c]选项传入参考配置文件,基于参考配置文件开始配置
开始配置元信息库,可以是 MySQL 或 OceanBase 数据库 MySQL 租户
(元信息库用于存储 OMS 运行时元数据信息)
请输入元信息数据库 IP:192.168.4.102
请输入元信息数据库端口:2883
请输入元信息数据库用户名:root@oms#tntob
请输入元信息数据库密码:***********************
请为 OMS 元数据库设置前缀
(示例:当前缀设置为 oms 时,最终库名分别为 oms_rm/oms_cm/oms_cm_hb):
您的元信息库配置如下:
{
"drc_cm_db": "_cm",
"drc_cm_heartbeat_db": "_cm_hb",
"drc_rm_db": "_rm",
"init_db": "true",
"oms_meta_host": "192.168.4.102",
"oms_meta_password": "9cb;CcrN1C3f,Xlub)rx{(#",
"oms_meta_port": "2883",
"oms_meta_user": "root@oms#tntob"
}
[y/n] 请确认配置信息[y]y
您选择的部署模式为单地域单节点部署模式
[y/n] 是否自定义组件端口号,并配置相关参数?[n]n
[y/n] 获取到您的默认 IP 地址:192.168.4.101,请确认是否需要更改?[n]n
您的 OMS 集群配置如下:
{
"cm_is_default": true,
"cm_location": 0,
"cm_nodes": [
"192.168.4.101"
],
"cm_region": "default",
"cm_region_cn": "默认地域",
"cm_server_port": "8088",
"cm_url": "http://192.168.4.101:8088",
"ghana_server_port": "8090",
"nginx_server_port": "8089",
"sshd_server_port": "2023",
"supervisor_server_port": "9000"
}
[y/n] 请确认配置信息[y]y
[y/n] 您是否需要对 OMS 历史数据进行监控?[n]n
[y/n] 是否需要开启 OMS 审计日志功能,并将审计日志写入 SLS 服务?[n]n
已加载您的所有配置项,并校验通过。
您的配置如下:
{
"apsara_audit_enable": "false",
"apsara_audit_sls_access_key": "",
"apsara_audit_sls_access_secret": "",
"apsara_audit_sls_endpoint": "",
"apsara_audit_sls_ops_site_topic": "",
"apsara_audit_sls_user_site_topic": "",
"cm_is_default": true,
"cm_location": "0",
"cm_nodes": [
"192.168.4.101"
],
"cm_region": "default",
"cm_region_cn": "默认地域",
"cm_server_port": "8088",
"cm_url": "http://192.168.4.101:8088",
"drc_cm_db": "_cm",
"drc_cm_heartbeat_db": "_cm_hb",
"drc_rm_db": "_rm",
"ghana_server_port": "8090",
"init_db": "true",
"nginx_server_port": "8089",
"oms_meta_host": "192.168.4.102",
"oms_meta_password": "9cb;CcrN1C3f,Xlub)rx{(#",
"oms_meta_port": "2883",
"oms_meta_user": "root@oms#tntob",
"sshd_server_port": "2023",
"supervisor_server_port": "9000",
"tsdb_enabled": "false",
"tsdb_password": "",
"tsdb_service": "",
"tsdb_url": "",
"tsdb_username": ""
}
[y/n] 您是否需要重新配置?[n]n
您是需要在当前执行的机器上
接下来 OMS 需要在节点 ['192.168.4.101'] 上依次执行部署脚本。
请输入节点 192.168.4.101 上预备部署 OMS 的挂载目录:[/oms/]/oms/
请您确认以下内容:
[y/n] 部署 OMS 的 [镜像名/IMAGE-ID] 是:reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce ,请确认是否正确。[y]y
[y/n] 是否需要在 OMS 容器中挂载 HTTPS 证书?[n]n
[y/n] 192.168.4.101 节点下的配置文件 config.yaml 将写在这个路径:/oms/ 下可以吗?[y]y
.......
--------------------------------------------------------------------------------
# 【结束】全部初始化步骤执行成功
--------------------------------------------------------------------------------
登录控制台,首次登陆设置密码
http://192.168.4.101:8089/
3、zabbix6安装
查看王工zabbix6文章快速部署,部署完成后迁移到OceanBase集群
https://90apt.com/2982
安装完成
4、导出zabbix6数据库结构
使用adminer导出数据库结构,不包括数据
adminer安装见后面1Panel部分
使用adminer导入到zabbix租户中
5、OMS全量迁移
在OCP中给zabbixuser用户赋予zabbix数据库全部权限
添加双方数据源
配置迁移任务
启动任务
迁移完成,进行切换
6、zabbix6切换数据库,重启服务、查看日志
配置文件修改
/etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.4.102';
$DB['PORT'] = '2883';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbixuser@zabbix6#tntob';
$DB['PASSWORD'] = 'r*h(c^rLst8F';
/etc/zabbix/zabbix_server.conf
DBHost=192.168.4.102
DBName=zabbix
DBUser=zabbixuser@zabbix6#tntob
DBPassword=r*h(c^rLst8F
DBPort=2883
重启zabbix服务
systemctl restart zabbix-server
查看日志是否有异常
/var/log/zabbix/zabbix_server.log
Unable to start Zabbix server due to unsupported MySQL database version (5.06.25).
修改OBPorxy数据版本,修改为8.0.0
再次重启zabbix服务查看日志,无异常
zabbix功能正常,采集正常
五、1Panel面板minio S3备份还原计划
1、安装docker
安装docker
yum install -y yum-utils
#阿里云加速源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
启动docker
systemctl enable --now docker
2、安装1Panel面板
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh
安装adminer web数据库管理工具
支持MySQL、MariaDB、 SQLite、PostgreSQL、Oracle (beta)、MS SQL
3、安装minio,配置S3存储
登录1Panel面板
安装minio
登录minio
创建Bucket
创建Access Keys
4、配置备份计划
创建zabbix6租户备份策略
存储目录为Bucket名称
访问域名为API的URL http://192.168.4.111:9000
在填入AK、SK,点击测试即可
立即备份
备份完成
5、进行还原测试
误删数据库
由于王工上年纪老眼昏花,不小心删除了zabbix数据库,不稳啦!
zabbix崩溃
进行租户恢复
恢复完成
创建了新的租户,将原租户改名,新租户改为原来的名,这样业务就不用动了
业务恢复了,王工又稳啦!
六、集群、租户扩缩容
1、集群扩容
添加主机-集群管理-添加OBServer、新增Zone
添加主机
OCP云平台-主机-添加主机
主机还是要按之前标准化进行环境修复,修复好再添加
再次进行标准化
OCP云平台-集群-概览-添加OBServer
一段时间后部署模式变为集群 (3-3-3)
新增Zone与之相同
2、集群缩容
理论上不能缩容,如果你非要缩,那可能得新建集群迁移数据库来变相缩容
3、租户扩容
进入租户修改Unit
OCP云平台-租户-概览-修改Unit
如,将配置修改为S2,Unit修改为2
扩容成功
4、租户缩容
如,将配置修改为S1,Unit修改为1
缩容完成
七、ODC开发者中心
OceanBase 开发者中心(OceanBase Developer Center,ODC)是开源的企业级数据库协同开发工具,有桌面版、Web 版两种产品形态。 ODC Web 版提供了个人空间和团队空间两种工作模式。个人空间适合个人开发者使用,为您在浏览器端提供桌面版的体验;团队空间适合开发者和 DBA 协同使用,既是开发工具也是管控协同平台。 ODC 的代码维护在 Github,单击查看详情,加入 ODC 开源社区,一起创造 开发者和 DBA 喜爱的数据库协同开发工具。
https://www.oceanbase.com/docs/odc
1、下载OceanBase 开发者中心web镜像
上传到OMS主机,我将ODC安装在OMS主机,ODC为docker镜像
https://www.oceanbase.com/softwarecenter
2、为ODC创建一个mysql租户并创建一个数据库
创建tntodc租户 tntodc数据库 root用户
3、加载镜像
gunzip -c obodc4.3.3-bp2.tar.gz | docker load
查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
reg.docker.alibaba-inc.com/oceanbase/oms feature_4.2.8_ce d56598287295 7 weeks ago 10.9GB
oceanbase/odc 4.3.3_bp2 98a74ab3fbe1 7 weeks ago 1.75GB
4、创建安装脚本
odcinstall.sh
#!/usr/bin/env bash
mkdir -p /tntodc/log/odc
mkdir -p /tntodc/data/odc
docker run -v /tntodc/log/odc:/opt/odc/log -v /tntodc/data/odc:/opt/odc/data \
-d -i -p 8989:8989 --cpu-period 100000 --cpu-quota 400000 --memory 8G --name "obodc" \
-e "DATABASE_HOST=192.168.4.102" \
-e "DATABASE_PORT=2883" \
-e "DATABASE_USERNAME=root@tntodc#tntob" \
-e "DATABASE_PASSWORD=78ABcd##123" \
-e "DATABASE_NAME=tntodc" \
-e "ODC_ADMIN_INITIAL_PASSWORD=78ABcd##123" \
oceanbase/odc:4.3.3_bp2
注意
Shell 环境下,字符串中包含 !、$ 等特殊字符时,变量值需要使用单引号。例如:DATABASE_PASSWORD='11111!'。
参数 ODC_ADMIN_INITIAL_PASSWORD 用于指定 ODC 管理员账号的初始密码。设置的初始密码需要须满足以下条件:
至少 2 个数字。
至少 2 个大写字母。
至少 2 个小写字母。
至少 2 个特殊字符,特殊字符的范围为 ._+@#$%。
不包含空格和其他特殊字符,长度为 8-32。
5、安装
bash odcinstall.sh
6、登录
成功
八、OBProxy集群keepalived高可用主备VIP部署
keepalived介绍请看王工其他文章
1、安装keepalived
两台OBProxy主机分别安装keepalived
yum install -y keepalived
2、配置keepalived
两台OBProxy主机分别创建Proxy存活检测脚本
vi /etc/keepalived/check_obproxy.sh
#!/bin/bash
# 检查2883端口是否有监听
if ss -tuln | grep -q ':2883\b'; then
exit 0 # 检测成功,返回0
else
exit 1 # 检测失败,返回1
fi
tntproxy1配置
执行权限
chmod +x /etc/keepalived/check_obproxy.sh
配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id keepalived1 #只是名字而已,辅节点改为keepalived2(两个名字一定不能一样)
}
vrrp_script check_obproxy {
script "/etc/keepalived/check_obproxy.sh"
interval 2 #每2秒执行一次
}
vrrp_instance VI_1 {
state MASTER #定义主还是备,备用的话写backup
interface ens192 #VIP绑定接口
virtual_router_id 66 #整个集群的调度器一致(在同一个集群)
priority 100 #(优先权)back改为50(50一间隔)
advert_int 1 #发包
authentication {
auth_type PASS #主备节点认证
auth_pass 1111
}
unicast_src_ip 192.168.4.102 #本机ip
unicast_peer {
192.168.4.103 #其他机器ip,可多个
}
virtual_ipaddress {
192.168.4.99/24 #VIP(自己网段的)
}
track_script {
check_obproxy
}
}
tntproxy2配置
执行权限
chmod +x /etc/keepalived/check_obproxy.sh
配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id keepalived2
}
vrrp_script check_obproxy {
script "/etc/keepalived/check_obproxy.sh"
interval 2 #每2秒执行一次
}
vrrp_instance VI_1 {
state BACKUP #设置为backup
interface ens192
nopreempt #设置到back上面,不抢占资源
virtual_router_id 66
priority 50 #辅助改为50
advert_int 1 #检测间隔1s
authentication {
auth_type PASS
auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证
}
unicast_src_ip 192.168.4.103 #本机ip
unicast_peer {
192.168.4.102 #其他机器ip,可多个
}
virtual_ipaddress {
192.168.4.99/24 #抢占的VIP也一样
}
track_script {
check_obproxy
}
}
3、启动服务
systemctl enable --now keepalived
4、高可用测试
将zabbix数据库指向VIP,连续ping 192.168.4.99,并查看zabbix服务状态
obproxy1关机,查看ping和zabbix状态正常,业务几乎无感
来自 192.168.4.99 的回复: 字节=32 时间=15ms TTL=63
来自 192.168.4.99 的回复: 字节=32 时间=21ms TTL=63
来自 192.168.4.99 的回复: 字节=32 时间=28ms TTL=63
来自 192.168.4.99 的回复: 字节=32 时间=2ms TTL=63
来自 192.168.4.99 的回复: 字节=32 时间=49ms TTL=63
来自 192.168.4.99 的回复: 字节=32 时间=1ms TTL=63
obproxy2获得VIP
inet 192.168.4.103/24 brd 192.168.4.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 192.168.4.99/24 scope global secondary ens192
valid_lft forever preferred_lft forever
obproxy1开机,obproxy服务启动成功后,自动抢回VIP
inet 192.168.4.102/24 brd 192.168.4.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 192.168.4.99/24 scope global secondary ens192
valid_lft forever preferred_lft forever
5、测试结论
高可用正常,VIP正常
九、故障处理
1、任意一台OBServer主机故障
关机1台OBServer主机,集群无影响,一段时间后Zone内另一台主机接管此OBServer功能
开机此OBServer,一段时间后集群自动修复此主机并上线
2、
十、其他
暂无
十一、总结
太强了
评论