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

CentOS7.5手动部署 OceanBase 集群

原创 岳彩磊 恩墨学院 2022-03-10
11299

CentOS7.5手动部署 OceanBase 集群

 

 

文档控制:

版本号

更改人

日期

备注

1

v1.0

岳彩磊

2021-12-14

 

2

V1.1

岳彩磊

2022-01-13

 

 

 

目录

CentOS7.5手动部署 OceanBase 集群... 1

1.引言... 1

1.1.       关于此文档... 1

1.2.       参考资料... 2

2.安装前准备... 2

2.1.       测试环境配置信息:... 2

2.2.       系统基本检查... 3

2.3.       系统调整... 3

2.4.       配置主机名,编辑hosts文件... 5

2.5.       配置时间同步... 5

2.6.       创建admin安装用户... 6

2.7.       配置SSH免密登录... 6

3.部署OceanBase. 7

3.1.       下载OceanBase软件包... 7

3.2.       初始化数据目录... 7

3.3.       软件安装... 8

3.4.       启动observer节点... 9

3.5.       检查进程状态... 11

3.6.       Bootstrap集群... 11

3.7.       部署obproxy. 12

4     集群测试... 14

4.1.       创建业务租户... 14

4.2.       创建业务数据库和表... 16

 

1.引言

1.1.   关于此文档

本文档的练习目的掌握 OceanBase 集群的手动部署技能,理解进程的相关目录、集群初始化、OBProxy和 OB 集群关系等。

 

 

1.2.   参考资料

2.   社区版官网-文档-学习中心-入门教程:如何手动部署 OceanBase 集群

3.   社区版官网-博客-入门实战:如何手动部署 OceanBase 集群

4.   教程视频:【2-4-如何手动部署OceanBase三副本集群.mp4]

 

 

 

2.安装前准备

2.1.  测试环境配置信息:

  • 机器信息如下:

机器类型

                                      Esxi虚拟机

IP

192.168.101.66;192.168.101.67;192.168.101.68;192.168.101.69

网卡名

ens160

OS

CentOS Linux release 7.5.1804 (Core)

CPU

16C

内存

总内存 16G,可用内存 14G

磁盘1

/ 250G

磁盘2

/home 342G 

  • 机器划分如下:

角色

机器

备注

OBD

192.168.101.66

中控机,自动化部署软件

OBSERVER

192.168.101.67

OceanBase 数据库 zone1

192.168.101.68

OceanBase 数据库 zone2

192.168.101.69

OceanBase 数据库 zone3

OBPROXY

192.168.101.66

OceanBase 访问反向代理

OBCLIENT

192.168.101.66

OceanBase 命令行客户端

 

2.2.  系统基本检查

系统版本:


硬盘空间大小:


内存大小:


CPU逻辑核数:



2.3.  系统调整

测试环境可关闭防火墙、Selinux和NetworkManager


调整内核参数:

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

使其生效:

 

调整会话变量:

vi /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


2.4.  配置主机名,编辑hosts文件

配置主机名依次为master,node1,node2,node3,将主机名和 ip 解析写到/etc/hosts 文件:


2.5.  配置时间同步

无ntpd服务,使用yum安装chrony服务;

 

指定192.168.101.66作为集群的时间同步服务器

 

重启chronyd服务

 

 

2.6.  创建admin安装用户

创建admin用户并配置密码:


将admin用户添加到sudo组中:


2.7.  配置SSH免密登录

生成公钥:

 

将公钥拷贝到各个节点:



3.部署OceanBase

3.1.  下载OceanBase软件包

方法一:

前往官网下载所需的RPM安装包

https://open.oceanbase.com/softwareCenter/community

方法二:

前往阿里云开源镜像站:

https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ 

使用wget直接将RPM安装包下载到目标机中:

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-3.1.1-4.el7.x86_64.rpm

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obproxy-3.2.0-1.el7.x86_64.rpm

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/libobclient-2.0.0-2.el7.x86_64.rpm

wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/obclient-2.0.0-2.el7.x86_64.rpm

 

3.2.  初始化数据目录

mkdir -p /home/admin/oceanbase/store/obdemo /data/obdemo/{sstable,etc3} /redo/obdemo/{clog,ilog,slog,etc2}

chown -R admin:admin /home/admin/oceanbase/ /data/obdemo/ /redo/obdemo/

for f in {clog,ilog,slog,etc2};do sudo ln -s /redo/obdemo/$f /home/admin/oceanbase/store/obdemo/$f;done

for f in {sstable,etc3};do sudo ln -s /data/obdemo/$f /home/admin/oceanbase/store/obdemo/$f;done

 

sudo chown -R admin:admin /home/admin/oceanbase/ /data/ /redo/

注意:进行软连接时强烈建议使用绝对路径!




3.3.  软件安装

使用admin用户进行安装:

su - admin


3.3.1 数据库程序安装

sudo rpm -ivh /data/oceanbase-ce-*

 

3.3.2 客户端程序安装

sudo rpm -ivh /data/libobclient-2.0.0-2.el7.x86_64.rpm /data/obclient-2.0.0-2.el7.x86_64.rpm

 

 

3.4.  启动observer节点

在192.168.101.67中启动OBSERVER进程:

[admin@node1 ~]$ cd ~/oceanbase && bin/observer -i ens160 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '192.168.101.67:2882:2881;192.168.101.68:2882:2881;192.168.101.69:2882:2881' -c 20220110 -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=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" -d ~/oceanbase/store/obdemo

 

在192.168.101.68中启动OBSERVER进程:

