OceanBase 单节点手动部署OB文档
oceanbase部署请查看历史文章
https://www.modb.pro/db/324460 使用OBD自动部署三节点OceanBase文档
https://www.modb.pro/db/328171 OceanBase手动部署三节点OBserver文档
https://www.modb.pro/db/322997 OceanBase 单节点手动部署OB文档
https://www.modb.pro/db/250245 Docker单节点自动化部署OB集群
机器信息
机器类型 | 主机配置 | 备注 |
---|---|---|
OS | Centos 7.4 | |
中控机 /OBD | CPU:4C | 内存:16G |
系统盘 / | dev/vda 50G | LVS分区、文件系统:EXT4 |
数据盘 /data | dev/vdb 100G | GPT分区、文件系统:xfs |
事务日志盘 /redo | dev/vdc 100G | GPT分区、文件系统:xfs |
机器划分
角色 | 机器IP | 备注 |
---|---|---|
OBserver | 192.20.3.215 | {2881,2882} zone1 |
OBproxy | 192.20.3.215 | {2883,2884} 反向代理 |
OBclient | 192.20.3.215 | OB命令行客户端 |
版本
软件名 | 版本 | 备注 |
---|---|---|
libobclient | libobclient-2.0.0-2.el7.x86_64 | |
obclient | 2.0.0-2.el7.x86_64 | |
obproxy | 3.2.0-1.el7.x86_64 | |
oceanbase-ce | 3.1.2.el7.x86_64 | |
oceanbase-ce-libs | 3.1.1-4.el7.x86_64 |
安装方式:
RPM包手动安装部署OceanBase
目录规划:
1、软件包默认安装目录是 : /home/admin/oceanbase
目录结构如下:
/home/admin/oceanbase | obs部署启动目录 | RPM包自动创建 |
---|---|---|
/home/admin/oceanbase/ob | obs数据总目录 | 手动创建 |
/data/ob | obs数据文件实际目录 | 手动创建连接至数据总目录 |
/redo/{clog,slog,ilog} | 事务日志实际目录 | 手动创建连接至数据总目录 |
/home/admin/oceanbase/etc | 配置文件 | 启动时在启动目录自动创建 |
/home/admin/oceanbase/log | 运行日志目录 | 启动时在启动目录自动创建 |
一、配置安装用户
1、创建admin用户并设置密码(所有节点都要设置):
#useradd -U admin -d /home/admin -s /bin/bash && echo "Sixlens2881" |passwd --stdin admin
复制
2、更改目录属主属组权限:
#chown -R admin.admin /data && chown -R admin.admin /redo && chown -R admin.admin /home/admin
复制
注意:先创建admin用户,后mount挂载/home/admin/ocaeabase 否则创建用户提示家目录存在
3、用户 admin
授予 sudo
权限配置:
#vim /etc/sudoers ## Allow root to run any commands anywhere root ALL=(ALL) ALL admin ALL=(ALL) ALL
复制
注意:sudoers拒绝所有用户读写,root用户也无权限,需增加权限后更改 #chmod u+w /etc/sudoers
二、初始化服务器环境
1、配置时间同步服务
1.1、判断是否使用 ntpd
同步时间(以root身份配置):
systemctl status ntpd Unit ntpd.service could not be found. #提示未安装
复制
# yum remove ntp -y # yum -y install chrony
复制
1.2、配置时间同步服务器
# vim /etc/chrony.conf server ntp1.aliyun.com iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync logdir /var/log/chrony allow all stratumweight 0 local stratum 10 # systemctl start chronyd && systemctl enable chronyd && systemctl status chronyd
复制
2、 修改会话变量设置
全局修改配置limits.conf(所有目标节点)最大文件句柄数设置为 655350,Core 文件大小设置为 unlimited
。
# cat /etc/security/limits.conf |grep ^[^#] [root@caip215 ~]# vim /etc/security/limits.conf root soft nofile 655350 root hard nofile 655350 * soft nofile 655350 * hard nofile 655350 * soft stack 20480 * hard stack 20480 * soft nproc 655360 * hard nproc 655360 * soft core unlimited * hard core unlimited
复制
退出当前会话,重新登录。执行 # ulimit -a,查看配置是否生效:
3、内核参数修改
修改配置文件vim /etc/sysctl.conf
# cat /etc/sysctl.conf |grep ^[^#] 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 --加载配置,使配置生效
复制
4、关闭防火墙和 SELinux
4.1、查看防火墙状态
systemctl status firewalld
复制
如果是 inactive
那就不用管。如果是 active
,那就永久关闭
systemctl stop firewalld systemctl disable firewalld systemctl status firewalld
复制
4.2、关闭 SELinux
修改 SELinux 配置文件中的 SELINUX
选项。
vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled
复制
配置文件修改后只会重启主机后生效,还需要使用下面命令立即生效。
setenforce 0
复制
5、安装相关工具软件
未安装工具相关命令无法执行
yum install epel-release -y yum install -y net-tools lrzsz tree htop dstat sysvinit-tools 查看 OBSERVER 进程特点工具 yum -y install sysvinit-tools ps -ef|grep observer 查看进程监听端口工具 yum install -y net-tools netstat -ntlp 查看 OceanBase 工作目录结构工具 yum -y install tree tree /root/ob tree /root/obce/
复制
三、安装部署
1、新建soft软件包临时目录(切换admin用户)
$ mkdir ~/soft
复制
创建oceanbase目录,配置软连接:
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
复制
2、OceanBase 软件包下载:
2.1、OB阿里云RPM包下载地址
https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/
复制
2.2、安装 OceanBase 软件包
目标机器准备好OceanBase 的 RPM 包,安装oceanbase-ce oceanbase-ce-libs libobclient obclient
$ sudo rpm -ivh *.rpm #一键安装软件包 rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm
复制
2.3、查询已安装RPM包
[root@CAIP120 ~]# rpm -ql
软件包默认安装目录是 : /home/admin/oceanbase
2.4、检查目录结构,目录结构如下:
[admin@CAIP120 ~]$ tree ~/oceanbase/store/ /data/ /redo/
复制
四、启动 OBSERVER 进程
1、启动单节点OBSERVER
1.1、启动192.20.3.215 (zone1)
cho 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib' >> ~/.bash_profile . ~/.bash_profile cd ~/oceanbase && bin/observer -i ens33 -p 2881 -P 2882 -z zone1 -d ~/oceanbase/store/obdemo -r '192.20.3.215:2882:2881' -c 20220210 -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"
复制
如果是三个或多个节点机型都一致,那么启动参数里只有一个参数不一样,就是 -z 指定该节点是哪个
zone
1.2、验证服务是否启动:
$ ps aux |grep obs $ pidof observer
复制
Note:目标节点配置比较高,没有输出太多的参数
memory_limit=8G --设置节点内存 system_memory=3G --设置系统内存 datafile_size=50G --分配data磁盘大小
复制
2、集群自举(初始化)
当 OceanBase 集群三个节点都正常启动,并且监听正常时,中控机连接到任一节点(通过 2881 端口直连),进行自举(bootstrap 集群初始化)操作。 初始密码是空
[admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -u root -P 2881 -p -c -A MySQL [(none)]> set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '192.20.3.215:2882';
复制
退出,用root@sys系统租户登录
obclient -h 192.20.3.215 -u root@sys -P 2881 -p -c -A [admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -u root@sys -P 2881 -p -c -A -- bootstrap集群初始化成功后可以用root@sys系统租户连入 MySQL [(none)]> show databases; #检查数据库
复制
3、设置系统租户密码
集群管理员root@sys的密码默认是空的,这里需要给root@sys租户设置一个密码。
MySQL [(none)]> alter user root identified by 'sixlens2881'; alter user root identified by 'sixlens2881'; #设置系统租户root@sys密码
复制
3.1、使用root@sys登陆数据库:
[admin@caip215 oceanbase]$ obclient -h 192.20.3.215 -uroot@sys -P 2881 -psixlens2881 -c -A oceanBase $ obclient -h 192.20.3.215 -uroot@sys -P 2881 -psixlens2881 -c -A oceanBase #测试密码连接
复制
3.2查看集群状态:
select * from __all_server;
复制
3.3、在OceanBase 集群上创建proxyr用户OBPROXY 用户名(proxyro)密码默认OBPROXY 连接 OceanBase 集群使用用户 proxyro 。这个用户不存在,需要创建:
grant select on oceanbase.* to proxyro identified by 'sixlens2881';
复制
4、启动 OBPROXY 进程
[admin@CAIP131 ~]$ cd ~/obproxy-3.2.0 && bin/obproxy -r "192.20.3.215:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo
复制
启动-c 指定的集群名obdemo和OBserver的集群名保持一致才能启动
4.1、检查 OBPROXY, 监听进程正常
进程 obproxy
默认会监听2个端口:2883 和 2884 。
ps -ef|grep obproxy netstat -ntlp |grep obproxy
复制
4.2、登录 OBPROXY 修改密码,(中控机)安装obclient,方便测试连接:
登录用户名:root@proxysys
, 端口:2883
,初始密码:空。
$ obclient -h 192.20.3.215 -u root@proxysys -P 2883 -p --默认obp密码为空
复制
4.3、修改 OBPROXY 管理密码
MySQL [(none)]> show proxyconfig like '%sys_password%'; alter proxyconfig set obproxy_sys_password = 'sixlens123'; #修改proxy管理密码
复制
[admin@caip215 obproxy-3.2.0]$ obclient -h 192.20.3.215 -u root@proxysys -P 2883 -psixlens123 #测试连接
复制
4.4、修改 OBPROXY 连接 OceanBase 集群用户 proxyro 的密码。这样 OBPROXY 才能跟 OceanBase 集群正常连接。###这个密码就是前面 OceanBase 集群初始化后创建的用户 proxyro 的密码
MySQL [(none)]> alter proxyconfig set observer_sys_password = 'sixlens2881';
复制
4.5、退出,通过 OBPROXY 连接 OceanBase , 如果能查看所有会话,则说明 OBPROXY 部署成功
[admin@caip215 obproxy-3.2.0]$ obclient -h192.20.3.215 -uroot@sys#obdemo -P2883 -psixlens123 -c -A oceanbase
复制
MySQL [oceanbase]> show processlist; MySQL [oceanbase]> show full processlist;
复制
五、创建业务租户、业务数据库、测试表:
1、查询系统资源总计资源
SELECT svr_ip,svr_port, cpu_total, mem_total/1024/1024/1024, disk_total/1024/1024/1024, zone FROM __all_virtual_server_stat;
复制
1.2查询租户已分配资源:查看一下资源分配细节。
SELECT sum(c.max_cpu), sum(c.max_memory)/1024/1024/1024 FROM __all_resource_pool as a, __all_unit_config AS c WHERE a.unit_config_id=c.unit_config_id;
复制
Note:资源池cpu共8c/24g/500G 租户已用 5c/7G 新建租户最大可用为 2c/17g(超分会报错)
2、创建资源单元规格(Resource Unit,Unit
)
alter resource unit sys_unit_config min_cpu=5;
2.1、创建资源单元:
CREATE resource unit S4C1G max_cpu=4, min_cpu=4, max_memory='1G', min_memory='1G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size='1024G';
复制
2.2、查看新创建的资源单元:
SELECT unit_config_id,name,max_cpu,min_cpu,max_memory,min_memory,max_disk_size FROM __all_unit_config;
复制
3、创建资源池(Resource Pool
)
3.1创建资源池:
MySQL [oceanbase]> CREATE resource pool my_pool unit = 'S4C1G', unit_num = 1; 资源池名 unit='资源单元名',unit_num=1, zone_list=('zone1'...);
复制
3.2、查看资源池:
obclient> SELECT * FROM gv$unit;
复制
3.3、查看系统资源占用情况
mysql> SELECT svr_ip,svr_port, cpu_total, mem_total, disk_total, zone FROM __all_virtual_server_stat ;
复制
4、创建租户(**TENANT**
)
4.1、租户就是实例,创建租户也是瞬间完成,需要关联到某个资源池。
使用 root
账号登陆到 sys
租户中,使用 MySQL 或 OBClient 访问 OceanBase 数据库:
MySQL [oceanbase]> create tenant obmysql resource_pool_list=('my_pool'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8' set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql';
复制
普通租户的内存最小规格必须大于等于 5 GB,否则创建租户失败。如果希望建立租户进行非常简单的功能测试,可以修改参数 alter system __min_full_resource_pool_memory
的值为 1073741824
来允许以最小 1 GB 内存的规格创建租户。
4.2、查看创建成功的租户:
MySQL [oceanbase]> select * from gv$tenant;
复制
4.3、根据需要删除用户
obclient>DROP USER sqluser02;
复制
5、创建用户(USER)
5.1、登录新租户:
$ obclient -h 127.1 -uroot@obmysql -P2881 -p -c -A test
复制
5.2、创建用户:
MySQL [oceanbase]> CREATE USER 'usersixlens' IDENTIFIED BY '123#abc';
复制
5.3、查看创建成功的用户usersixlens
MySQL [oceanbase]> SELECT user FROM mysql.user;
复制
5.4、用户授权
MySQL [oceanbase]> grant all on *.* to 'usersixlens' WITH GRANT OPTION;
复制
5.5、查看授权:
MySQL [oceanbase]> show grants for usersixlens;
复制
5.6、根据需要移除权限
obclient> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'demo';
复制
5.7、登录sys租户,连接白名单设置(否则只能127登录)
$ obclient -h192.20.3.215 -uroot@sys#obdemo -P2883 -psixlens2881 -c -A oceanbase ALTER TENANT obmysql SET VARIABLES ob_tcp_invited_nodes='%'; --需要在sys租户下设置
复制
6、用户usersixlens身份登录OB集群:
[admin@caip215 obproxy-3.2.0]$ obclient -h192.20.3.215 -uusersixlens@obmysql#obdemo -P2883 -p123#abc -c -A
复制
使用新用户usersixlens登录,创建测试表:
MySQL [(none)]> create database sixlens; MySQL [(none)]> use sixlens; #需要进入新创建的数据库,否则会报错 MySQL [sixlens]> CREATE TABLE sixlens (id int,name varchar(20)); MySQL [sixlens]> insert into sixlens(id,name) values(88,"obtest"); MySQL [sixlens]> show tables; +-------------------+ | Tables_in_sixlens | +-------------------+ | sixlens | +-------------------+ 1 row in set (0.002 sec) MySQL [sixlens]> select * from sixlens;
复制