暂无图片
暂无图片
4
暂无图片
暂无图片
3
暂无图片

oceanbase初体验之二:手动布署oceanbase集群

原创 cqiwen 2022-02-28
2271

一、环境配置(略)

参考我的另一篇文章,有详细介绍:oceanbase集群环境准备

二、下载安装包

从官网上下载: https://open.oceanbase.com/softwareCenter/community
下载速度快,但需要注册一个账号(免费)。
主要下载内容:oceanbase-ce、oceanbase-ce-libs、obproxy和obclient(可选)

三、定制安装位置

可以直接使用rpm包安装(会安装到/home/admin/oceanbase目录中),也可以先解压rpm包,然后将解压后的文件拷贝到其它目录下。

3.1 直接安装方式:

yum install oceanbase-ce* -y
yum install obclient-2.0.0-2.el7.x86_64.rpm
yum install obproxy-3.2.0-1.el7.x86_64.rpm

3.2 解压rpm方式安装

su - admin
cd ~/soft
[admin@master soft]$ rpm2cpio oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm |cpio -idmv
./home/admin/oceanbase/bin
./home/admin/oceanbase/bin/import_time_zone_info.py
./home/admin/oceanbase/bin/observer
./home/admin/oceanbase/etc
./home/admin/oceanbase/etc/oceanbase_upgrade_dep.yml
./home/admin/oceanbase/etc/priv_checker.py
./home/admin/oceanbase/etc/timezone_V1.log
./home/admin/oceanbase/etc/upgrade_checker.py
./home/admin/oceanbase/etc/upgrade_cluster_health_checker.py
./home/admin/oceanbase/etc/upgrade_post.py
./home/admin/oceanbase/etc/upgrade_post_checker.py
./home/admin/oceanbase/etc/upgrade_pre.py
./home/admin/oceanbase/etc/upgrade_rolling_post.py
./home/admin/oceanbase/etc/upgrade_rolling_pre.py
396039 blocks

[admin@master soft]$ rpm2cpio oceanbase-ce-libs-3.1.2-10000392021123010.el7.x86_64.rpm |cpio -idmv
./home/admin/oceanbase/lib
./home/admin/oceanbase/lib/libaio.so
./home/admin/oceanbase/lib/libaio.so.1
./home/admin/oceanbase/lib/libaio.so.1.0.1
./home/admin/oceanbase/lib/libmariadb.so
./home/admin/oceanbase/lib/libmariadb.so.3
918 blocks
注:它的解压路径是相对路径,只会解压到当前rpm包所在的目录下

# 将解压后的目录移到正式目录下
mv ./home/admin/oceanbase ~/observer_c1

[admin@master observer_c1]$ tree
.
├── bin
│   ├── import_time_zone_info.py
│   └── observer
├── etc
│   ├── oceanbase_upgrade_dep.yml
│   ├── priv_checker.py
│   ├── timezone_V1.log
│   ├── upgrade_checker.py
│   ├── upgrade_cluster_health_checker.py
│   ├── upgrade_post_checker.py
│   ├── upgrade_post.py
│   ├── upgrade_pre.py
│   ├── upgrade_rolling_post.py
│   └── upgrade_rolling_pre.py
└── lib
    ├── libaio.so -> libaio.so.1.0.1
    ├── libaio.so.1 -> libaio.so.1.0.1
    ├── libaio.so.1.0.1
    ├── libmariadb.so -> libmariadb.so.3
    └── libmariadb.so.3
将~/observer_c1文件拷贝到其它节点中

# 每个节点上创建相同的目录
mkdir -p ~/data/observer_c1/{sstable,etc3} ~/redo/observer_c1/{clog,ilog,slog,etc2}
for f in {clog,ilog,slog,etc2}; do ln -s ~/redo/observer_c1/$f ~/observer_c1/store/$f ; done
for f in {sstable,etc3}; do ln -s ~/data/observer_c1/$f ~/observer_c1/store/$f; done

# 每个节点上添加环境变量
su - admin
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/observer_c1/lib' >> ~/.bash_profile
. ~/.bash_profile

# 每个节点上启动observer
cd ~/observer_c1 && bin/observer -i br1 -p 2881 -P 2882 -z zone1 -d ~/observer_c1/store -r '192.168.18.28:2882:2881' -c 20220228 -n obcluster1 -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/observer_c1/etc3;~/redo/observer_c1/etc2"
注:
1)每个节点上都要执行,其中第三条命令在每个节点上只修改-z参数,节点1为 -z zone1,节点2为 -z zone2,以此类推。-z 参数指定该节点是属于哪个zone,每个zone都有完整的副本数据;
2)-r参数后跟的是集群主机列表,形式为<IP:rpc_port:mysql_port>,例如'172.20.249.52:2882:2881;172.20.249.49:2882:2881;172.20.249.51:2882:2881'。此实验中该集群只有1个节点,则只填1个节点的信息。
3)-o参数后面跟的是对主机资源的限制。后面 -o 参数不是必须的。这里主要是测试机器内存不足,所以需要指定一些影响内存的参数。如果您的机器内存足够(如大于 64G),则建议不添加-o参数;
复制

