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

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

一:检查软硬件的要求

软件资源介绍:

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

操作系统 安装包下载地址
Anlios 7、CentOS 7、RedHat 7、Ubuntu 20.X、Debian 9.X https://open.oceanbase.com/softwareCenter/community
Anlios 8、CentOS 8、RedHat 8、Debian 10 https://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 等。

猜你喜欢

转载自blog.csdn.net/lljddddd/article/details/127615848