之前两篇笔记使用了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
安装成狗后目录结构如下
需要给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}
创建完的路径结构如下:
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
netstat -ntlp
7、初始化集群
连接到任意一个节点
mysql -h 10.251.19.65 -u root -P 5881 -p -c -A
第一次登录报错,查询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';
8、安装obproxy
因为我之前使用obd搭建三副本的时候安装过obproxy,因此我又找了其他一台机器重新安装了obproxy。避免冲突
同样注意默认路径,如果不指定路径就会安装在/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
10、修改obproxy的密码
mysql -h 10.251.19.57 -u root@proxysys -P 2883 -p
如果使用obproxy连接ob集群,还需要配置observer的密码,与我们之前配置的observer密码移植。
11、使用obproxy登录手动搭建的三副本集群
登录报错,查看obproxy的日志 目录在/home/admin/obproxy{版本号}/log/obproxy_xflush.log发现如下错误
obproxyro用户连接失败,我登录observer的sys租户,查询__all_user发现并没有这个用户,
难道是需要在sys租户下创建这个用户?
连接到某个observer节点,创建一下obproxyro这个用户,并且赋值oceanbase的select权限。
创建完成之后可以连接了
好了,搭建社区版ob集群已经尝试了3中办法,请详见我的几篇笔记,接下来我们就尝试做一些其他的实验,比如扩容、缩容等等。