作者简介:邹阳,数据库工程师。
本实验手动部署单节点单副本集群。
1、部署环境
1.1服务器信息
1.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
2.2安装相关工具软件
yum install epel-release -y
yum install -y net-tools lrzsz tree htop dstat sysvinit-tools
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
2.4修改会话变量设置
cat >> /etc/security/limits.conf <<EOF * - nofile 655360 * - nproc 655360 * - core unlimited * - stack unlimited EOF
2.5关闭防火墙
systemctl stop firewalld systemctl disable firewalld
2.6关闭SELinux
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
2.7创建安装用户
# 新增普通用户 admin useradd admin # 改用户密码 echo "admin:admin" | chpasswd # 配置用户admin sudo权限 visudo
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}
# 建立目录链接
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 chown -R admin:admin /home/admin
# 查看目录结构
tree /data/obdemo tree /redo/obdemo tree /home/admin/oceanbase/store/
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
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
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
3.4安装obproxy代理程序
#执行如下命令
sudo rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
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"
netstat -ntlp | grep observer
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';
# 退出重新登录(租户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;
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';
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
# 登录obproxy,查看系统管理员密码参数(初始密码为空)
obclient -h 172.16.100.21 -P 2883 -u root@proxysys -p show proxyconfig like '%sys_password%';
# 设置相关密码
修改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';
4、验证OceanBase集群
部署成功oceanbase集群、客户端和obproxy代理之后,验证相关功能时直接登录obproxy代理访问数据库。
4.1登录测试OceanBase集群(密码为password)
登录使用命令:
obclient -h 172.16.100.21 -P 2883 -uroot@sys -p -c -A oceanbase
4.2创建租户
#查看当前资源规格及资源池配置:
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'); select tenant_name from __all_tenant;
4.3创建业务数据库
重新登录数据库,连接新建业务租户:my_tenant1
执行命令:
obclient -h 127.0.0.1 -P 2883 -u root@my_tenant1 -p -c -A oceanbase
注:新建租户下默认管理员密码为空
# 修改管理员密码
alter user root identified by 'password';
# 创建数据库 userdb
create database userdb;
4.4创建业务数据表
create table user1(id int(4) primary key, name varchar(20));
#新增数据表记录
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社区版入门到实战教程直播正在进行中~
快和小伙伴一起进群交流学习吧~
加入直播群方式一:
钉钉群号3255 4020
加入直播群方式二:
扫码下方二维码加入