【OB4.2.0-CE从单机到3节点最小化集群全总结】

OB4.2.0-CE从单机到3节点最小化集群全总结

一、重要注意事项

1、建议使用非root用户安装OB全家桶,而且用户最好是admin用户,否则后续新增组件等会出现麻烦

2、单机部署的情况下,可以不使用OBD,也不安装OBProxy + OCP + OBAgent,轻装上阵,减少资源占用

3、若开始便决定做单机部署,不考虑后期扩展,可在同一机器上安装OBD和数据库,部署方式参考《OBD 白屏部署单机 OceanBase-CE 4.2.0》

4、若开始便决定做分布式部署,则最好使用OBD白屏部署,减少部署和后期运维压力,且至少需要4个节点:1个节点做中控,安装OBD、OBProxy代理,剩余3节点做高可用分布式的数据节点,部署方式参考《分布式部署测试》

5、若考虑到单机部署后期扩展的便利性,开始时可以只使用2个节点,1个节点做中控,安装OBD和OBProxy,1个节点做数据节点安装OB;中控节点可以考虑使用业务应用服务器

● 由于通常情况下,数据库是为了服务业务应用,业务应用 和 数据库分开部署,所以测试阶段可考虑使用2台服务器

● 中控程序安装到业务应用服务器

6、单机部署的情况下, 注意配置数据库开机自启

● 如果OBD和数据库在同一个服务器上,直接使用OBD做开机启动脚本

● 如果OBD和数据库不在一起,那么最好直接在数据库服务器上启动OBServer,启动参数参考《RPM安装数据库和启动》

● 如果用到了物理备份和恢复,则注意,在数据库启动前,需要先等时间同步完成,再启动NFS客户端并挂载目录,最后再启动数据库实例

7、数据库日志盘CLOG和数据盘最好不在同一块物理磁盘上,减轻磁盘IO压力,提高系统稳定性

● 如果只能在一块儿磁盘上,则注意日志盘和数据盘分配占比,保持在1:2或1:3即可

● 日志盘最好使用高性能的SSD盘

8、注意各个节点的SSH登录速度,如过慢,则需要配置,否则OBD白屏的预安装检查会失败

9、分布式部署的情况下,最好不要在数据节点配置数据库实例开机自启,只需要做报警即可

● 因为可能重启的节点需要做维护,不能启动数据库

● 只在中控机器上做节点宕机报警即可

● 由于数据节点和中控节点分离,考虑到中控节点宕机的情况,虽然不会影响数据库实例,但需要考虑OBProxy代理在服务器重启的情况下自动启动

10、如果需要定时的物理备份,可利用crontab做定时备份,单机情况下直接在数据库实例所在服务器上放置备份脚本,集群情况下在中控机上放置备份脚本

11、数据库安装完毕,创建完用户租户后,有些配置项和环境变量需要做修改

● 查询超时,单位是微秒,此处配置为7200秒:SET GLOBAL ob_query_timeout = 7200000000;

● 设置SQL运行算子可用内存占租户内存的百分比:SET GLOBAL ob_sql_work_area_percentage = 10;

● 设置最大可传输的SQL字节数:SET GLOBAL max_allowed_packet = 41943040;

● 设置认定为慢查询的时间阈值:ALTER SYSTEM SET trace_log_slow_query_watermark = '3s';

12、文件系统最好使用EXT4,预估单文件超过16TB数据容量的时候,使用XFS文件系统(官方建议)

二、安装前准备

※ OB需要的所有节点,包括中控,都做以下处理

1、admin用户建立

# 创建用户,并赋权

● useradd -U admin -d /home/admin -s /bin/bash

● mkdir -p /home/admin

● sudo chown -R admin:admin /home/admin

● passwd admin

	※ 密码:xxx

● 为admin用户设置sudo权限

	vim /etc/sudoers

	添加以下内容:admin		ALL=(ALL)       NOPASSWD: ALL

● su admin

● cd ~

● 创建目录:mkdir core-dump startup install nfs-start alert backup-job
目录名称说明
core-dump存放系统崩溃核心转储文件
startup数据库实例或OBProxy开机启动脚本;当单机部署时,OBD和数据库实例部署在同一台服务器上时,启动数据库;当使用单实例OBProxy时,启动OBProxy
install存放数据库安装文件,中控机放oceanbase-all-in-one,扩容机器放RPM
nfs-start当需要物理备份和恢复功能时,放开机自动启动NFS客户端并挂载目录脚本
alert当集群部署时,在中控机上放数据节点宕机时的检测发邮件脚本
backup-job当数据库需要定时备份时,放定时备份脚本;集群环境放在中控机,单机环境放在数据库实例所在机器

