暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

OceanBase 单节点手动部署OB文档

原创 shunwah 2022-02-13
2434

OceanBase 单节点手动部署OB文档

oceanbase部署请查看历史文章

https://www.modb.pro/db/324460 使用OBD自动部署三节点OceanBase文档

https://www.modb.pro/db/328171 OceanBase手动部署三节点OBserver文档

https://www.modb.pro/db/322997 OceanBase 单节点手动部署OB文档

https://www.modb.pro/db/250245 Docker单节点自动化部署OB集群

机器信息

机器类型主机配置备注
OSCentos 7.4 
中控机 /OBDCPU:4C内存:16G
系统盘 /dev/vda 50GLVS分区、文件系统:EXT4
数据盘 /datadev/vdb 100GGPT分区、文件系统:xfs
事务日志盘 /redodev/vdc 100GGPT分区、文件系统:xfs

image-20220212110252297

机器划分

角色机器IP备注
OBserver192.20.3.215{2881,2882} zone1
OBproxy192.20.3.215{2883,2884} 反向代理
OBclient192.20.3.215OB命令行客户端

版本

软件名版本备注
libobclientlibobclient-2.0.0-2.el7.x86_64 
obclient2.0.0-2.el7.x86_64 
obproxy3.2.0-1.el7.x86_64 
oceanbase-ce3.1.2.el7.x86_64 
oceanbase-ce-libs3.1.1-4.el7.x86_64 

安装方式:

RPM包手动安装部署OceanBase


目录规划:

1、软件包默认安装目录是 : /home/admin/oceanbase 目录结构如下:

/home/admin/oceanbaseobs部署启动目录RPM包自动创建
/home/admin/oceanbase/obobs数据总目录手动创建
/data/obobs数据文件实际目录手动创建连接至数据总目录
/redo/{clog,slog,ilog}事务日志实际目录手动创建连接至数据总目录
/home/admin/oceanbase/etc配置文件启动时在启动目录自动创建
/home/admin/oceanbase/log运行日志目录启动时在启动目录自动创建

一、配置安装用户

1、创建admin用户并设置密码(所有节点都要设置):

#useradd -U admin -d /home/admin -s /bin/bash && echo "Sixlens2881" |passwd --stdin admin

image-20220212110543521

2、更改目录属主属组权限:

#chown -R admin.admin /data && chown -R admin.admin /redo && chown -R admin.admin /home/admin

image-20220212110619363

注意:先创建admin用户,后mount挂载/home/admin/ocaeabase 否则创建用户提示家目录存在

3、用户 admin 授予 sudo 权限配置:

#vim /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
admin    ALL=(ALL)       ALL

image-20220212110741665

注意:sudoers拒绝所有用户读写,root用户也无权限,需增加权限后更改 #chmod u+w /etc/sudoers

二、初始化服务器环境

1、配置时间同步服务

1.1、判断是否使用 ntpd同步时间(以root身份配置):

systemctl status ntpd
Unit ntpd.service could not be found.    #提示未安装
# yum remove ntp -y
# yum -y install chrony

image-20220212111040938

1.2、配置时间同步服务器

# vim /etc/chrony.conf
server ntp1.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
allow all
stratumweight 0
local stratum 10
# systemctl start chronyd && systemctl enable chronyd && systemctl status chronyd

image-20220212111154579

2、 修改会话变量设置

全局修改配置limits.conf(所有目标节点)最大文件句柄数设置为 655350,Core 文件大小设置为 unlimited 。

# cat /etc/security/limits.conf |grep ^[^#]
[root@caip215 ~]# 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

image-20220212111336689

退出当前会话,重新登录。执行 # ulimit -a,查看配置是否生效:

3、内核参数修改

修改配置文件vim /etc/sysctl.conf

# cat /etc/sysctl.conf |grep ^[^#] 

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
vm.max_map_count=655360
fs.aio-max-nr=1048576

# sysctl –p   --加载配置,使配置生效

image-20220212111541665

4、关闭防火墙和 SELinux

4.1、查看防火墙状态

systemctl status firewalld

image-20220212112852237

如果是 inactive 那就不用管。如果是 active,那就永久关闭

systemctl stop firewalld
systemctl disable firewalld 
systemctl status firewalld

4.2、关闭 SELinux

修改 SELinux 配置文件中的 SELINUX 选项。

vim /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

image-20220212113001390

配置文件修改后只会重启主机后生效,还需要使用下面命令立即生效。

setenforce 0

5、安装相关工具软件

未安装工具相关命令无法执行

yum install epel-release -y
yum install -y net-tools lrzsz tree htop dstat sysvinit-tools

查看 OBSERVER 进程特点工具
yum -y install sysvinit-tools
ps -ef|grep observer
查看进程监听端口工具
yum install -y net-tools
netstat -ntlp
查看 OceanBase 工作目录结构工具
yum -y install tree
tree /root/ob
tree /root/obce/

image-20220212113130888

三、安装部署

1、新建soft软件包临时目录(切换admin用户)
$ mkdir ~/soft

image-20220212113529700

