手动搭建ob三副本集群+obproxy

2024年 5月 7日 72.2k 0

之前两篇笔记使用了obd自动安装部署obclust单副本和三副本集群

obd安装部署单副本:https://www.modb.pro/db/193823

obd安装部署三副本+opbroxy:https://www.modb.pro/db/194750

这次我们不打算使用obd,选择手动部署。以下是我的搭建步骤,其中有一些步骤出现错误,上图文:

这次我们不是用obd自动部署,而是是用手动安装部署,上一次我们安装的三节点ob集群是用的用户是admin,为了给自己留个学习环境,这次我们用一个新的用户admintwo用户手工安装(ps:我只偷偷使用了一台服务器)

1、环境配置

    因为我这里是在一台机器上折腾,所以环境变量都省掉了,唯一需要的就是配置了admintwo用户的ssh免密认证。

在主控机上操作,因为我就一台机器所以复制以此即可

ssh-keygen -t rsa
ssh-copy-id observer1-ip
ssh-copy-id observer2-ip
ssh-copy-id observer3-ip

2、安装oceanbase-ce包

默认安装到/home/admin/oceanbase下面,我们需要安装到/home/admintwo/oceanbase

rpm -ivh --prefix=/home/admintwo/oceanbase/ oceanbase-ce-*.rpm

手动搭建ob三副本集群+obproxy-1

安装成狗后目录结构如下

手动搭建ob三副本集群+obproxy-2

需要给oceanbase目录更改一下权属

chown -R admintwo:admintwo /home/admintwo/oceanbase/

3、手动创建目录

模拟三个节点创建三个节点的data目录

mkdir -p /home/admintwo/oceanbase/store/obdata{1,2,3}/

在三个数据目录下创建对应的文件夹

sstable,etc3,clog,ilog,slog,etc2

官网中把sstable,etc3创建到了/data/下面,clog,ilog,slog,etc2创建到了/redo下,这样需要创建一个软链接到 /home/admintwo/oceanbase/store/obdata/,方便重挂载两块新的磁盘,

ln -s /redo/clog /home/admintwo/oceanbase/store/obdata{1,2,3}/

我们这里就一台机器,也没有那么多磁盘,就不需要软连接了,直接在目标路径创建

mkdir -p /home/admintwo/oceanbase/store/obdata{1,2,3}/{sstable,etc3,clog,ilog,slog,etc2}

创建完的路径结构如下:

手动搭建ob三副本集群+obproxy-3

4、修改环境变量

vi .bash_profile增加以下内容

export PATH=$PATH:/home/admintwo/oceanbase/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admintwo/oceanbase/lib

使配置生效

source .bash_profile

5、启动observer

Server1:
 cd /home/admintwo/oceanbase/store/obdata1
 observer -i ens192 -p 5881 -P 5882 -z zone1 -d /home/admintwo/oceanbase/store/obdata1 -r '10.251.19.65:5882:5881;10.251.19.65:6882:6881;10.251.19.65:7882:7881' -c 2 -n mandb -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435465,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=8G,stack_size=512K"
Server2:
 cd /home/admintwo/oceanbase/store/obdata2
 observer -i ens192 -p 6881 -P 6882 -z zone2 -d /home/admintwo/oceanbase/store/obdata2 -r '10.251.19.65:5882:5881;10.251.19.65:6882:6881;10.251.19.65:7882:7881' -c 2 -n mandb -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435465,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=8G,stack_size=512K"
Server3:
 cd /home/admintwo/oceanbase/store/obdata3
 observer -i ens192 -p 7881 -P 7882 -z zone3 -d /home/admintwo/oceanbase/store/obdata3 -r '10.251.19.65:5882:5881;10.251.19.65:6882:6881;10.251.19.65:7882:7881' -c 2 -n mandb -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435465,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=4,datafile_size=8G,stack_size=512K"

注意:必须进入到对应数据目录启动相应的节点,否则会报pid已经存在,个人认为既然已经指定-d参数,那么对应的pid应该自动指定pid的生成路径。

6、检查进程是否启动成功

ps -ef | grep observer

手动搭建ob三副本集群+obproxy-4

netstat -ntlp

手动搭建ob三副本集群+obproxy-5

7、初始化集群

连接到任意一个节点

mysql -h 10.251.19.65 -u root -P 5881 -p -c -A

手动搭建ob三副本集群+obproxy-6

第一次登录报错,查询oceanbase的错误码发现

Error 8001 (08004) :observer正在启动,等待一会重新连接即可

执行一下语句进行初始化(自举)

set session ob_query_timeout=1000000000;alter system bootstrap ZONE 'zone1' SERVER '10.251.19.65:5882',ZONE 'zone2' SERVER '10.251.19.65:6882',ZONE 'zone3' SERVER '10.251.19.65:7882';

手动搭建ob三副本集群+obproxy-7

8、安装obproxy

因为我之前使用obd搭建三副本的时候安装过obproxy,因此我又找了其他一台机器重新安装了obproxy。避免冲突

手动搭建ob三副本集群+obproxy-8

同样注意默认路径,如果不指定路径就会安装在/home/admin/obproxy{版本号},需要登录root,把目录权属给admin

9、启动obproxy

进入到obproxy目录,

./bin/obproxy -r "10.251.19.65:5881;10.251.19.65:6881;10.251.19.65:7881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c mandb

手动搭建ob三副本集群+obproxy-9

10、修改obproxy的密码

mysql -h 10.251.19.57 -u root@proxysys -P 2883 -p

手动搭建ob三副本集群+obproxy-10

如果使用obproxy连接ob集群,还需要配置observer的密码,与我们之前配置的observer密码移植。

手动搭建ob三副本集群+obproxy-11

11、使用obproxy登录手动搭建的三副本集群

手动搭建ob三副本集群+obproxy-12

登录报错,查看obproxy的日志 目录在/home/admin/obproxy{版本号}/log/obproxy_xflush.log发现如下错误

手动搭建ob三副本集群+obproxy-13

obproxyro用户连接失败,我登录observer的sys租户,查询__all_user发现并没有这个用户,

难道是需要在sys租户下创建这个用户?

连接到某个observer节点,创建一下obproxyro这个用户,并且赋值oceanbase的select权限。

手动搭建ob三副本集群+obproxy-14

创建完成之后可以连接了

手动搭建ob三副本集群+obproxy-15

好了,搭建社区版ob集群已经尝试了3中办法,请详见我的几篇笔记,接下来我们就尝试做一些其他的实验,比如扩容、缩容等等。

相关文章

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

发布评论