2、配置 limits.conf

● sudo 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验证是否生效

3、配置 /etc/sysctl.conf

● vim /etc/sysctl.conf

fs.aio-max-nr=1048576 # 修改内核异步 I/O 限制
net.core.somaxconn = 2048 # Socket 监听队列的最大长度,频繁建立连接需要调大该值
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.tcp_rmem = 4096 87380 16777216 # Socket 接收缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 65536 16777216 # Socket 发送缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_max_syn_backlog = 16384 # 处于 SYN_RECVD 状态的连接数
net.ipv4.tcp_fin_timeout = 15 # Socket 主动断开之后 FIN-WAIT-2 状态的持续时间
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1 # 允许重用处于 TIME WAIT 状态的 Socket
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0 # 禁止 TCP 连接从 Idle 状态的慢启动,降低某些情况的网络延迟

vm.swappiness = 0 # 优先使用物理内存
vm.min_free_kbytes = 2097152 # 根据情况自行配置

kernel.core_pattern = /home/admin/core-dump/core-%e-%p-%t # 系统内核dump日志存储目录,结合具体使用修改目录位置

● 生效:sysctl -p

4、关闭防火墙

● systemctl stop firewalld

● systemctl disable firewalld

● systemctl status firewalld

5、关闭SELinux

● vim /etc/selinux/config

	SELINUX=disabled

● 重启

● 查看 SELinux 状态:sestatus

6、注意是否能连接外网,是否安装了chrony,时间是否能同步,不能连接外网的情况下考虑自建NTP服务器

7、各节点SSH登录速度过慢的话,需要做SSH配置

● su(以root用户登录)