四、集群自举(初始化)

当 OceanBase 集群三个节点都正常启动,并且监听正常时,您可连接到任一节点(通过 2881 端口直连),进行自举(bootstrap 集群初始化)操作。 初始密码是空。

obclient -h 192.168.18.28 -u root -P 2881 -p -c -A

遇到的问题:
MySQL [(none)]> show databases;
ERROR 1146 (42S02): Table 'oceanbase.__all_database' doesn't exist
原因:需要初始化集群

# 初始化集群:
set session ob_query_timeout=1000000000;
alter system bootstrap ZONE 'zone1' SERVER '192.168.18.28:2882';  --单节点集群
--如果是三节点,则用以下命令
--alter system bootstrap ZONE 'zone1' SERVER '172.20.249.52:2882',ZONE 'zone2' SERVER '172.20.249.49:2882',ZONE 'zone3' SERVER 172.20.249.51:2882';
此过程大概要执行几分钟。

# 设置相关密码
默认集群管理员(root@sys)的密码为空,登录后需要设置一个密码:
alter user root identified by 'rootPwD' ;

设置OBPROXY 用户(proxyro)密码:
默认 OBPROXY 连接 OceanBase 集群时使用的用户名为 proxyro 。该用户不存在,需要手动创建。
create user proxyro identified by 'proxyroPwD' ;
grant select on oceanbase.* to proxyro;
复制

五、安装 OBPROXY 代理

5.1 解压缩方式安装

rpm2cpio oceanbase-ce-libs-3.1.2-10000392021123010.el7.x86_64.rpm |cpio -idmv
[admin@master soft]$ rpm2cpio obproxy-3.2.0-1.el7.x86_64.rpm |cpio -idmv
./home/admin/obproxy-3.2.0/bin
./home/admin/obproxy-3.2.0/bin/obproxy
./home/admin/obproxy-3.2.0/bin/obproxyd.sh
72258 blocks

mv ./home/admin/obproxy-3.2.0 ~/
复制

5.2 启动 OBPROXY 进程

cd ~/obproxy-3.2.0/ && bin/obproxy -r "172.20.249.52:2881;172.20.249.49:2881;172.20.249.51:2881" -p 2883 \
-o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" \
-c obcluster1
注意:-c参数后跟的集群名要与oceanbase启动参数中的-n参数指定的名称一致
单节点布署时-r参数中只指定1个节点即可。
cd ~/obproxy-3.2.0/ && bin/obproxy -r "192.168.18.28:2881" -p 2883 \
-o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" \
-c obcluster1
复制

5.3 登录 OBPROXY 修改密码:

登录用户名:root@proxysys,端口:2883,初始密码:空。

obclient -h 192.168.18.28 -u root@proxysys -P 2883 -p
> alter proxyconfig set obproxy_sys_password = 'proxysysPwD' ;

修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码:
> alter proxyconfig set observer_sys_password = 'proxyroPwD' ;
复制

5.4 查看是否部署成功:

obclient -h192.168.18.28 -uroot@sys#obcluster1 -P2883 -prootPwD -c -A oceanbase
注意:此处-p的密码是oceanbase集群中root的密码

[admin@master obproxy-3.2.0]$ obclient -h192.168.18.28 -uroot@sys#obcluster1 -P2883 -prootPwD -c -A oceanbase
Welcome to the OceanBase.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.25 OceanBase 3.1.2 (r10000392021123010-d4ace121deae5b81d8f0b40afbc4c02705b7fc1d) (Built Dec 30 2021 02:47:29)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [oceanbase]> show databases;
+--------------------+
| Database           |
+--------------------+
| oceanbase          |
| information_schema |
| mysql              |
| SYS                |
| LBACSYS            |
| ORAAUDITOR         |
| test               |
+--------------------+
7 rows in set (0.004 sec)

MySQL [oceanbase]>
复制
最后修改时间:2022-03-01 10:41:14
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

11 0
暂无图片
1年前
评论
暂无图片 0
👍
1年前
暂无图片 点赞
评论
墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论
墨天轮编辑部
暂无图片
3年前
评论
暂无图片 0
谢谢您投稿第二期 OceanBase 技术征文大赛🌹本次活动将于3月11日截止征稿,欢迎您多多投稿!
3年前
暂无图片 点赞
评论