广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

OceanBase手动式安裝流程

日期:2021-03-31 浏览:

1. 安裝方法挑选
OceanBase是一个群集数据信息库,最少要三个连接点。一般三个连接点是要在三台设备上。相关OceanBase的详细介绍请参照官方网站 docs  。

官方网站上出示了一个安裝包的免费下载,详细地址是: OceanBase安裝包免费下载连接 。 这一安裝包里的內容许多。非常大一一部分是OCP的安裝包及其有关安裝表明。详尽查询 安裝包部件表明 。
大家只必须里边的两个文档。

$unzip ocp-release.zip
$cd ocp-release/
$tar zxvf ocp-setup.tar.gz
$cd ocp_yh

$ls -lrth obproxy-1.3.3-1506155.el7.x86_64.rpm oceanbase-1.4.60-1571952.el7.x86_64.rpm

-rwxr-xr-x 1 admin admin  35M May 11  2018 oceanbase-1.4.60-1571952.el7.x86_64.rpm
-rwxr-xr-x 1 admin admin 5.4M May 11  2018 obproxy-1.3.3-1506155.el7.x86_64.rpm

这2个文档便是大家后边安裝必须的。一个是observer的安裝包,一个是obproxy的安裝包。

因为自然环境的管理权限限定,网络服务器中间不可以立即连通ssh安全通道,而且默认设置都不容许打开80端口号和图型化页面,造成我没法应用官方网站强烈推荐的2种方法安裝。因此,我也一步歩从指令行下安裝OceanBase群集。从这一流程里还可以看得出一些OceanBase的基本原理。 具体全过程其实不繁杂,非常容易把握。

2. 布署规定


强烈推荐62G之上,生产制造自然环境提议258G之上。假如仅仅科学研究作用 8G之上。比这一还小,后边应用不太熟悉得话,会误认为有许多难题。
强烈推荐一般ssd就可以,生产制造自然环境都不必须密度高的ssd盘。假如仅仅科学研究作用,用sata或sas也行。便是特性会不太好(别的数据信息库同样)。
运行内存的4倍之上。生产制造自然环境提议1T之上。 假如仅仅科学研究作用,最少还要100G之上。比这一还小,后边应用不太熟悉得话,会误认为不太好。
强烈推荐千兆网卡互连之上。生产制造自然环境提议万兆互连。连接点间的互联网廷时对OB的特性会出现非常大危害,全部的遍布式商品都这般。

3. OS自然环境提前准备

这儿就参照官方网文本文档 改动实际操作系统软件配备 ,挑好多个关键的提一下。

ulimit用以限定shell起动过程所占有的資源。有二种方式能够改动資源限定,一种是根据起动时session级別特定,此外一种是改动/etc/security/limits.conf配备文档,全局性起效。
OBServer过程涉及到的好多个限定包含进程较大栈室内空间尺寸(stack),较大文档句柄数(openfiles),core文档尺寸(core file size)。

[size=font-size: 10.5pt,10.5pt]$vi /etc/security/limits.conf加上
[size=font-size: 10.5pt,10.5pt]* soft nofile 655350
[size=font-size: 10.5pt,10.5pt]* hard nofile 655350
[size=font-size: 10.5pt,10.5pt]* soft stack    20480
[size=font-size: 10.5pt,10.5pt]* hard stack     20480
[size=font-size: 10.5pt,10.5pt]*  soft    nproc    655360
[size=font-size: 10.5pt,10.5pt]*  hard    nproc    655360
[size=font-size: 10.5pt,10.5pt]* soft core    unlimited
[size=font-size: 10.5pt,10.5pt]* hardcore     unlimited

略微提一下的是文件目录提前准备。每一个连接点都是写数据信息和系统日志。依据工作经验数据信息和系统日志盘在最底层要分离出来。假如能在raid方面防护是最好的。假如做不太好,那么就用LVM在逻辑性方面做防护(即做不一样的LV)
下边就是我的自然环境

$sudo lvs -a
LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
data vgob -wi-ao---- 10.97t
log  vgob -wi-ao----  1.05t

$cat /etc/fstab