● vim /etc/ssh/sshd_config

	GSSAPIAuthentication  赋值为 no(默认为yes)

	UseDNS,赋值为 no(该项默认不启用的,要把前面的#删除掉)

● systemctl restart sshd

三、单机/集群资源规划

1、数据节点,单机或最小化集群,每节点统一为4C16G,虚拟机,机械硬盘330G,日志盘和数据盘在一起

配置项目
集群名称distributedob
部署方式OBD白屏
root_passwordxxx
datafile_size100G
datafile_maxsize3000G
datafile_next20G
log_disk_size100G
enable_syslog_recycleTrue
max_syslog_file_count20
memory_limit12G
system_memory3G
cpu_count4
proxy_mem_limited4G
obproxy_sys_passwordxxx
SQL端口2881
RPC端口2882
obproxy_listen_port2883
prometheus_listen_port2884
数据/日志目录/home/admin/distributedob/oceanbase/store

四、OBD白屏单机部署

※ 详细内容参考 《OBD 白屏部署单机 OceanBase-CE 4.2.0》

1、上传 oceanbase-all-in-one-*.tar.gz 到服务器/home/admin/install

2、解压并安装

● su admin

● cd /home/admin/install

● tar -xzf oceanbase-all-in-one-*.tar.gz

● cd oceanbase-all-in-one/bin/

● ./install.sh

● source ~/.oceanbase-all-in-one/bin/env.sh

● vim ~/.bashrc
	
	source ~/.oceanbase-all-in-one/bin/env.sh

3、启动OBD白屏安装

● obd web

● 注意勾选并安装obproxy,不安装OCP Express 和 OBAgent,obproxy安装在中控机上

● zone只要1个,OBServer节点和RootServer节点相同,配置为数据节点的IP

● OBProxy节点配置为中控机IP

● 按照安装引导和上面的资源规划填入参数并直到安装完成,安装完成后,数据库自动启动

4、配置开机自启

5、登录sys租户,创建用户租户

6、虽然部署了OBProxy,但在单体下,可以直连数据库,不走代理,如果后续想转分布式,可以再修改应用程序的连接地址到OBProxy即可;当然也可以一开始就走代理,后续升级3节点不需要重启应用

五、单机在线转3节点分布式

1、新增的节点完成安装前准备

2、将中控机上的oceanbase-all-in-one/rpms/oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64.rpm 和 oceanbase-all-in-one/rpms/oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64.rpm上传到需要安装数据库实例的各个服务器上的/home/admin/install目录下

3、在需要安装数据库实例的服务器上执行以下脚本中的命令,安装并启动各个节点的数据库实例

● su admin

● 创建数据库安装和运行所需的目录
mkdir -p /home/admin/distributedob/oceanbase/{etc2,etc3}
mkdir -p /home/admin/distributedob/oceanbase/store/{clog,slog,sstable}

● 删除之前安装的数据库和相关依赖
sudo rpm -e oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64
sudo rpm -e oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64
rm -rf rm -rf /home/admin/.obd

● 安装数据库依赖和数据库
sudo rpm -ivh --prefix=/home/admin/distributedob/oceanbase /home/admin/install/oceanbase-ce-libs-4.2.0.0-100010022023081817.el7.x86_64.rpm
sudo rpm -ivh --prefix=/home/admin/distributedob/oceanbase /home/admin/install/oceanbase-ce-4.2.0.0-100010022023081817.el7.x86_64.rpm

● 如果不是使用的admin用户,注意安装结束后赋权的操作
sudo chown -R admin:admin /home/admin/distributedob/oceanbase

● 依赖的内容加入环境变量,启动数据库的时候会使用
vim ~/.bashrc
● 加入以下内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/distributedob/oceanbase/lib
source ~/.bashrc

● 启动数据库
cd /home/admin/distributedob/oceanbase;

# 注意启动命令中,资源和IP相关的配置,需要结合实际修改
# -z 自行定义,建议保持和已经部署的数据库有连续关系
# -c 和 -n 可从已经部署的数据库中查询到,其中,查询集群cluster_id:SHOW PARAMETERS LIKE 'cluster_id';
# 注意IP的修改,-o参数根据实际情况修改

/home/admin/distributedob/oceanbase/bin/observer \
-I 192.168.0.221 \
-P 2882 \
-p 2881 \
-z zone1 \
-d /home/admin/distributedob/oceanbase/store \
-r '192.168.0.221:2882:2881' \
-c 1697695072 \
-n distributedob \
-o "devname=eth0,memory_limit=12G,system_memory=3G,datafile_size=100G,datafile_maxsize=3000G,datafile_next=20G,log_disk_size=100G,cpu_count=4,enable_syslog_recycle=True,max_syslog_file_count=20,root_password=admin0901,config_additional_dir=/home/admin/distributedob/oceanbase/etc3;/home/admin/distributedob/oceanbase/etc2"

# 查询数据库是否启动成功
ps -ef | grep observer

4、登录之前单机部署的数据库的sys租户的root用户,准备扩容已有租户

5、通过OBD单节点部署的时候,默认的zone1的region是sys_region,而ALTER SYSTEM ADD ZONE添加的zone,region是default_region,需要将单节点的zone的region改为和后续要添加的zone2、zone3的region相同的

● ALTER SYSTEM ALTER ZONE zone1 SET REGION 'default_region';

6、添加zone

● ALTER SYSTEM ADD ZONE zone2;

● ALTER SYSTEM ADD ZONE zone3;

7、查看系统当前的zone

● SELECT * FROM oceanbase.DBA_OB_ZONES;

8、启动zone

● ALTER SYSTEM START ZONE zone2;

● ALTER SYSTEM START ZONE zone3;

9、将之前新部署的2个节点添加到上面的2个zone中,端口是RPC端口

● ALTER SYSTEM ADD SERVER '192.168.0.223:2882' ZONE 'zone2';

● ALTER SYSTEM ADD SERVER '192.168.0.224:2882' ZONE 'zone3';

10、查询是否添加成功

● SELECT * FROM oceanbase.DBA_OB_SERVERS;

11、下面是租户扩副本

12、扩展系统租户和业务租户资源池的zone列表

● 系统租户资源池:ALTER RESOURCE POOL sys_pool ZONE_LIST=('zone1','zone2','zone3');

● 业务租户资源池:ALTER RESOURCE POOL test_pool_01 ZONE_LIST=('zone1','zone2','zone3');

13、系统租户扩副本,一次扩一个zone

● 副本扩展到zone2:ALTER TENANT sys LOCALITY='F@zone1,F@zone2';

● 查询扩副本任务的状态:SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';

● 副本扩展到zone3:ALTER TENANT sys LOCALITY='F@zone1,F@zone2,F@zone3';

● 查询扩副本任务的状态

14、业务租户扩副本,一次扩一个zone

● 副本扩展到zone2:ALTER TENANT obtest LOCALITY='F@zone1,F@zone2';

● 查询扩副本任务的状态:SELECT * FROM oceanbase.DBA_OB_TENANT_JOBS WHERE JOB_TYPE = 'ALTER_TENANT_LOCALITY';

● 副本扩展到zone3:ALTER TENANT obtest LOCALITY='F@zone1,F@zone2,F@zone3';

● 查询扩副本任务的状态

15、查询租户状态

● SELECT TENANT_ID,TENANT_NAME,TENANT_TYPE,PRIMARY_ZONE,LOCALITY FROM oceanbase.DBA_OB_TENANTS;

16、当应用开启新的会话连接代理时,便可以查询到扩容的节点信息了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值