创建oceanbase目录,配置软连接:

mkdir -p ~/oceanbase/store/obdemo  /data/obdemo/{sstable,etc3} /redo/obdemo/{clog,ilog,slog,etc2}
for f in {clog,ilog,slog,etc2}; do ln -s /redo/obdemo/$f ~/oceanbase/store/obdemo/$f ; done
for f in {sstable,etc3}; do ln -s /data/obdemo/$f ~/oceanbase/store/obdemo/$f; done

image-20220212113742935

2、OceanBase 软件包下载:

2.1、OB阿里云RPM包下载地址

https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/

image-20220212113954911

2.2、安装 OceanBase 软件包

目标机器准备好OceanBase 的 RPM 包,安装oceanbase-ce oceanbase-ce-libs libobclient obclient

image-20220212114429749

$ sudo rpm -ivh *.rpm  #一键安装软件包
rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm
rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm

image-20220212114408509

2.3、查询已安装RPM包

[root@CAIP120 ~]# rpm -ql

image-20220212114557960

软件包默认安装目录是 : /home/admin/oceanbase

2.4、检查目录结构,目录结构如下:

[admin@CAIP120 ~]$ tree ~/oceanbase/store/ /data/ /redo/

image-20220212114710100

四、启动 OBSERVER 进程

1、启动单节点OBSERVER

1.1、启动192.20.3.215 (zone1)

cho 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >> ~/.bash_profile
. ~/.bash_profile

cd ~/oceanbase && 
bin/observer -i ens33 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '192.20.3.215:2882:2881' -c 20220210 -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"

image-20220212153143361

如果是三个或多个节点机型都一致,那么启动参数里只有一个参数不一样,就是 -z 指定该节点是哪个 zone

image-20220105110732278

1.2、验证服务是否启动:

$ ps aux |grep obs
$ pidof observer

image-20220212153016408

Note:目标节点配置比较高,没有输出太多的参数

memory_limit=8G    --设置节点内存
system_memory=3G    --设置系统内存
datafile_size=50G   --分配data磁盘大小

2、集群自举(初始化)

当 OceanBase 集群三个节点都正常启动,并且监听正常时,中控机连接到任一节点(通过 2881 端口直连),进行自举(bootstrap 集群初始化)操作。 初始密码是空

[admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -u root -P 2881 -p -c -A

MySQL [(none)]> set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '192.20.3.215:2882';

image-20220212154121796

退出,用root@sys系统租户登录

obclient -h 192.20.3.215 -u root@sys -P 2881 -p -c -A
[admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -u root@sys -P 2881 -p -c -A
-- bootstrap集群初始化成功后可以用root@sys系统租户连入
MySQL [(none)]> show databases;  #检查数据库

image-20220212154445630

3、设置系统租户密码

集群管理员root@sys的密码默认是空的,这里需要给root@sys租户设置一个密码。

MySQL [(none)]> alter user root identified by 'sixlens2881';
alter user root identified by 'sixlens2881';  #设置系统租户root@sys密码

image-20220212154838633

3.1、使用root@sys登陆数据库:

[admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -uroot@sys -P 2881 -psixlens2881 -c -A oceanBase
$ obclient -h 192.20.3.215 -uroot@sys -P 2881 -psixlens2881 -c -A oceanBase #测试密码连接

image-20220212155119405

3.2查看集群状态:

select * from __all_server;

image-20220105113316724

3.3、在OceanBase 集群上创建proxyr用户OBPROXY 用户名(proxyro)密码默认OBPROXY 连接 OceanBase 集群使用用户 proxyro 。这个用户不存在,需要创建:

grant select on oceanbase.* to proxyro identified by 'sixlens2881';

image-20220212155451148

4、启动 OBPROXY 进程

[admin@CAIP131 ~]$ cd ~/obproxy-3.2.0 && bin/obproxy -r "192.20.3.215:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo


启动-c 指定的集群名obdemo和OBserver的集群名保持一致才能启动

image-202202121558309044.1、检查 OBPROXY, 监听进程正常

进程 obproxy 默认会监听2个端口:2883 和 2884 。

ps -ef|grep obproxy
netstat -ntlp |grep obproxy

image-20220212155912396

4.2、登录 OBPROXY 修改密码,(中控机)安装obclient,方便测试连接:

登录用户名:root@proxysys, 端口:2883 ,初始密码:空。

$ obclient -h 192.20.3.215 -u root@proxysys -P 2883 -p   --默认obp密码为空

image-20220212160059022

4.3、修改 OBPROXY 管理密码

MySQL [(none)]> show proxyconfig like '%sys_password%';
alter proxyconfig set obproxy_sys_password = 'sixlens123'; #修改proxy管理密码

image-20220212160245036

[admin@caip215 obproxy-3.2.0]$ obclient -h 192.20.3.215 -u root@proxysys -P 2883 -psixlens123   #测试连接

image-20220212160458836

4.4、修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码。这样 OBPROXY 才能跟 OceanBase 集群正常连接。###这个密码就是前面 OceanBase 集群初始化后创建的用户 proxyro 的密码

MySQL [(none)]> alter proxyconfig set observer_sys_password = 'sixlens2881';

image-20220212160716942

4.5、退出,通过 OBPROXY 连接 OceanBase , 如果能查看所有会话,则说明 OBPROXY 部署成功

[admin@caip215 obproxy-3.2.0]$ obclient -h192.20.3.215 -uroot@sys#obdemo -P2883 -psixlens123 -c -A oceanbase

image-20220212161234622

MySQL [oceanbase]> show processlist;
MySQL [oceanbase]> show full processlist;

image-20220212161432545

五、创建业务租户、业务数据库、测试表:

1、查询系统资源总计资源

SELECT svr_ip,svr_port, cpu_total, mem_total/1024/1024/1024, disk_total/1024/1024/1024, zone FROM __all_virtual_server_stat;

image-20220212161856201

1.2查询租户已分配资源:查看一下资源分配细节。

SELECT sum(c.max_cpu), sum(c.max_memory)/1024/1024/1024 FROM __all_resource_pool as a, __all_unit_config AS c WHERE a.unit_config_id=c.unit_config_id;


Note:资源池cpu共8c/24g/500G 租户已用 5c/7G 新建租户最大可用为 2c/17g(超分会报错)

2、创建资源单元规格(Resource Unit,Unit

alter resource unit sys_unit_config min_cpu=5;

2.1、创建资源单元:

 CREATE resource unit S4C1G max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';

image-20220212170111741

2.2、查看新创建的资源单元:

SELECT unit_config_id,name,max_cpu,min_cpu,max_memory,min_memory,max_disk_size FROM __all_unit_config;

image-20220212170303283

3、创建资源池(Resource Pool

3.1创建资源池:

MySQL [oceanbase]> CREATE resource pool my_pool unit = 'S4C1G', unit_num = 1;

资源池名 unit='资源单元名',unit_num=1, zone_list=('zone1'...);

image-20220212170022542

3.2、查看资源池:

obclient> SELECT * FROM gv$unit;

image-20220212170611490

3.3、查看系统资源占用情况

mysql> SELECT svr_ip,svr_port, cpu_total, mem_total, disk_total, zone FROM __all_virtual_server_stat ;

image-20220212170654401

4、创建租户(**TENANT**

4.1、租户就是实例,创建租户也是瞬间完成,需要关联到某个资源池。

使用 root 账号登陆到 sys 租户中,使用 MySQL 或 OBClient 访问 OceanBase 数据库:

MySQL [oceanbase]> create tenant obmysql resource_pool_list=('my_pool'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';

image-20220212165849222

普通租户的内存最小规格必须大于等于 5 GB,否则创建租户失败。如果希望建立租户进行非常简单的功能测试,可以修改参数 alter system __min_full_resource_pool_memory 的值为 1073741824 来允许以最小 1 GB 内存的规格创建租户。

4.2、查看创建成功的租户:

MySQL [oceanbase]> select * from gv$tenant; 

image-20220212165728237

4.3、根据需要删除用户

obclient>DROP USER sqluser02;

5、创建用户(USER)

5.1、登录新租户:

$ obclient -h 127.1 -uroot@obmysql -P2881 -p -c -A test

image-20220212162517514

5.2、创建用户:

MySQL [oceanbase]> CREATE USER 'usersixlens' IDENTIFIED BY '123#abc';


5.3、查看创建成功的用户usersixlens

MySQL [oceanbase]> SELECT user FROM mysql.user;

image-20220212162644225

5.4、用户授权

MySQL [oceanbase]> grant all on *.* to 'usersixlens' WITH GRANT OPTION;

image-20220212162716586

5.5、查看授权:

MySQL [oceanbase]> show grants for usersixlens;

image-20220212162744981

5.6、根据需要移除权限

obclient> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'demo';

5.7、登录sys租户,连接白名单设置(否则只能127登录)

$ obclient -h192.20.3.215 -uroot@sys#obdemo -P2883 -psixlens2881 -c -A oceanbase
ALTER TENANT obmysql SET VARIABLES ob_tcp_invited_nodes='%';     --需要在sys租户下设置

image-20220212163643625

6、用户usersixlens身份登录OB集群:

[admin@caip215 obproxy-3.2.0]$ obclient -h192.20.3.215 -uusersixlens@obmysql#obdemo -P2883 -p123#abc -c -A

image-20220212164232501

使用新用户usersixlens登录,创建测试表:

MySQL [(none)]> create database sixlens;
MySQL [(none)]> use sixlens;    #需要进入新创建的数据库,否则会报错
MySQL [sixlens]> CREATE TABLE sixlens (id int,name varchar(20));
MySQL [sixlens]> insert into sixlens(id,name) values(88,"obtest");
MySQL [sixlens]> show tables;
+-------------------+
| Tables_in_sixlens |
+-------------------+
| sixlens           |
+-------------------+
1 row in set (0.002 sec)
MySQL [sixlens]> select * from sixlens;

image-20220212164614383 

 

 

最后修改时间:2022-03-04 16:15:19
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论