架构:
三台机器
硬件资源:8C16G 100G数据盘 * 3
IP:
observer1:192.168.200.148
observer2:192.168.200.148
observer3:192.168.200.148
组件: 全部只安装observer
软件版本 4.1.0.0 社区版
使用官方提供obd工具安装
下载安装包
只需要在主控机器上下载
yum install wget -y
wget https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/7/x86_64/oceanbase-all-in-one-4.1.0.0-100120230323143519.el7.x86_64.tar.gz?Expires=1681884878&OSSAccessKeyId=LTAI5tGVLeRRycCRGerZJMNC&Signature=D5q6aAfreY1c%2B4ALkDI5Y%2BpafDY%3D -O 'oceanbase.tar.gz'
tar -zxvf oceanbase.tar.gz
cd oceanbase-all-in-one/bin
安装部署工具obd
只需要在主控机器上安装
./install.sh
磁盘规划
每台机器需要执行
LVM 管理方式,方便后期空间扩展
格式化磁盘
每台机器需要执行
lsblk
fdisk /dev/sdb
n
p
#1
t
#8e
w
创建 pv vg lv
每台机器需要执行
fdisk -l
pvcreate /dev/sdb1
pvdisplay /dev/sdb1 -v
pvs
vgcreate vg_ob /dev/sdb1
vgdisplay vg_ob -v
vgs
#vgrename lvm_ob vg_ob
vgscan
lvcreate -L 99.5G -n lv_ob vg_ob
lvdisplay
lvs
lvscan
格式化为ext4
每台机器需要执行
mkfs.ext4 /dev/vg_ob/lv_ob
挂载
每台机器需要执行
mkdir -p /oceanbase
mount /dev/mapper/vg_ob-lv_ob /oceanbase
开机挂载 (路径一定要准,不然机器开不起来了)
每台机器需要执行
vim /etc/fstab
/dev/mapper/vg_ob-lv_ob /oceanbase ext4 defaults 0 0
磁盘卸载,删除,后期扩容(不需要执行)
umount /app
lvremove
vgremove
pvremove
文件夹创建
每台机器需要执行
mkdir -p /oceanbase/ob_data
mkdir -p /home/oceanbase/ob_log
mkdir -p /home/oceanbase/obproxy
mkdir -p /home/oceanbase/obagent
mkdir -p /home/oceanbase/ocp-server
mkdir -p /home/oceanbase/prometheus
mkdir -p /home/oceanbase/grafana
mkdir -p /home/oceanbase/observer/run
清空数据(重新安装时 desproy出错可能没清空时需要操作)
每台机器需要执行
rm -rf /home/oceanbase/ob_log/*
rm -rf /home/oceanbase/obproxy/*
rm -rf /home/oceanbase/obagent/*
rm -rf /home/oceanbase/ocp-server/*
rm -rf /home/oceanbase/prometheus/*
rm -rf /home/oceanbase/grafana/*
rm -rf /home/oceanbase/observer/*
系统参数设置
时区
每台机器需要执行
export TZ=CST-8
yum install ntpdate -y
ntpdate cn.ntp.org.cn
关闭透明大页
每台机器需要执行
echo never > /sys/kernel/mm/transparent_hugepage/enabled
修改系统参数文件最大句柄数等
每台机器需要执行
vim /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 = 16777216
net.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=0
vm.swappiness = 0
vm.min_free_kbytes = 2097152
# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern =/oceanbase/ob_data/core-%e-%p-%t
生效
/sbin/sysctl -p
/sbin/sysctl -a
文件打开数限制
每台机器需要执行
vim /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
生效
ulimit -a
集群部署
只需要在主控机器上执行
配置样例文件地址
# 复制配置文件
cp /tmp/zrdt-cluster3.yaml /root/oceanbase-all-in-one/conf/
obd cluster autodeploy zrcluster -c /root/oceanbase-all-in-one/conf/zrdt-cluster3.yaml
obd cluster start zrcluster
obd cluster stop zrcluster
obd cluster display zrcluster
obd cluster destroy zrcluster
obd cluster list
查看系统开发端口号
lsof -nP -iTCP -sTCP:LISTEN
登录sys租户
obclient -h192.168.200.148 -P2881 -uroot -p'9w3zFvV8uaBV6nhC' -Doceanbase -A
查看资源
select name,max_cpu,round(memory_size/1024/1024/1024,2) 'memory_size_GB',
round(log_disk_size/1024/1024/1024,2) 'log_size_GB'
from __all_unit_config;
改下系统单元占用
alter resource unit sys_unit_config max_cpu 1,memory_size '1G',LOG_DISK_SIZE = '6G';
查看可分配资源
select svr_ip,svr_port,zone,round((cpu_capacity_max-cpu_assigned_max),2) 'cpu_free_num',
cpu_capacity_max 'cpu_total_num',round((mem_capacity-mem_assigned)/1024/1024/1024,2) 'mem_free_GB',
round(memory_limit/1024/1024/1024,2) 'mem_total_GB' from gv$ob_servers;
查看已分配资源
SELECT t1.tenant_name AS "租户名称",
t3.NAME AS "资源单位名称",
concat(svr_ip,":",svr_port) as "节点IP和端口",
t3.max_cpu AS "最大CPU",
t3.min_cpu AS "最小CPU",
ROUND(t3.MEMORY_SIZE/1024/1024/1024) AS "租户内存",
ROUND(t3.LOG_DISK_SIZE/1024/1024/1024) AS "日志磁盘最大值",
t3.MAX_IOPS AS "最大IOPS",
t4.NAME AS "资源池名称",
t2.ZONE AS "资源所属可用区"
FROM OCEANBASE.DBA_OB_TENANTS t1,
OCEANBASE.DBA_OB_UNITS t2,
OCEANBASE.DBA_OB_UNIT_CONFIGS t3,
OCEANBASE.DBA_OB_RESOURCE_POOLS t4
where t1.tenant_id = t4.tenant_id
AND t4.resource_pool_id=t2.resource_pool_id
AND t4.unit_config_id=t3.unit_config_id
ORDER BY t1.tenant_name;
创建资源单元 (注意日志文件需要内存*6,不玩随时宕机)
create resource unit ut1 max_cpu 6,memory_size '10G',max_iops 10240 , IOPS_WEIGHT=1,LOG_DISK_SIZE = '20G';
创建资源池 (可以单可用区,需要副本的时候使用多可用区)
create resource pool p1 unit 'ut1',unit_num 1,zone_list=('zone1','zone2','zone3');
创建租户
create tenant zrmysql resource_pool_list=('p1') set ob_tcp_invited_nodes='%';
社区版据说只支持mysql兼容类型
创建好租户后使用root连接租户并创建用户、数据库,给用户分权限
注意:使用sys租户的root创建好新的租户后,首次登录新住户使用root账户,密码为空,进去先改密码!
obclient -h192.168.200.148 -P2881 -uroot@zrmysql -Doceanbase -A
alter user root identified by 'Lunz2017';
CREATE DATABASE whcenter;
CREATE USER user_wh@'%' IDENTIFIED BY 'Lunz2017';
grant all on *.* to user_wh;
以下不用执行,只是运维语句
修改、删除单元、池、租户
给UNIT增加日志空间限制
alter resource unit ut1 max_cpu 2,memory_size '2G',max_iops 102400 , IOPS_WEIGHT=1,LOG_DISK_SIZE = '12G';
DROP RESOURCE UNIT ut1;
修改租户资源
修改租户 zrmysql 的 Primary Zone 为 zone2
ALTER TENANT zrmysql primary_zone='zone2';
其中 F 表示副本类型为全功能型副本, zone4 为新增的 Zone 名称。
ALTER TENANT zrmysql locality="F@zone1,F@zone2,F@zone3,F@zone4";
不支持修改租户资源池
ALTER TENANT zrmysql resource_pool_list=('p2');
ERROR 1210 (HY000): Incorrect arguments to resource pool list
修改租户变量
ALTER TENANT zrmysql SET VARIABLES ob_tcp_invited_nodes='%';
删除租户
(1)当系统租户开启回收站功能时:表示删除的租户会进入回收站
DROP TENANT tenant_name;
(2)当系统租户关闭回收站功能时:表示延迟删除租户
DROP TENANT tenant_name;
(3)无论系统租户是否开启回收站功能:删除的租户均不进入回收站,仅延迟删除租户
DROP TENANT tenant_name PURGE;
(4)无论系统租户是否开启回收站功能:均可以立刻删除租户
DROP TENANT tenant_name FORCE;
租户添加白名单
ALTER TENANT zrmysql SET VARIABLES ob_tcp_invited_nodes='%';
切换系统租户
ALTER SYSTEM CHANGE TENANT zrmysql;
修改密码
update __all_user set passwd='Lunz2017' where user_name='root'; # 明文方式,不建议
alter user user_wh identified by 'Lunz2017';
错误
[ERROR] OBD-2008: Cluster clocks are out of sync
配置时钟同步