离线使用OBD本地部署单节点OceanBase

离线使用OBD本地部署单副本单节点社区版OceanBase

一:检查软硬件的要求

软件资源介绍:

OceanBase 数据库是一个分布式集群产品,在生产环境中至少要求三台机器,学习环境可以部署单机版本。下表列出了不同操作系统版本适用的安装包:

操作系统安装包下载地址
Anlios 7、CentOS 7、RedHat 7、Ubuntu 20.X、Debian 9.Xhttps://open.oceanbase.com/softwareCenter/community
Anlios 8、CentOS 8、RedHat 8、Debian 10https://mirrors.aliyun.com/oceanbase/community/stable/el/8/x86_64/

硬件资源准备:

项目描述
系统Anolis OS 8.X 版本(内核 Linux 3.10.0 版本及以上)-- 推荐 Red Hat Enterprise Linux Server 7.X 版本、8.X 版本(内核 Linux 3.10.0 版本及以上) – 推荐 CentOS Linux 7.X 版本、8.X 版本(内核 Linux 3.10.0 版本及以上) – 推荐
CPU企业用户最低要求 16 核,推荐 32 核及以上 个人用户最低要求 2 核,推荐 8 核及以上 性能测试场景推荐 24 核及以上 生产环境推荐 32 核及以上
内存企业用户最低要求 64G,推荐 256G 及以上 个人用户简单试用最低要求 8G,长期使用要求不低于 32G,推荐 64G 及以上 内存低于 64G 建议使用 OBD 部署集群,不建议使用 OCP 部署小规格集群 性能测试场景推荐128G 及以上 生产环境推荐256G 及以上
磁盘类型推荐使用 SSD
磁盘存储空间内存大小的 4 倍及以上
文件系统EXT4 戓 XFS,当数据超过 16T 时,使用 XFS
网卡千兆互联及以上

二:环境和配置检查

部署 OceanBase 集群前,您需要进行系统环境和配置检查。

查看资源:

如果您是企业用户,建议您在部署 OceanBase 集群时,所有的机器使用相同的软硬件配置。如果您部署的是集群版 OceanBase 数据库,可去官网查看相关环境配置检验。OceanBase 数据库支持 Red Hat Enterprise Linux Server 7.X、CentOS 7.X 和 Anolis OS 8.X 等操作系统。

三:获取安装包并进行安装

