华信永道实践:手动部署 OceanBase 集群

2024年 5月 7日 62.1k 0

作者简介:邹阳,数据库工程师。

本实验手动部署单节点单副本集群。

1、部署环境

1.1服务器信息

华信永道实践:手动部署 OceanBase 集群-1

1.2角色划分

华信永道实践:手动部署 OceanBase 集群-2

2、服务器初始化

执行OceanBase数据库软件部署前对服务器的相关初始化配置。

2.1配置使用阿里源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

华信永道实践:手动部署 OceanBase 集群-3

2.2安装相关工具软件

yum install epel-release -y

华信永道实践:手动部署 OceanBase 集群-4

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

华信永道实践:手动部署 OceanBase 集群-5

2.3内核参数修改

cat >> /etc/sysctl.conf <<EOF
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
EOF

让配置生效

sysctl -p

华信永道实践:手动部署 OceanBase 集群-6

2.4修改会话变量设置

cat >> /etc/security/limits.conf <<EOF
* -   nofile 655360
* -   nproc 655360
* -   core  unlimited
* -   stack unlimited
EOF

华信永道实践:手动部署 OceanBase 集群-7

2.5关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.6关闭SELinux

setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config

华信永道实践:手动部署 OceanBase 集群-8

2.7创建安装用户

# 新增普通用户 admin
useradd admin
# 改用户密码
echo "admin:admin" | chpasswd
# 配置用户admin sudo权限
visudo

华信永道实践:手动部署 OceanBase 集群-9

2.8修改系统时区

    将系统时区设置为中国的+8区

   tzselect

   分别依次选择 5) Asia、9) China、1) Beijing Time、1) Yes

vi /etc/profile
export TZ='Asia/Shanghai'

   #生效修改

source /etc/profile

2.9初始化目录

# 创建相关目录

mkdir -p /home/admin/oceanbase/store/obdemo 
mkdir -p /data/obdemo/{sstable,etc2}
mkdir -p /redo/obdemo/{clog,ilog,slog,etc3}

华信永道实践:手动部署 OceanBase 集群-10

# 建立目录链接

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

华信永道实践:手动部署 OceanBase 集群-11

# 修改目录所有者权限

chown -R admin:admin /data
chown -R admin:admin /redo
chown -R admin:admin /home/admin

华信永道实践:手动部署 OceanBase 集群-12

# 查看目录结构

tree /data/obdemo
tree /redo/obdemo
tree /home/admin/oceanbase/store/

华信永道实践:手动部署 OceanBase 集群-13

3、部署OceanBase集群

本实验手动部署单节点单副本OceanBase集群,包括代理服务obproxy和obclient。

3.1下载安装程序包文件

使用如下命令下载相关程序包文件:

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

华信永道实践:手动部署 OceanBase 集群-14

华信永道实践:手动部署 OceanBase 集群-1

3.2安装oceanbase数据库程序

#执行如下命令

su - admin
cd /soft
sudo rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
sudo rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm

华信永道实践:手动部署 OceanBase 集群-16

3.3安装obclient客户端程序

#执行如下命令

sudo rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
sudo rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm

华信永道实践:手动部署 OceanBase 集群-17

3.4安装obproxy代理程序

#执行如下命令

sudo rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm

华信永道实践:手动部署 OceanBase 集群-18

3.5启动节点observer

添加环境变量

su - admin
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib/' >> ~/.bash_profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib/

#执行如下命令启动单节点单副本observer进程

su - admin
cd oceanbase
bin/observer -i eth0 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '172.16.100.21:2882:2881' -c 20211221 -n obdemo -o "datafile_size=50G,__min_full_resource_pool_memory=268435456,config_additional_dir=/data/obdemo/etc2;/redo/obdemo/etc3"

华信永道实践:手动部署 OceanBase 集群-19

netstat -ntlp | grep observer

华信永道实践:手动部署 OceanBase 集群-20

3.6初始化集群

