一、目的
1、手动部署一个 OB 单副本集群,包括一个 OBProxy 节点。
2、创建一个业务租户、一个业务数据库,以及一些表等。
二、环境
硬件:CPU:16C 内存:20G 硬盘1:/dev/mapper/vgdata-lvdata 硬盘2:/dev/mapper/vgredo-lvredo
操作系统:CentOS Linux release 7.9.2009 (Core)
三、服务器初始化
安装相关工具软件
yum install epel-release -y
yum install -y net-tools lrzsz wget tree htop dstat
详细配置请参考:
https://open.oceanbase.com/docs/tutorials/quickstart/V1.0.0/2-4-how-to-initialize-the-server-environment
内核参数修改:
修改会话变量设置:
配置时间同步服务:
校准时间服务器:
磁盘文件系统划分:
#创建pv
pvcreate /dev/sdb
pvcreate /dev/sdc
#创建vg
vgcreate vgdata /dev/sdb
vgcreate vgredo /dev/sdc
#创建lv
lvcreate -l 100%free vgdata -n lvdata
lvcreate -L 50G vgredo -n lvredo
#格式化文件系统
mkfs.ext4 /dev/mapper/vgdata-lvdata
mkfs.ext4 /dev/mapper/vgredo-lvredo
#挂载文件系统
mkdir -p /data /redo
vi /etc/fstab
/dev/mapper/vgdata-lvdata /data ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0
/dev/mapper/vgredo-lvredo /redo ext4 defaults,noatime,nodiratime,nodelalloc,barrier=0 0 0
mount -a
#初始化目录
# 创建相关目录
mkdir -p /home/admin/oceanbase/store/obdemo
mkdir -p /data/obdemo/{sstable,etc2}
mkdir -p /redo/obdemo/{clog,ilog,slog,etc3}
# 建立目录链接
for f in {sstable,etc2}; do ln -s /data/obdemo/$f /home/admin/oceanbase/store/obdemo/$f;done
for f in {clog,ilog,slog,etc3}; do ln -s /redo/obdemo/$f /home/admin/oceanbase/store/obdemo/$f ; done
# 修改目录所有者权限
chown -R admin:admin /data
chown -R admin:admin /redo
# 查看目录结构
tree /data/obdemo
tree /redo/obdemo
tree /home/admin/oceanbase/store/
四、部署OceanBase集群
[root@ob /]# mkdir setupfiles
[root@ob setupfiles]#
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.1-4.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obproxy-3.2.0-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/libobclient-2.0.0-2.el7.x86_64.rpm
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obclient-2.0.0-2.el7.x86_64.rpm
创建安装用户
# 新增普通用户 admin
[root@ob /]# useradd admin
# 修改用户密码
[root@ob /]# passwd admin
# 配置用户admin sudo权限
vi /etc/sudoers
#安装oceanbase数据库程序
#执行如下命令
[root@ob /]# su - admin
[admin@ob ~]$cd /obsetupfiles
[admin@ob setupfiles]$ sudo rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
[admin@ob setupfiles]$ sudo rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm
#安装obclient客户端程序
#执行如下命令
[admin@ob setupfiles]$ sudo rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
[admin@ob setupfiles]$ sudo rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm
#安装obproxy代理程序
#执行如下命令
[admin@ob setupfiles]$ sudo rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
#启动节点observer
#执行如下命令启动单节点单副本observer进程
[admin@ob ~]$echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >> ~/.bash_profile
[admin@ob ~]$. ~/.bash_profile
[admin@ob ~]$cd ~/oceanbase && bin/observer -i ens192 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '172.200.60.200:2882:2881' -c 20200322 -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/etc2;/redo/obdemo/etc3" -d ~/oceanbase/store/obdemo
有报错:create pid dir fail: ./run/
解决:ob进程没有起来,observer.log日志没生成,后检查发现oceanbase目录及store目录还是root,修改目录权限为admin再执行启动命令未报错,查询ob端口已启动。
初始化集群
#执行如下命令初始化集群(初始密码为空)
obclient -h 172.200.60.200 -P 2881 -uroot -p -c -A
set session ob_query_timeout=1000000000;
alter system bootstrap ZONE 'zone1' SERVER '172.200.60.200:2882';
# 退出重新登录(租户sys),执行如下命令:
obclient -h 172.200.60.200 -P 2881 -uroot@sys -p -c -A oceanbase
# 并查看当前server列表
select zone, svr_ip, svr_port, with_rootserver, status from __all_server order by zone, with_rootserver desc;
设置相关密码
主要是修改管理员root的密码,以及创建obproxy代理拥护。
#集群管理员(root@sys)密码默认集群管理员(root@sys)的密码是空的,这里需要设置一个密码。
alter user root identified by 'AAaa@@123';
#OBPROXY用户(proxyro)密码默认OBPROXY连接OceanBase集群使用用户proxyro,这个用户不存在需要创建。
grant select on oceanbase.* to proxyro identified by 'AAaa@@123';
启动obproxy进程
启动OBPROXY进程也推荐在软件安装目录,进程obproxy会在该目录下生成目录etc保存OBPROXY的运行参数,以及目录log保存运行日志。
# 执行如下命令启动obproxy进程
./obproxy -r "172.200.60.200:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo
登录obproxy,查看系统管理员密码参数
obclient -h 172.200.60.200 -P 2883 -u root@proxysys -p
show proxyconfig like '%sys_password%';
# 设置相关密码
修改OBPROXY用户密码是通过修改参数的方式,命令是:alter proxyconfig set obproxy_sys_password = 'AAaa@@123';
同时还需要修改OBPROXY连接OceanBase集群用户proxyro的密码。这样OBPROXY才能跟 OceanBase集群正常连接。这个密码就是前面 OceanBase 集群初始化后创建的用户proxyro的密码。
alter proxyconfig set observer_sys_password = 'AAaa@@123';
五、验证OceanBase集群
部署成功oceanbase集群、客户端和obproxy代理之后,验证相关功能时直接登录obproxy代理访问数据库。
登录测试OceanBase集群
登录使用命令:obclient -h 172.200.60.200 -P 2883 -uroot@sys -p -c -A oceanbase
六、创建租户、资源规格和资源池
#查看当前资源规格及资源池配置:
select unit_config_id, name from __all_unit_config;
select resource_pool_id, name from __all_resource_pool;
#创建租户所需的资源规格和资源池
create resource unit my_unit1 max_cpu=1, max_memory='1g', max_iops=128, max_disk_size='5g',
max_session_num=64, min_cpu=1, min_memory='1g', min_iops=128;
create resource pool my_pool1 unit='my_unit1', unit_num=1, zone_list=('zone1');
#再次查看资源规格及资源池配置
#执行如下命令创建一个租户对象
create tenant my_tenant1 resource_pool_list=('my_pool1');
七、创建业务数据库、数据表
重新登录数据库,连接新建业务租户:my_tenant1
执行命令:obclient -h 127.0.0.1 -P 2883 -u root@my_tenant1 -p -c -A oceanbase
注:新建租户下默认管理员密码为空
# 修改管理员密码
alter user root identified by 'AAaa@@123';
# 创建数据库 dbtest
create database dbtest;
创建业务数据表
use dbtest
CREATE TABLE Course(Cno VARCHAR(20) ,Cname VARCHAR(20) ,Tno VARCHAR(20) );
INSERT INTO course values ("3-105","计算机导论",825);
INSERT INTO course values ("3-245","操作系统",804);
INSERT INTO course values ("6-166","数字电路",856);
INSERT INTO course values ("9-888","高等数学",831);
select * from Course;
实践结束。