ITPub博客

首页 > 数据库 > 国内数据库 > 实践练习二:手动部署 OceanBase 集群

实践练习二:手动部署 OceanBase 集群

原创 国内数据库 作者:a001z82 时间:2022-12-21 19:19:32 0 删除 编辑

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

#使用了for in do循环

如果属主属组不是 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用户即时生效

3.1 observer与obproxy启动

启动 observer进程

[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 原因:需要初始化集群

启动集群自举( bootstrap引导程序),约1分钟时间。

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-12-14

  • 博文量
    4
  • 访问量
    1642