LABEL=log1              /data/log1              ext4            defaults,noatime,nodiratime,nodelalloc,barrier=0        0 0
LABEL=data1             /data/1         xfs             defaults,noatime,nodiratime,barrier=0   0 0

sysctl.conf改动

#  for oceanbase
net.core.somaxconn = 2048
dev_max_backlog = 10000
net.core.rmem_default =
net.core.wmem_default =
net.core.rmem_max =
net.core.wmem_max =

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 86
net.ipv4.tcp_wmem = 4096 66
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
kernel.core_pattern = /data/1/core-%e-%p-%t
vm.min_free_kbytes = 2097152
vm.max_map_count=655360

4. 设备提前准备


zone 是对设备的区划。一个oceanbase群集的设备最少区划为三个zone。一般数据信息最少有三份,遍布在每一个zone里边。二、安裝起动OBServer

1. 安裝手机软件包

OceanBase是一个群集,可是安裝却非常简单,只必须在每一个连接点安裝一个observer的rpm包(有两个依靠包 snappy和lzo必须先安裝一下),随后起动就可以。

$sudo yum -y install snappy lzo
$sudo rpm -ivh oceanbase-1.4.60-1571952.el7.x86_64.rpm

2. 提前准备数据信息库文件目录

在起动 OBServer以前,必须提前准备一些数据信息文件目录。而且起动客户提议是 admin。 admin必须sudo管理权限。假定我想构建的数据信息库群集叫 obdemo 。下边文件目录里用到到这一姓名。
有关文件目录构造很少表述,待OB群集构建取得成功后大伙儿能够再去科学研究其文件目录。

su - admin
mkdir -p /data/1/obdemo/
cd /data/1/obdemo/
mkdir -p etc3  sort_dir  sstable
mkdir -p /data/log1/obdemo/
cd /data/log1/obdemo/
mkdir -p clog  etc2  ilog  oob_clog  slog
mkdir -p /home/admin/oceanbase/store/obdemo
cd /home/admin/oceanbase/store/obdemo/
ln -s /data/1/obdemo/sort_dir /home/admin/oceanbase/store/obdemo/sort_dir
ln -s /data/1/obdemo/sstable /home/admin/oceanbase/store/obdemo/sstable
ln -s /data/log1/obdemo/clog /home/admin/oceanbase/store/obdemo/clog
ln -s /data/log1/obdemo/ilog /home/admin/oceanbase/store/obdemo/ilog
ln -s /data/log1/obdemo/oob_clog /home/admin/oceanbase/store/obdemo/oob_clog
ln -s /data/log1/obdemo/slog /home/admin/oceanbase/store/obdemo/slog
$ls -lrth /home/admin/oceanbase/store/obdemo/
total 0
lrwxrwxrwx 1 admin admin 23 Oct  6 21:10 sort_dir - /data/1/obdemo/sort_dir
lrwxrwxrwx 1 admin admin 22 Oct  6 21:10 sstable - /data/1/obdemo/sstable
lrwxrwxrwx 1 admin admin 22 Oct  6 21:10 clog - /data/log1/obdemo/clog
lrwxrwxrwx 1 admin admin 22 Oct  6 21:10 ilog - /data/log1/obdemo/ilog
lrwxrwxrwx 1 admin admin 26 Oct  6 21:10 oob_clog - /data/log1/obdemo/oob_clog
lrwxrwxrwx 1 admin admin 22 Oct  6 21:10 slog - /data/log1/obdemo/slog

从这一文件目录构造里便可以看得出数据信息和系统日志是分离储存了。

3. 起动observer

先前整体规划的6台设备,所属于3个zone。 起动主要参数 大部分分同样,仅仅zone的姓名要改一改。

$bin/observer --help
bin/observer --help
observer [OPTIONS]
-h,--help                print this help
-z,--zone ZONE           zone
-p,--mysql_port PORT     mysql port
-P,--rpc_port PORT       rpc port
-N,--nodaemon            don't run in daemon
-n,--appname APPNAME     application name
-c,--cluster_id ID       cluster id
-d,--data_dir DIR        OceanBase data directory
-i,--devname DEV         net dev interface
-o,--optstr OPTSTR       extra options string
-r,--rs_list RS_LIST     root service list
-l,--log_level LOG_LEVEL server log level