#执行如下命令初始化集群(初始密码为空)

obclient -h 172.16.100.21 -P 2881 -uroot -p -c -A
set session ob_query_timeout=1000000000;
alter system bootstrap ZONE 'zone1' SERVER '172.16.100.21:2882';

华信永道实践:手动部署 OceanBase 集群-21

# 退出重新登录(租户sys),执行如下命令:

obclient -h 172.16.100.21 -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;

华信永道实践:手动部署 OceanBase 集群-22

3.7设置相关密码

主要是修改管理员root的密码,以及创建obproxy代理拥护。

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

alter user root identified by 'password';

#OBPROXY用户(proxyro)密码默认OBPROXY连接OceanBase集群使用用户proxyro,这个用户不存在需要创建。

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

华信永道实践:手动部署 OceanBase 集群-23

3.8启动obproxy进程

启动OBPROXY进程也推荐在软件安装目录,进程obproxy会在该目录下生成目录etc保存OBPROXY的运行参数,以及目录log保存运行日志。

# 执行如下命令启动obproxy进程

bin/obproxy -r "172.16.100.21:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo

华信永道实践:手动部署 OceanBase 集群-24

# 登录obproxy,查看系统管理员密码参数(初始密码为空)

obclient -h 172.16.100.21 -P 2883 -u root@proxysys -p
show proxyconfig like '%sys_password%';

华信永道实践:手动部署 OceanBase 集群-25

# 设置相关密码

修改OBPROXY用户密码是通过修改参数的方式,命令是:alter proxyconfig set

alter proxyconfig set obproxy_sys_password = 'obproxy';

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

alter proxyconfig set observer_sys_password = 'proxyro';

华信永道实践:手动部署 OceanBase 集群-26

4、验证OceanBase集群

部署成功oceanbase集群、客户端和obproxy代理之后,验证相关功能时直接登录obproxy代理访问数据库。

4.1登录测试OceanBase集群(密码为password)

登录使用命令:

obclient -h 172.16.100.21 -P 2883 -uroot@sys -p -c -A oceanbase

华信永道实践:手动部署 OceanBase 集群-27

4.2创建租户

#查看当前资源规格及资源池配置:

select unit_config_id, name from __all_unit_config;
select resource_pool_id, name from __all_resource_pool;

华信永道实践:手动部署 OceanBase 集群-28

#创建租户所需的资源规格和资源池

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');

#再次查看资源规格及资源池配置

华信永道实践:手动部署 OceanBase 集群-29

#执行如下命令创建一个租户对象

create tenant my_tenant1 resource_pool_list=('my_pool1');
select tenant_name from __all_tenant;

华信永道实践:手动部署 OceanBase 集群-30

4.3创建业务数据库

重新登录数据库,连接新建业务租户:my_tenant1

执行命令:

obclient -h 127.0.0.1 -P 2883 -u root@my_tenant1 -p -c -A oceanbase

注:新建租户下默认管理员密码为空

华信永道实践:手动部署 OceanBase 集群-31

# 修改管理员密码

alter user root identified by 'password';

华信永道实践:手动部署 OceanBase 集群-32

# 创建数据库 userdb

create database userdb;

华信永道实践:手动部署 OceanBase 集群-33

4.4创建业务数据表

create table user1(id int(4) primary key, name varchar(20));

华信永道实践:手动部署 OceanBase 集群-34

#新增数据表记录

insert into user1(id, name) values(1, '张龙');
insert into user1(id, name) values(2, '赵虎');
insert into user1(id, name) values(3, '王朝');
insert into user1(id, name) values(4, '马汉');

华信永道实践:手动部署 OceanBase 集群-35

 

 结束语

OceanBase社区版入门到实战教程直播正在进行中~

快和小伙伴一起进群交流学习吧~

加入直播群方式一:

钉钉群号3255 4020

加入直播群方式二:

扫码下方二维码加入

华信永道实践:手动部署 OceanBase 集群-36

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论