[admin@node2 ~]$ cd ~/oceanbase && bin/observer -i ens160 -p 2881 -P 2882 -z zone2 -d ~/oceanbase/store/obdemo -r '192.168.101.67:2882:2881;192.168.101.68:2882:2881;192.168.101.69:2882:2881' -c 20220110 -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=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" -d ~/oceanbase/store/obdemo

 

在192.168.101.69中启动OBSERVER进程:

[admin@node3 ~]$ cd ~/oceanbase && bin/observer -i ens160 -p 2881 -P 2882 -z zone3 -d ~/oceanbase/store/obdemo -r '192.168.101.67:2882:2881;192.168.101.68:2882:2881;192.168.101.69:2882:2881' -c 20220110 -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=16,net_thread_count=4,datafile_size=50G,stack_size=1536K,config_additional_dir=/data/obdemo/etc3;/redo/obdemo/etc2" -d ~/oceanbase/store/obdemo



3.5.  检查进程状态

ps -ef |grep observer

netstat -tlnp |grep observer


3.6.  Bootstrap集群

1、 初始root密码为空,使用如下命令登录:

obclient -h 192.168.101.67 -uroot -P2881 -p -c -A


修改root密码:

>alter user root identified by ‘root’;

 

查看数据库出现报错:

 

解决方法:首先要进行集群自举;执行完这一步才可以:

    

2、 集群自举

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

set session ob_query_timeout=1000000000;

alter system bootstrap ZONE 'zone1' SERVER '192.168.101.67:2882', ZONE 'zone2' SERVER '192.168.101.68:2882', ZONE 'zone3' SERVER '192.168.101.69:2882';


3、 检查集群状态

>use oceanbase;

>select * from __all_server\G

>select * from __all_zone where name in (‘region’,’status’,’zone_type’);



 

3.7.  部署obproxy

1、 社区版官方下载rpm包,使用admin用户安装obproxy

[admin@master opt]$ rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm

[admin@master ~]$ tree obproxy-3.2.0/

obproxy-3.2.0/

└── bin

    ├── obproxy

    └── obproxyd.sh

 

1 directory, 2 files

2、 启动obproxy

[admin@master obproxy-3.2.0]$ cd ~/obproxy-3.2.0/ && bin/obproxy -r "192.168.101.67:2881;192.168.101.68:2881;192.168.101.69:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo    

            

 

3、 查看端口

>netstat -tlnp |grep obproxy

             

4、 登录obproxy,初次登录密码为空;

 

 

5、 创建proxyro用户并授权

obclient -h 192.168.101.67 -uroot@sys -P2881 -p -c -A

MySQL [(none)]> create user proxyro;

MySQL [(none)]> grant select on oceanbase.* to proxyro identified by 'proxyro';

 

6、 设备obproxy用户密码和访问ob集群的密码

[admin@master ~]$ obclient -h 192.168.101.66 -uroot@proxysys -P2883 -p

MySQL [(none)]> show proxyconfig like '%sys_password%';

MySQL [(none)]> alter proxyconfig set obproxy_sys_password = 'obproxy';

MySQL [(none)]> alter proxyconfig set observer_sys_password = 'observer';


注:同时还需要修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码。这样 OBPROXY 才能跟 OceanBase 集群正常连接。这个密码就是前面 OceanBase 集群初始化后创建的用户 proxyro 的密码。

 

7、 测试通过obproxy访问集群

[admin@master ~]$ obclient -h 192.168.101.66 -uroot@sys#obdemo -P2883 -p -c -A oceanbase

MySQL [oceanbase]> show databases;

 

4、     集群测试

4.1.  创建业务租户

1、 使用root账号登录到sys租户中,使用MySQL访问OceanBase数据库:

 

2、 查询系统资源占用情况:

select svr_ip,svr_port,cpu_total,mem_total,disk_total,zone from __all_virtual_server_stat;


3、 查询系统资源分配:

select sum(c.max_cpu),sum(c.max_memory) from __all_resource_pool as a, __all_unit_config as c where a.unit_config_id=c.unit_config_id;

 

4、 创建资源单元:

如果想把剩下的所有资源全部使用掉,CPU 和内存分别为步骤 2 和步骤 3 得到的值, max_cpu值设置为第二步得到的cpu_total 减去第三步得到的sum(c.max_cpu), 在本例中为8; max_memory和min_memory 设置为第二步的到的mem_total 值 减去 第三步的到的sum(c.max_memory), 在本例中为536870912。

 

5、 创建资源池:

 

6、 创建租户:

CREATE TENANT IF NOT EXISTS test_tenant

charset = 'utf8mb4',

replica_num=3,

zone_list=('zone1','zone2','zone3'),

primary_zone='RANDOM',

resource_pool_list=('pool1');

 

7、 登录租户之前,运行以下命令修改参数:

 

8、 使用新的租户登录系统:

obclient -h 127.0.0.1 -P 2883 -u root@test_tenant -p -c -A oceanbase

 

4.2.  创建业务数据库和表

1、 创建一个数据库:

>obclient -h 127.0.0.1 -P 2883 -u root@test_tenant -p -c -A oceanbase

>create database my_db1;

>show databases;

 

2、创建业务用户my_user1,并赋权;

>grant all privileges on my_db1.* to my_user1 identified by '12345678';

>show grants for my_user1;

 

3、在数据库my_db1中创建业务表my_tab1;

       >use my_db1;

       >create table tab1 (id int, name varchar(20));

       >desc tab1;

       > insert into tab1 values(1,'King');

       > select * from tab1;


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

文章被以下合辑收录

评论