首页 > 数据库 > 国内数据库 > 实践练习二:手动部署 OceanBase 集群
1. 环境修改

手动部署不需 obd工作目录

2.
注意 OB单副本可以是多个observer节点
数据文件和 redo日志最好部署在不同的磁盘以获取更高性能
修改内核参数
vim /etc/sysctl.conf
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 生效
修改会话变量
vim /etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited
退出当前会话,重新登录。执行以下命令,查看配置是否生效:
ulimit -a
2.1
建用户
useradd admin
passwd admin 输入密码 111111
添加
admin的sudo权限
,
执行
visudo命令(相当于
vim /etc/sudoers
)
admin ALL=(ALL) ALL
2.2配置ssh免密登录(单机也要)
su - admin
ssh-keygen -t rsa 生成公钥与私钥对以RSA非对称加密方式,一路回车
ssh-copy-id `hostname -i` ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利 。 hostname -i为显示本机IP。
输入 yes再输入admin用户的密码 ,最后提示
Now try logging into the machine, with: “ssh ‘172.17.0.12’”
and check to make sure that only the key(s) you wanted were added.
2.3 准备rpm包传到主机安装(没有选择最新版本,用的是22年5月之前的版本)
https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/
libobclient-2.0.1-3.el7.x86_64.rpm
obclient-2.0.1-2.el7.x86_64.rpm
ob-deploy-1.3.3-11.el7.x86_64.rpm
obproxy-ce-3.2.3-2.el7.x86_64.rpm
oceanbase-ce-3.1.3-10100032022041510.el7.x86_64.rpm
oceanbase-ce-libs-3.1.3-10100032022041510.el7.x86_64.rpm
oceanbase-ce-utils-3.1.3-10100032022041510.el7.x86_64.rpm
rpm -qa| e grep 'oceanbase|ob-|obclient|libob' 查询已安装的 OB相关包
rpm -ivh *.rpm root下安装(admin装会各种报错)
2.4 admin用户创建目录,软连接,环境变量。
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
如果属主属组不是 admin则root执行 chown -R admin:admin /data /redo /home/admin/oceanbase
yum install tree -y
tree /home/admin/oceanbase/
检查 rpm包安装信息
rpm -ql oceanbase-ce
rpm -ql oceanbase-ce-libs
rpm -ql obproxy
设置 LD_LIBRARY_PATH环境变量 ( admin用户执行,可能需要root授权chown admin:admin /home/admin/ )
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >> ~/.bash_profile
. ~/.bash_profile admin用户即时生效
[admin@localhost ~]$ cd ~/oceanbase && bin/observer -i lo -p 2881 -P 2882 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '127.0.0.1:2882:2881' -c 20210912 -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=8,net_thread_count=2,datafile_size=10G,stack_size=1536K" -d /home/admin/oceanbase/store/obdemo
ps -ef |grep observer

遇到的问题: MySQL [(none)]> show databases; ERROR 1146 (42S02): Table 'oceanbase.__all_database' doesn't exist 原因:需要初始化集群
mysql -h127.0.0.1 -u root -P2881 -p -c -A 提示密码时回车( 初始密码为空 )
mysql[(none)]> set session ob_query_timeout=1000000000;
mysql[(none)]> alter system bootstrap ZONE 'zone1' SERVER '127.0.0.1:2882';
MySQL [(none)]> alter user root identified by '111111'; 设密码
MySQL [(none)]> use oceanbase;
MySQL [oceanbase]> select zone, svr_ip, svr_port, with_rootserver, status from __all_server order by zone, with_rootserver desc;

OBPROXY 用户(proxyro)密码默认OBPROXY 连接 OceanBase 集群使用 数据库 用户 proxyro 。这个用户需要创建。
grant select on oceanbase.* to proxyro identified by ' 111111 ';
启动 OBPROXY进程
也 建议 在 其 软件安装目录,进程 OBPROXY会在该目录下生成目录 etc 保存 OBPROXY 的运行参数,以及目录 log 保存运行日志。 obdemo应该是集群名
cd ~/obproxy-3.2.3/ && bin/obproxy -r "127.0.0.1:2881" -p 2883 -o "enable_strict_kernel_release=false, enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo
检查进程和监听
ps -ef|grep obproxy
netstat -ntlp|grep obproxy

show full processlist命令显示哪些线程正在运行

3.2
以 2883登录obproxy
obclient -h127.0.0.1 -u root@proxysys -P 2883 -p
修改 obproxy sys用户密码
alter proxyconfig set obproxy_sys_password=' 111111 ';
修改 OBPROXY连接OceanBase集群用户proxyro密码 , 密码和前面创建用户 proxyro的密码相同
alter proxyconfig set observer_sys_password=' 111111 ';
此时以 2883登录obproxy 并show databases;与2881直连显示的库不同
原因为 proxysys是一个特殊的租户,下面没有database的概念,不应该能执行show database的命令, 据说 下个版本会修复;
4.建租户,数据库等。

obclient -h 127.0.0.1 -P 2883 -uroot@sys -p -c -A oceanbase
创建租户所需的资源规格和资源池
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 和 oceanbase 库
执行命令: obclient -h 127.0.0.1 -P 2883 -u root@my_tenant1 -p -c -A oceanbase
新建租户下默认管理员密码为空 , 修改管理员密码
alter user root identified by ' 111111 ';
创建数据库 dbtest
create database dbtest 1 utf8 ; 新版本 mysql应为utf8bm4
use dbtest ;
CREATE TABLE c ourse(Cno VARCHAR(20) ,Cname VARCHAR(20) ,Tno VARCHAR(20) );
INSERT INTO course values ("6-166","数字电路",856);
INSERT INTO course values ("9-888","高等数学",831);
select * from Course;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22333459/viewspace-2928959/ ,如需转载,请注明出处,否则将追究法律责任。