下载地址:https://open.oceanbase.com/softwareCenter/community

  1. 部署单机单节点只需要以下三个包:ob-deploy-1.2.1-9.el7.x86_64.rpm,oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm,oceanbase-ce-3.1.2-10000392021123010.el7.x86_64.rpm(说明:版本号可根据自己需要下载)

  2. 安装obd:

    rpm -ivh ob-deploy-1.2.1-9.el7.x86_64.rpm
    
  3. 设置环境变量:

    source /etc/profile.d/obd.sh
    
  4. 构建本地源 :

    obd mirror clone /home/frank/rpm/*.rpm
    
  5. 删除远程源:

    rm -rf ~/.obd/mirror/remote/
    
  6. 查看本地源

obd mirror list local
  1. 创建mini-local-example.yaml配置文件,获取方式:https://github.com/oceanbase/obdeploy/blob/master/example/mini-local-example.yaml

    内容如下:

oceanbase-ce:
  servers:
    # Please don't use hostname, only IP can be supported
    - 127.0.0.1
  global:
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /root/observer	
    # The directory for data storage. The default value is $home_path/store.
    # data_dir: /data
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    # redo_dir: /redo
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: lo
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    zone: zone1
    cluster_id: 1
    # please set memory limit to a suitable value which is matching resource.
    memory_limit: 8G # The maximum running memory for an observer
    system_memory: 4G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
    stack_size: 512K
    cpu_count: 16
    cache_wash_threshold: 1G
    __min_full_resource_pool_memory: 268435456
    workers_per_cpu_quota: 10
    schema_history_expire_time: 1d
    # The value of net_thread_count had better be same as cpu's core number.
    net_thread_count: 4
    sys_bkgd_migration_retry_num: 3
    minor_freeze_times: 10
    enable_separate_sys_clog: 0
    enable_merge_by_turn: FALSE
    datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
    syslog_level: INFO # System log level. The default value is INFO.
    enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
    enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
    max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
    # root_password: # root user password, can be empty

注意事项:

  1. servers:只能使用ip,不能使用主机名(hostname)
  2. cpu_count:CPU数量可以大于物理CPU的数量。
  3. home_path 是 OceanBase 数据库的工作目录,OceanBase 数据库在此目录下启动,您需提前创建。

8.部署observer

obd cluster deploy myob -c mini-local-example.yaml

9.查看部署结果

obd cluster display myob
obd cluster list

10.参数设置(此步骤可省略,yum配置文件已加载)

echo fs.aio-max-nr = 131072 >> /etc/sysctl.conf
sysctl -p
ulimit -n
ulimit -n 65535
ulimit -n

10.启动集群

obd cluster start myob

11.连接数据库:

安装:obclient连接工具(注意:需安装依赖libobclient)

安装libobclient:

sudo rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm;

安装obclient :

sudo rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm;

12.使用系统用户命令进行连接:

obclient -h127.0.0.1 -P2881 -uroot
mysql -h127.0.0.1 -P2881 -uroot@sys -p -c -A oceanbase

四:创建新租户的过程

查看可分配资源(区):

select zone,cpu_total,cpu_assigned,round(mem_total/1024/1024/1024,2) MEM_TOTAL_GB,round(mem_assigned/1024/1024/1024,2) MEM_ASSIGNED_GB FROM __ALL_VIRTUAL_SERVER_STAT;

查询所有单元规格(unit)配置(资源池配置):

select name,max_cpu,min_cpu,max_memory,min_memory,max_iops,max_disk_size,max_session_num from __all_unit_config;

注意:mysql -h127.0.0.1 -P2881 -uroot@sys -p -c -A oceanbase连接才可以查询

1.创建资源配置(单元)

CREATE RESOURCE UNIT uc1 MAX_CPU 8,MIN_CPU 8, MAX_MEMORY '20G', MIN_MEMORY '20G', MAX_IOPS 128, MIN_IOPS 128, MAX_DISK_SIZE '2T', MAX_SESSION_NUM 64;

修改资源配置:

ALTER RESOURCE UNIT uc1 MAX_CPU 8, MIN_CPU 8, MAX_MEMORY '16G', MIN_MEMORY '16G';
ALTER RESOURCE UNIT uc1 max_session_num 2000;

2.创建资源池

create resource pool p1 unit='uc1' , unit_num=1;   p1:资源池名称

说明:所有zone使用同一个资源单元规格(保持和步骤一名称一致)

或者:

CREATE RESOURCE POOL rp1 UNIT 'uc1', UNIT_NUM 2, ZONE_LIST ('zone1', 'zone2');

删除资源池:

DROP RESOURCE POOL uc1 ;

3.创建资源池出现的问题:machine resource ‘zone1’ is not enough to hold a new unit (你会遇到的)

问题说明:zone1上剩余可用资源不足

解决方法:

1.查看memory_limit参数

show parameters like 'memory_limit';

2.使用alter sytem修改memory_limit参数

alter system set memory_limit='12G';  (参数放大)

说明:可根据服务器配置设置大小

4.创建租户(TENANT),关联到这个资源池。

CREATE TENANT test_tenant resource_pool_list=('p1');                     test_tenant : 租户名称
或者直接创建资源池创建租户:CREATE RESOURCE POOL pool1 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('zone1');

新建新租户参考:

create tenant if not exists obmysql resource_pool_list=('p1','p2'), primary_zone='RANDOM',comment 'mysql tenant/instance', charset='utf8mb4'  set ob_tcp_invited_nodes='%' ;
或
CREATE TENANT IF NOT EXISTS test_tenant CHARSET='utf8mb4',ZONE_LIST=('zone1','zone2','zone3'), PRIMARY_ZONE='zone1;zone2,zone3', RESOURCE_POOL_LIST=('pool1') SET ob_tcp_invited_nodes='%' ;

说明:

1)参数ob_tcp_invited_nodes='%' 是指允许所有客户端访问。对于 MySQL 模式,可选字符集有:utf8mb4, binary, gbk, gb18030。缺省为utf8mb4。
2)Zone List和primary_zone中的列表写法,使用逗号,则逗号两侧优先级相同,使用分号,则分号左侧优先级高于右侧。此处PRIMARY_ZONE='zone1;zone2,zone3'则表示优先将主副本分配至zone1中,减少跨Zone及跨服务器的操作。

5.租户中创建其它用户admin

create user if not exists admin@'%' identified by 'admin';

五:新用户连接新租户数据库

1.用户赋予权限远程连接mysql数据库权限

grant all on scoot.* to admin@'%';

2.使用新创建的用户admin登录test_tenant租户

obclient -h 127.0.0.1 -P2881 -uadmin@test_tenant -p -c -A       用户名:admin@test_tenant

租户test_tenant密码为空登录:

obclient -h 127.0.0.1 -P2881 -uroot@test_tenant -c -A oceanbase     

3.出现问题:ERROR 1227 (42501): Access denied

解决:

1.显示连接的权限:

SHOW VARIABLES LIKE 'ob_tcp_invited_nodes';

2.设置租户白名单

SET GLOBAL ob_tcp_invited_nodes='%';


新租户白名单设置:
ALTER TENANT csmysql SET VARIABLES ob_tcp_invited_nodes=’%’;
alter tenant 租户名 set variables ob_tcp_invited_nodes='%';  alter tenant test_tenant set variables ob_tcp_invited_nodes='%';

4.修改用户admin权限

授予用户级全部权限:

GRANT ALL ON *.* TO admin;

(在新租户的登录下操作)

5.修改用户密码

 ALTER USER admin IDENTIFIED BY 'password';

示例:将用户 sqluser01 的密码修改为 *1 的示例如下: ALTER USER sqluser01 IDENTIFIED BY ‘*1’;

六:相关命令操作:

创建和删除数据库:

create database scoot;  drop database scoot;

查询集群名称:

show parameters like 'cluster';

查询数据库中的租户:

 select * from gv$tenant;

启动集群 :

obd cluster start myob

停止集群:

obd cluster stop myob

销毁集群 :

obd cluster destroy myob

版本查询:

SELECT version();

查询租户的用户和密码:

select user_name,passwd from __all_user;

显示用户正在运行的线程:

show processlist 

关闭防火墙:

systemctl stop firewalld

开机不启动防火墙:

systemctl disable firewalld

查看防火墙状态:

systemctl status firewalld

并查看当前server列表:

select zone, svr_ip, svr_port, with_rootserver, status from __all_server order by zone, with_rootserver desc;

系统用户连接:obclient -h 127.0.0.1 -uroot@sys -p -c -A oceanbase

七:SQL 基本操作注意项

修改语句:
OB目前的DDL修改列类型(兼容类型向上修改) 例如: int 改 bigint、varchar 改 text、blob 改 long blob 等,
修改列类型(不兼容类型修改) 例如: int 改 varchar、char 改 varchar 等。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值