全部zone1 设备的observer起动指令:

cd /home/admin/oceanbase /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c -n obdemo -o "datafile_disk_percentage=50,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"

高亮度一部分全是能够改的。在沒有了解以前不必改动。  -n 特定的 appname,便是群集名,后边都是采用。 -r 后边目录里的ip 便是被选为rootservice的三台设备ip。
observer的起动文件目录务必是  /home/admin/oceanbase 。因此cd 哪个指令不必忘掉了。

datafile_disk_percentage=50 这一占比能够调节,默认设置是90(表明90%的硬盘系统分区室内空间会被OB占有)。假如你的硬盘室内空间想留一点给别的运用用。就变小这一占比。当data和log文件目录是同用的情况下,更应调小这一占比。不然observer起动会因为为clog室内空间不够而不成功。

$ps -ef | grep observer
admin     62603      1 99 Oct06 ?        2-00:59:16 /home/admin/oceanbase/bin/observer -i bond0 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881 -c -n obdemo -o config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2
admin    108165  61410  0 11:30 pts/1    00:00:00 grep --color=auto observer

全部zone2 设备的起动指令:

cd /home/admin/oceanbase bin/observer -i bond0 -P 2882 -p 2881 -z zone2 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
ps -ef | grep observer

全部zone3设备的起动指令

cd /home/admin/oceanbase bin/observer -i bond0 -P 2882 -p 2881 -z zone3 -d /home/admin/oceanbase/store/obdemo -r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881' -c -n obdemo -o "config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"
ps -ef | grep observer

这时,仅仅在每一个设备上起动了observer,还并沒有产生一个OceanBase群集。后边会原始化一个OceanBase群集。

备注名称:上边每一个observer的起动主要参数较长,具体上仅有第一次起动的情况下必须那么写。等后边原始化OceanBase群集取得成功后,每一个observer会全自动把它全部主要参数提到一个配备文档里。默认设置在 /home/admin/oceanbase/etc/observer.config.bin 里, 这一配备文档太重要,因此observer容许附加根据主要参数config_additional_dir 特定储存好几份,相近于oracle的操纵文档。 三、原始化OceanBase群集

前边在每一个设备连接点上面起动了一个observer,其主要参数与众不同的地方是都特定了一个 rootservice list。

-r 'xx.xxx.171.187:2882:2881;xx.xxx.240.24:2882:2881;xx.xxx.241.125:2882:2881'

这儿布有3个ip,是被设计方案为储存rootservice 的设备。 在原始化oceanbase群集以前,这三台设备里最少有两部设备的observer务必起动,而且以一样的主要参数起动。第一次安裝大家默认设置三台设备的observer都起动了。

1. 清除全部数据信息文档(第一次不用)

