• OceanBase数据库实践入门——手动搭建OceanBase集群


    前言

    目前有关OceanBase功能、案例、故事的文章已经很多,对OceanBase感兴趣的朋友都想安装一个数据库试试。本文就是分享初学者如何手动搭建一个OceanBase集群。这也是学习理解OceanBase集群原理的第一步。在生产环境,我们有自动化运维平台OCP可以负责生产环境的OceanBase集群部署和运维。同时官网上提供的下载文件里也有python脚本自动化部署OceanBase集群,大家熟悉了安装原理后就可以自己动手使用自动化脚本安装。

    OceanBase是分布式数据库,以集群的形式存在,是share-nothing架构。各个节点就是普通的x86服务器,使用本地盘(SSD),不依赖共享存储,也没有集群文件系统。各个节点之间网络互通即可,不需要直连线。所以OceanBase集群的搭建相比ORACLE RAC集群而言,还是很简单的。

    目前OceanBase对内存资源要求不低,建议学习环境每个节点在32G以上,64G更好。并且OceanBase集群至少包含三个节点,节点数以奇数递增。如果有三台机器更好,但是如果只有一台机器,但是内存够大(192G以上),那也可以启动三个OceanBase进程来模拟三个节点。

    OBServer安装

    OceanBase分布式数据库是以集群形式存在,至少三个节点,在每个节点里存在形式是一个observer进程,不同节点上多个observer进程组成一个集群对外提供服务。

    1. 安装规划

    本次安装目标会搭建一个2-2-2架构的OceanBase集群,理论上这个需要6台机器,实际上我只有3台。因此我会在每个机器上启动2个observer进程来模拟2个节点。

    机器节点规划如下。如果你只有一台大内存的机器,可以在上面起3个或者6个OceanBase进程,注意RPC PortConnect Port不要重复或者跟其他应用端口冲突即可。

    Zone IP RPC Port Connect Port

    Zone1

    192.168.1.241

    2882

    2881

    Zone1

    192.168.1.241

    3882

    3881

    Zone2

    192.168.1.81

    2882

    2881

    Zone2

    192.168.1.81

    3882

    3881

    Zone3

    192.168.1.86

    2882

    2881

    Zone3

    192.168.1.86

    3882

    3881

    由于OceanBase是分布式数据库,应用的数据可能分布在任一节点上,所以应用需要通过一个反向代理OBProxy来访问OceanBase集群。OBProxy可以安装在任意机器上,包括OceanBase数据库节点上。这里我安装在其中一个节点上。

    2. 机器环境准备

    OceanBase机器节点环境主要是安装用户、内核参数配置、防火墙和SELinux设置、时间同步设置、和用户会话限制等。

    • 安装用户

    OceanBase默认会安装在用户admin下。可以选择安装在其他用户下(不使用RPM包安装)。

    通常建议admin用户配置sudo权限,这样安装过程中就不需要root账户介入。

    useradd admin
    passwd admin
    
    # 赋予sudo权限
    chmod u+w /etc/sudoers
    vi /etc/sudoers
    root ALL=(ALL) ALL
    admin ALL=(ALL) ALL
    chmod u-w /etc/sudoers
    • 用户会话设置

    使用命令ulimit可以查看用户会话默认限制。修改下面文件可以默认会话限制修改永久生效。

    sudo vi /etc/security/limits.conf
    
    * 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
    • 内核参数配置

    内核参数主要是网络、内存相关的设置。

    sudo vi /etc/sysctl.conf
    
    fs.aio-max-nr = 65536
    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
    kernel.core_pattern = /data/1/core-%e-%p-%t
    vm.min_free_kbytes = 2097152
    vm.max_map_count=655360

    修改后使用下面命令生效,并检查

    sudo sysctl -p
    • 关闭防火墙和SELinux

    Linux的防火墙和SELinux安全特性可能会导致OceanBase各个节点之间通信异常,所以都建议关闭

    sudo systemctl disable firewalld
    sudo systemctl stop firewalld
    sudo systemctl status firewalld
    
    sudo vi /etc/selinux/config
    SELINUX=disabled
    
    sudo setenforce 0
    • 节点时间同步设置

    OceanBase是个分布式数据库,要求各个节点的时间保持同步,时间误差控制在50ms以内。节点时间误差偏大时,后面初始化OceanBase集群会失败,或者现有的OceanBase集群会出现异常。

    节点间的时间同步要靠Linux的NTP同步来保证。检查时间误差使用clockdiff命令

    clockdiff 192.168.1.86
    clockdiff 192.168.1.81
    clockdiff 192.168.1.241

    配置节点的NTP同步

    sudo vi /etc/ntp.conf
    server 192.168.1.239

    停掉ntpd服务,强行同步一次时间,再启动ntpd服务。后续时间同步靠ntpd服务。

    sudo service ntpd stop; 
    sudo ntpdate 192.168.1.239;
    sudo service ntpd start;
    
    ntpq -4p

    3. 软件安装

    • 软件目录

    目前oceanbase.alipay.com上提供了OCP试用版下载,里面包含了OCP和OB的很多文件,手动安装只需要里面两个RPM文件:obproxyoceanbase。获取方法如下:

    wget https://gw.alipayobjects.com/os/downloads/ossupload/ocp-release.zip
    unzip ocp-release.zip
    tar zxvf ocp-setup.tar.gz
    cd ocp_yh
    ls -lrth obproxy-1.3.3-1506155.el7.x86_64.rpm oceanbase-1.4.60-1571952.el7.x86_64.rpm

    我们先看一下oceanbaseRPM包内容,

    rpm2cpio oceanbase-1.4.60-1571952.el7.x86_64.rpm |cpio –div
    
    cd home/admin;tar czvf ob1.4.6.tar.gz oceanbase/
    
    cd ~/
    scp home/admin/ob1.4.6.tar.gz 192.168.1.241:/tmp/;
    scp home/admin/ob1.4.6.tar.gz 192.168.1.81:/tmp/;
    scp home/admin/ob1.4.6.tar.gz 192.168.1.86:/tmp/;

    可以看到目录结构如下。其中bin下有可执行文件observeretc目录用于存放配置和相关脚本。

     

    如果直接安装该RPM包,则会安装在admin用户的根目录下。由于我们要在一个机器上启动两个observer进程,彼此软件目录要分开。所以改用解压缩RPM包文件然后复制到两个目录,目录owneradmin

    su - admin
    mkdir -p node1 node2
    
    cd ~/node1; tar zxvf /tmp/ob1.4.6.tar.gz -C .
    
    cd ~/node2; tar zxvf /tmp/ob1.4.6.tar.gz -C . 
    
    cd ~/; tree
    • 存储目录

    OceanBase的存储目录是在软件目录下的store文件夹里。存储目录会包含数据文件目录和相关日志文件目录。出于性能考虑,数据文件目录和相关日志文件目录都需要单独的文件系统(如果底层是独立的盘会更好)。然后把实际目录映射到软件目录下的store目录下。

    su - admin
    
    mkdir -p /data/data/1/obdemo/
    cd /data/data/1/obdemo/
    mkdir -p etc3 sort_dir sstable
    mkdir -p /data/log/log1/obdemo/
    cd /data/log/log1/obdemo/
    mkdir -p clog etc2 ilog oob_clog slog
    mkdir -p /home/admin/node1/oceanbase/store/obdemo
    cd /home/admin/node1/oceanbase/store/obdemo/
    ln -s /data/data/1/obdemo/sort_dir /home/admin/node1/oceanbase/store/obdemo/sort_dir
    ln -s /data/data/1/obdemo/sstable /home/admin/node1/oceanbase/store/obdemo/sstable
    ln -s /data/log/log1/obdemo/clog /home/admin/node1/oceanbase/store/obdemo/clog
    ln -s /data/log/log1/obdemo/ilog /home/admin/node1/oceanbase/store/obdemo/ilog
    ln -s /data/log/log1/obdemo/oob_clog /home/admin/node1/oceanbase/store/obdemo/oob_clog
    ln -s /data/log/log1/obdemo/slog /home/admin/node1/oceanbase/store/obdemo/slog
    
    tree ~/node1 -uh
    
    mkdir -p /data/data/2/obdemo/
    cd /data/data/2/obdemo/
    mkdir -p etc3 sort_dir sstable
    mkdir -p /data/log/log2/obdemo/
    cd /data/log/log2/obdemo/
    mkdir -p clog etc2 ilog oob_clog slog
    mkdir -p /home/admin/node2/oceanbase/store/obdemo
    cd /home/admin/node2/oceanbase/store/obdemo/
    ln -s /data/data/2/obdemo/sort_dir /home/admin/node2/oceanbase/store/obdemo/sort_dir
    ln -s /data/data/2/obdemo/sstable /home/admin/node2/oceanbase/store/obdemo/sstable
    ln -s /data/log/log2/obdemo/clog /home/admin/node2/oceanbase/store/obdemo/clog
    ln -s /data/log/log2/obdemo/ilog /home/admin/node2/oceanbase/store/obdemo/ilog
    ln -s /data/log/log2/obdemo/oob_clog /home/admin/node2/oceanbase/store/obdemo/oob_clog
    ln -s /data/log/log2/obdemo/slog /home/admin/node2/oceanbase/store/obdemo/slog
    tree /home/admin/node2/oceanbase/store/obdemo/ -uh
    
    tree ~/node2 -uh

    由此一个完整的OBServer进程的相关目录如下:

     

    • 依赖RPM包安装

    OceanBase会对数据进行压缩,所以依赖两个压缩协议的RPM文件:snappy.x86_64lzo.x86_64

    rpm -q snappy.x86_64 lzo.x86_64
    
    yum -y install snappy.x86_64 lzo.x86_64

    OceanBase 集群初始化

    1. OBServer启动

    • 启动参数

    首先分别在每个节点上启动第一个observer进程,监听端口是2881和2882. 下图中灰色斜体部分都根据实际情况调整。注意根据实际情况修改zone名称、IP, 网卡名字等。

    192.168.1.241:2881:2882 zone1 注意修改 zone, IP, 网卡名字
    cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth0 -P 2882 -p 2881 -z zone1 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log

    其他两个节点的启动名分别如下:

    192.168.1.81:2881:2882 zone2 注意修改 zone, IP, 网卡名字

    cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth3 -P 2882 -p 2881 -z zone2 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log

    192.168.1.86:2881:2882 zone3 注意修改 zone, IP, 网卡名字

    cd /home/admin/node1/oceanbase && /home/admin/node1/oceanbase/bin/observer -i eth3 -P 2882 -p 2881 -z zone3 -d /home/admin/node1/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=100G,datafile_size=200G,config_additional_dir=/data/data/1/obdemo/etc3;/data/log/log1/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log

    2. 集群初始化

    3节点OBServer都启动后,这一步集群初始化命令就至关重要,成败在此一举。

    首先使用mysql命令登录任一节点,然后执行bootstrap命令。注意命令中不要有空格和空白。

    mysql -h192.168.1.241 -uroot -P2881 -p
    
    alter system bootstrap ZONE 'zone1' SERVER '192.168.1.241:2882', ZONE 'zone2' SERVER '192.168.1.81:2882', ZONE 'zone3' SERVER '192.168.1.86:2882';

    大概十几秒后集群启动成功。此时重新退出再登录集群。登录命令的username格式需要变化一下。登录成功后修改默认sys租户管理员root@sys

    mysql -h192.168.1.241 -uroot@sys -P2881 -p -c -A oceanbase
    alter user root identified by 'rootpwd';

    退出使用密码登录验证,同时查看集群资源信息。

    mysql -h192.168.1.241 -uroot@sys -P2881 -prootpwd -c -A oceanbase
    
    select zone, svr_ip, inner_port, cpu_total, cpu_assigned, cpu_assigned_percent cpu_ass_percent, round(mem_total/1024/1024/1024) mem_total_gb, round(mem_assigned/1024/1024/1024) mem_ass_gb, round(disk_total/1024/1024/1024) disk_total_gb, unit_num, substr(build_version,1,6) version
    from __all_virtual_server_stat
    order by zone, svr_ip, inner_port;

    3. 集群扩容

    目前搭建的还是1-1-1布局的OceanBase集群,需要再添加3个节点,扩容到2-2-2布局。这里就直接在3台机器上再启动第二个observer进程,监听端口是3881和3882。

    • 节点准备

    192.168.1.241:3881:3882 zone1 注意修改node zone, ip, port, 网卡名字

    cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth0 -P 3882 -p 3881 -z zone1 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log

    192.168.1.81:2881:2882 zone2 注意修改node zone, ip, port, 网卡名字

    cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth3 -P 3882 -p 3881 -z zone2 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log

    192.168.1.86:2881:2882 zone3 注意修改node zone, ip, port, 网卡名字

    cd /home/admin/node2/oceanbase && /home/admin/node2/oceanbase/bin/observer -i eth3 -P 3882 -p 3881 -z zone3 -d /home/admin/node2/oceanbase/store/obdemo -r '192.168.1.241:2882:2881;192.168.1.81:2882:2881;192.168.1.86:2882:2881' -c 20190423 -n obdemo -o "cpu_count=24,memory_limit=61440M,datafile_size=100G,config_additional_dir=/data/data/2/obdemo/etc3;/data/log/log2/obdemo/etc2"
    
    ps -ef|grep observer
    
    vi log/observer.log
    • 集群扩容

    将新增的3节点加入到OceanBase集群中。注意zone名称和IP要对应正确。

    alter system add server '192.168.1.241:3882' zone 'zone1';
    alter system add server '192.168.1.81:3882' zone 'zone2';
    alter system add server '192.168.1.86:3882' zone 'zone3';
    
    select zone, svr_ip, inner_port, cpu_total, cpu_assigned, cpu_assigned_percent cpu_ass_percent, round(mem_total/1024/1024/1024) mem_total_gb, round(mem_assigned/1024/1024/1024) mem_ass_gb, round(disk_total/1024/1024/1024) disk_total_gb, unit_num, substr(build_version,1,6) version
    from __all_virtual_server_stat
    order by zone, svr_ip, inner_port;

     

    4. OBProxy安装和启动

    OceanBase是分布式数据库,应用的数据可能分布在任一节点上并且不固定,所以应用不可能知道数据在哪个节点或者记录所有节点IP。这时就需要一个反向代理OBProxy在OceanBase集群前面提供SQL路由功能。应用通过OBProxy访问OceanBase集群,OBProxy就是数据库的代表。

    • OBProxy的软件安装

    一个节点只需要安装一个OBproxy,所以可以直接使用RPM包安装。

    su - admin
    mkdir -p /home/admin/logs/obproxy/log /home/admin/logs/obproxy/minidump
    sudo rpm -ivh obproxy-1.3.3-1506155.el7.x86_64.rpm
    • OBProxy专用用户

    OBProxy需要跟OceanBase集群保持通信,所以需要在sys租户里提前创建好账户。

    CREATE USER proxyro IDENTIFIED BY password '*e9c2bcdc178a99b7b08dd25db58ded2ee5bff050' ;
    GRANT SELECT ON *.* to proxyro;
    
    show grants for proxyro;
    • OBProxy启动

    OBProxy启动跟OBServer启动类似

     

    注意其中 -r指定的是rootservice list地址,格式稍微不同,不需要RPC Port信息。-p指定OBProxy的监听端口。

    cd /opt/taobao/install/obproxy && bin/obproxy -r "192.168.1.241:2881;192.168.1.81:2881;192.168.1.86:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false" -c obdemo
    
    ps -ef|grep obproxy

    通过OBProxy连接OceanBase集群的命令有两种格式,区别在于用户名的格式。如:[用户名]@[租户名]#[集群名] 或 [集群名]:[租户名]:[用户名]

    mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbase
    或
    mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbase

    OceanBase 集群运维

    OceanBase分布式数据库跟传统数据库或者其他分布式数据库产品的一个显著的区别就是它有资源管理的思想在里面。OceanBase集群把多台主机的资源(CPU、内存和空间)聚合在一个大的池子里,然后从中分配出指定规格的资源给一个具体的业务使用。这个提供给业务使用的就是租户,也叫实例。

    下面简单演示一个租户的创建过程。

    1. 租户的创建

    • 定义资源规格

    mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbase
    
    create resource unit unit_4c20g512g, max_cpu=4, max_memory='20G', min_memory='10G', max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=53687091200;
    create resource unit unit_8c40g1024g, max_cpu=8, max_memory='40G', min_memory='20G', max_iops=20000, min_iops=5000, max_session_num=1000000, max_disk_size=107374182400;
    create resource unit unit_16c80g2048g, max_cpu=16, max_memory='80G', min_memory='40G', max_iops=50000, min_iops=10000, max_session_num=1000000, max_disk_size=214748364800;
    
    select unit_config_id,name,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb
    from __all_unit_config
    order by unit_config_id;
    • 创建资源池

    mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbase
    
    create resource pool pool_demo unit = 'unit_4c20g512g', unit_num = 1;
    
    select resource_pool_id, name,unit_count, unit_config_id, zone_list, tenant_id, gmt_modified
    from __all_resource_pool order by resource_pool_id ;
    • 创建租户

    mysql -h192.168.1.241 -uroot@sys#obdemo -P2883 -prootpwd -c -A oceanbase
    
    create tenant t_obdemo resource_pool_list=('pool_demo');
    
    select tenant_id, tenant_name, zone_list, locality ,gmt_modified from __all_tenant;
    • 登录租户

      租户连接 断开sys租户,连接用户租户

    mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p
    
    show databases;
    
    create database sysbenchtest;
    grant all privileges on sysbenchtest.* to testuser@'%' identified by 'testpwd';

    2. 租户扩容

    • 租户内查看自己的资源能力

    mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p
    
    select tenant_id,tenant_name, unit_id, zone, svr_ip,svr_port,max_cpu,min_cpu,round(max_memory/1024/1024/1024) max_mem_gb, round(min_memory/1024/1024/1024) min_mem_gb, round(max_disk_size/1024/1024/1024) max_disk_size_gb
    from gv$unit;

     

    如果业务觉得数据库很慢且瓶颈是在资源,则对租户的资源能力进行扩容。

    • 租户扩容

    租户扩容有两个思路,一是提升资源单元规格,二是增加资源单元数量。

    mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbase
    
    alter resource pool pool_demo unit = 'unit_8c40g1024g';
    alter resource pool pool_demo unit_num = 2;
    
    //缩容同理
    
    alter resource pool pool_demo unit_num = 1;

    3. 集群参数配置

    至此,OceanBase集群和租户都搭建好了。为了避免学习环境因为资源紧张导致OceanBase不稳定,还需要做一些参数配置,类似于ORACLE中的参数变更。

    • 集群参数修改

    配置日志相关参数

    mysql -h192.168.1.241 -uobdemo:sys:root -P2883 -prootpwd -c -A oceanbase
    
    -- observer log自清理设置
    alter system set enable_syslog_recycle=True;
    alter system set max_syslog_file_count=5;
    
    show parameters where name in ('enable_syslog_recycle', 'max_syslog_file_count');

    配置OBProxy参数

    -- obproxy设置:
    alter proxyconfig set enable_metadb_used=False;
    alter proxyconfig set enable_proxy_scramble=True;
    alter proxyconfig set proxy_mem_limited=2G;
    alter proxyconfig set log_dir_size_threshold=10G;

    配置冻结合并参数

    -- 关闭轮转合并,设置转储次数
    alter system set enable_merge_by_turn = false;
    alter system set minor_freeze_times=3;
    alter system set minor_warm_up_duration_time='300s';
    • 租户变量修改

    OceanBase还支持对租户的行为进行配置,这些是通过租户变量的修改实现。类似于MySQL中的变量修改。

    mysql -h192.168.1.241 -uroot@t_obdemo#obdemo -P2883 oceanbase -A -p
    set global ob_query_timeout=100000000;

    OceanBase 集群清理

    如果前面在集群初始化中出现报错,则需要清理所有步骤重新来过。

    OceanBase安装环境清理

     

    pkill observer
    Sleep 10
    
    rpm -qa|grep oceanbase
    rpm -qa|grep obproxy
    sudo rpm -e
    
    su - admin
    /bin/rm -rf ~/node1 ~/node2
    /bin/rm -rf /data/data/* /data/log/*

    OceanBase 学习材料

    有关OceanBase集群手动搭建过程就到此为止。是不是比ORACLE RAC简单很多?限于时间和篇幅,安装中涉及到的OceanBase原理没有详细解释。有兴趣的朋友可以关注个人微信公众号:obpilot 查看更多分享。

  • 相关阅读:
    (3)常用模块
    (2)ansible主机清单文件inventory
    (1)ansible基本配置
    文件权限之facl丶文件属性丶特殊权限
    文件权限之基本权限
    用户管理
    java jvm学习笔记二(类装载器的体系结构)
    java jvm学习笔记一
    观察者模式——转
    观察者模式
  • 原文地址:https://www.cnblogs.com/mq44944/p/obinstall.html
Copyright © 2020-2023  润新知