pkill observer
等候几秒钟钟
/bin/rm /home/admin/oceanbase/log/*log*
cd /data/log1/obdemo /bin/rm -rf clog  etc2  ilog  oob_clog  slog
mkdir clog  etc2  ilog  oob_clog  slog
cd /data/1/obdemo /bin/rm -rf etc3  sort_dir  sstable
mkdir etc3  sort_dir  sstable
ll ~/oceanbase/store/obdemo

这一指令是用以清除数据信息文档,再次实行后边流程。第一次做的情况下不用(沒有历史时间数据信息文档)。要做的情况下,必须先去全部observer设备上 kill掉 observer,再跑该脚本制作。

2. 登陆observer
选rootservice里随意一个设备登陆,登陆observer

$mysql -h127.1 -uroot -P2881 -p
空登陆密码

这时进去以后,还不可以实行 show database指令,由于数据库还没有有搭建好。

3. 实行 bootstrap
随后在mysql指令行下实行 bootstrap

mysql alter system bootstrap ZONE 'zone1' SERVER 'xxx.xxx.171.187:2882', ZONE 'zone2' SERVER 'xxx.xxx.240.24:2882', ZONE 'zone3' SERVER 'xxx.xxx.241.125:2882';

这一指令一般几秒钟钟就回到了。假如沒有回到或是好长时间之后出错timeout了,那表明前边有observer起动主要参数特定错误。看一下不是是zone名字错误,或是rootservicelist里的ip和port跟 -P和-p 特定的port不一致这些。
寻找缘故处理难题后,实行第一步清除历史时间数据信息文档,从头开始来过。

这一步取得成功后,一个 1-1-1的OceanBase群集就原始化取得成功了。这时撤出mysql指令行,再次登陆的情况下就需要换下来面指令了。

$mysql -h127.1 - -P2881 oceanbase -p
空登陆密码

MySQL [oceanbase] show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| test               |
+--------------------+

但是我提前准备了6台设备用以布署oceanbase群集,因此还必须把别的三台设备添加到 当今群集里。也便是扩充指令了。

4. 扩充oceanbase群集

ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE=’zone_name’];

mysql alter system add server 'xxx.xxx.241.129:2882' zone='zone1';
mysql alter system add server 'xxx.xxx.241.145:2882' zone='zone2';
mysql alter system add server 'xxx.xxx.241.159:2882' zone='zone3';

留意端口号号只必须特定 rpc port(2882), 及其zone不必错加。
加取得成功后,查询当今server目录

MySQL [oceanbase] select zone,svr_ip,svr_port,with_rootserver ,build_version from __all_server order by zone, with_rootserver desc;
+-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+
| zone  | svr_ip         | svr_port | with_rootserver | build_version                                                                 |
+-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+
| zone1 | xxx.xxx.171.187 |     2882 |               1 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
| zone1 | xxx.xxx.241.129 |     2882 |               0 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
| zone2 | xxx.xxx.240.24  |     2882 |               0 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
| zone2 | xxx.xxx.241.145 |     2882 |               0 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
| zone3 | xxx.xxx.241.125 |     2882 |               0 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
| zone3 | xxx.xxx.241.159 |     2882 |               0 | 1.4.60_1571952-758a58e85846f9efb907b1ccb6353846(Mar  9 2018 14:32:07) |
+-------+----------------+----------+-----------------+-------------------------------------------------------------------------------+
6 rows in set (0.00 sec)

备注名称:。

MySQL [oceanbase] alter user root identified by 'root';四、安裝起动反方向代理商OBProxy

前边装上了一个 2-2-2的OceanBase群集,可是顾客端要联接这一数据信息库群集,前边那类联接方法还不足好。由于要考虑到到某一observer连接点服务器宕机难题。传送数据这一observer毫无疑问不太好。
另外,因为OceanBase是一个遍布式数据信息库,数据信息将会遍布在好几个连接点上,但实际在哪儿个设备上顾客端不是了解的,因此必须一个反方向代理商OBProxy 来承担数据信息浏览路由器。

基础理论上obproxy能够安裝在一切设备上。如安裝在observer上,或是单独的设备上,或是运用网络服务器上。而且obproxy因为只做路由器作用,十分轻量,无情况,适用安裝好几个obproxy。安裝好几个obproxy的情况下,能够再前边再根据负荷平衡体制(F5或是lvs,slb等)做一个vip,担负起 obproxy的高能用和负荷平衡功效。那样也不怕某一obproxy挂了或是工作压力过变大。

1. 安裝obproxy rpm包

sudo rpm -ivh obproxy-1.3.3-1506155.el7.x86_64.rpm
文件目录管理权限改到admin客户下。
chown -R admin.admin /opt/taobao/install/obproxy

2. 原始化obproxy客户

mysql CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ;
mysql GRANT SELECT ON *.* to proxyro;

proxyro是个联接observer的写保护账号,obproxy用到到这一账号。

3.  起动obproxy

第一次起动obproxy的情况下,也必须特定一些主要参数。如rootservice 目录。及其特定监视端口号(2883,还可以写其他随意端口号,不跟现有端口号矛盾就可以)

cd /opt/taobao/install/obproxy bin/obproxy -r "xxx.xxx.171.187:2881; xxx.xxx.240.24:2881; xxx.xxx.241.125:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false" -c obdemo

查询系统日志确定是不是有出现异常。

cd /opt/taobao/install/obproxy
tail -f log/obproxy.过程号.log

根据obproxy联接一下OceanBase群集

$mysql -h xxx.xxx.242.22 - -P2883 -p oceanbase

或是

$mysql -h xxx.xxx.242.22 -uobdemo:sys:root -P2883 -p oceanbase

能看出 跟联接mysql很像,差别取决于 user的文件格式。 oceanbase的user文件格式是  “” 或是 "群集名:租赁户名:客户名“ 等。五、分派租赁户(案例)

前边用6台设备构建了一个2-2-2的OceanBase群集。如今某一运用必须申请办理一数量据库。大家其实不会立即把这一OceanBase群集给到运用应用。
具体上刚原始化的OceanBase群集默认设置仅有一个sys租赁户,其规格型号不大(cpu/memory/disk)。

MySQL [oceanbase] select * from __all_unit_config where name='sys_unit_config';
+----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+
| gmt_create                 | gmt_modified               | unit_config_id | name            | max_cpu | min_cpu | max_memory  | min_memory  | max_iops | min_iops | max_disk_size  | max_session_num     |
+----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+
| :49.881126 | :49.881126 |              1 | sys_unit_config |       5 |     2.5 | | |    10000 |     5000 | 592 | 4775807 |
+----------------------------+----------------------------+----------------+-----------------+---------+---------+-------------+-------------+----------+----------+----------------+---------------------+
1 row in set (0.00 sec)

这一sys租赁户仅有 2.5-五个cpu,15-18 G运行内存的规格型号。
因此要给业务流程账号独立分派一个租赁户。这也是OceanBase应用的恰当姿态。

相关租赁户、資源池等定义,

1. 建立資源池规格型号

create resource unit unit_2c10g512g, max_cpu=2, max_memory='10G', min_memory='10G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=;
create resource unit unit_4c20g1024g, max_cpu=4, max_memory='20G', min_memory='20G', max_iops=20000, min_iops=5000, max_session_num=1000000, max_disk_size=;
create resource unit unit_8c40g2048g, max_cpu=8, max_memory='40G', min_memory='40G', max_iops=50000, min_iops=10000, max_session_num=1000000, max_disk_size=;

查询資源规格型号

select * from __all_unit_config;

由于我的检测设备全是物理学机,cpu和运行内存非常大,因此我的好几个规格型号界定的資源都较为大。大伙儿能够依据自身状况改动。

2. 分派資源池

create resource pool pool_demo unit = 'unit_16c50g4096g', unit_num = 1;
select * from __all_resource_pool order by resource_pool_id desc ;

資源池分派后,仅有建立租赁户并关系它才能够被应用。

3. 建立租赁户

create tenant t_obdemo resource_pool_list=('pool_demo');
---- alter tenant t_obdemo set variables ob_tcp_invited_nodes='xxx.xxx.0.0/16,127.0.0.1';

租赁户名能够自定。

注解的alter句子是设定租赁户联接的授权管理,安全性性跟高。但是仅有在1.4.7版本号之后才有。
新租赁户默认设置root登陆密码为空。规矩,最先改登陆密码。

mysql -h xxx.xxx.242.22 - -P2883 oceanbase -A -p
alter user root identified by 'root';

4. 建立运用数据信息库和账号

create database sbtest;
grant all privileges on sbtest.* to sbuser@'%' identified by 'sbtest';

联接运用数据信息库

mysql -h127.1 - -P2883 sbtest -A -psbtest
MySQL [sbtest] show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| sbtest               |
+--------------------+
2 rows in set (0.02 sec) 小结

1.  OceanBase的安裝最先是在每个设备上安裝并起动observer,第一次起动时特定rootservice list和有关主要参数。
2.  原始化OceanBase群集。取得成功后,便可以逐台设备  重新启动一下observer。关掉方法便是 pkill 或是kill。  心急得话就kill -9 。 起动方法便是 cd /home/admin/oceanbase; bin/observer 第二次起动不用特定主要参数,主要参数都会主要参数文档里。原始化proxyro客户。
3. 安裝obproxy手机软件并起动。第一次起动还要特定rootservice和有关主要参数。起动取得成功后能够重新启动obproxy。关掉方法便是pkill或是kill。起动方法便是 cd /opt/taobao/install/obproxy; bin/obproxy  第二次起动不用特定主要参数,主要参数都会主要参数文档里。
4. 分派資源建立租赁户
5. 在租赁户里建立业务流程数据信息库和账号。



新闻资讯

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系