六棱镜实践(上):OceanBase3.1.1 部署

2024年 5月 7日 83.5k 0

作者简介:白云龙,六棱镜系统运维部负责人。

 

文档概要

1、准备环境     2、基础配置    3、OceanBase自动化部署     4、资源池-租户-用户-创建

5、OB优化      6、常用命令    7、维护相关-服务篇          8、维护相关-obproxy故障重建

9、维护相关-副本重建      10、维护相关-节点磁盘更换      11、维护相关-物理资源扩容

12、维护相关-物理备份     13、维护相关-OB监控dooba基本使用      14、datax部署及使用

15、ob-loader-dumper 逻辑备份工具的使用

 

1、准备环境

操作系统:centos7.4

中控机1台:用于安装OBD及Obproxy  配置:8c/32G     IP地址:172.20.2.119

目标机器3台:用于部署Observer       配置:10c/48G   IP地址:172.20.2.116-118

磁盘规划:

系统盘:100G  --LVS分区    文件系统:EXT4

数据盘: /data 5T  --GPT分区    文件系统:xfs

事务日志盘: /redo 800G (一般设置为内存的4倍)   --GPT分区   文件系统:xfs

数据库的二进制文件和运行日志: /home/admin/oceanbase 200G   --GPT分区   文件系统:xfs

六棱镜实践(上):OceanBase3.1.1 部署-1

 

2、基础配置

创建admin用户并设置密码(所有节点都要设置):

# useradd -U admin -d /home/admin -s /bin/bash && echo "SixlensPwd123" |passwd --stdin admin

更改目录权限:

#chown -R admin.admin /data && chown -R admin.admin /redo && chown -R admin.admin /home/admin

Note:先创建admin用户,后mount挂载/home/admin/ocaeabase 否则创建用户提示家目录存在

Note1:可以直接使用root账户(不安全)

 

配置sudo权限(所有节点都要设置):

# vim /etc/sudoers

admin  ALL=(ALL)      ALL

Note:sudoers拒绝所有用户读写,root用户也无权限,需增加权限后更改 #chmod u+w /etc/sudoers

 

SSH免密登录(admin用户登录):

$ ssh-keygen -t rsa  --在中控机119执行

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

$ mkdir ~/.ssh --3 Observer个节点建立隐藏ssh目录

$ scp ~/.ssh/authorized_keys admin@172.20.2.116-118:~/.ssh/authorized_keys --复制到目标机

$ chmod 700 .ssh  --目标机执行

$ chmod 600 authorized_keys  --目标机执行

Note:root用户配置免密可直接登录,普通用户需更改目录和文件权限,否则无法登陆

$ for i in 116 117 118;do ssh 172.20.2.$i date;done --中控机执行免密连接测试

六棱镜实践(上):OceanBase3.1.1 部署-2

 

时间服务器配置(中控节点作为时间服务器,以root身份配置):

# yum remove ntp -y

# yum install chrony

# 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

六棱镜实践(上):OceanBase3.1.1 部署-3

客户端配置(所有目标节点):

# echo "* * * * * /sbin/ntpdate -u 172.20.2.119 2>&1 1>>/tmp/ntpdate.log" >> /var/spool/cron/root

# for i in 116 117 118 ;do clockdiff 172.20.2.$i;done

六棱镜实践(上):OceanBase3.1.1 部署-4

# ping -T tsandaddr 172.20.2.116 --如果有机子clockdiff报错,使用tsandaddr

 

配置limits.conf(所有目标节点):

# cat /etc/security/limits.conf |grep ^[^#]

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,查看配置是否生效:

配置sysctl.conf

# cat /etc/sysctl.conf |grep ^[^#]

fs.aio-max-nr=1048576

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

kernel.core_pattern = /data/core-%e-%p-%t  -- OceanBase 数据库的 data 目录

# sysctl –p  --加载配置,使配置生效

 

目录规划:

/home/admin/oceanbase/ob -- home_path 家目录

/data/ob -- data_dir  --数据目录

/redo/{clog,slog,ilog} --事务日志目录

/home/admin/oceanbase/obagent   --obagent部署目录

 

3、OceanBase自动化部署

1、  在线安装OBD  --中控节点

]$ sudo yum install -y yum-utils

]$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo

]$ yum install -y ob-deploy

 

2、在线安装 OBClient   --中控节点

]$ sudo yum install -y libobclient

]$ sudo yum install -y obclient

3、配置文件

[admin@CAIP119 ~]$ vim config.yaml

oceanbase-ce:

 servers:

 - name: z1

   ip: 172.20.2.116

 - name: z2

   ip: 172.20.2.117

 - name: z3

   ip: 172.20.2.118

 global:

   devname: ens192

   memory_limit: 40G     --系统内存的80%

   system_memory: 10G    --大概是memory_limt * 0.4

   datafile_disk_percentage: 90  --节点使用的最大磁盘空间上限,取值范围 5-99(百分比)

   syslog_level: INFO

   enable_syslog_recycle: true

   max_syslog_file_count: 100  --运行日志文件个数 一个是256M 100个足以,看需求

   memstore_limit_percentage: 55   -- memstore占租户的内存比

   freeze_trigger_percentage: 40   --启动major/minor freeze的时机 回收阀值(水位线)

   minor_warm_up_duration_time: 0

   cluster_id: 1     --多个集群id应不同

   appname: ob_cluster

   root_password: Pwd123#    --sys租户的密码

 z1:

   mysql_port: 2881

   rpc_port: 2882

   home_path: /home/admin/oceanbase/ob

   data_dir: /data/ob

   clog_dir: /redo/clog

   ilog_dir: /redo/ilog

   slog_dir: /redo/slog

   zone: zone1

   enable_syslog_wf: true

   cpu_count: 30   --实际CPU为10c、OB的cpu可以超分配置,看实际应用配置

 z2:

   mysql_port: 2881

   rpc_port: 2882

   home_path: /home/admin/oceanbase/ob

   data_dir: /data/ob

   clog_dir: /redo/clog

   ilog_dir: /redo/ilog

   slog_dir: /redo/slog

   zone: zone2

   enable_syslog_wf: true

   cpu_count: 30

 z3:

   mysql_port: 2881

   rpc_port: 2882

   home_path: /home/admin/oceanbase/ob

   data_dir: /data/ob

   clog_dir: /redo/clog

   ilog_dir: /redo/ilog

   slog_dir: /redo/slog

   zone: zone3

   enable_syslog_wf: true

   cpu_count: 30

obproxy:

 servers:

 - 172.20.2.119

 depends:

 - oceanbase-ce

 global:

   listen_port: 2883

   prometheus_listen_port: 2884

   home_path: /home/admin/obproxy

   rs_list: 172.20.2.116:2881;172.20.2.117:2881;172.20.2.118:2881

   enable_cluster_checkout: false

   cluster_name: ob_cluster

   enable_compression_protocol: false

   automatic_match_work_thread: True

   work_thread_num: 16

   net_accept_threads: 2

   proxy_mem_limited: 16G

   obproxy_sys_password: Pwd123#  --obproxy root密码

obagent:      

 servers:

 - name: z1

   ip: 172.20.2.116

 - name: z2

   ip: 172.20.2.117

 - name: z3

   ip: 172.20.2.118

 depends:

 - oceanbase-ce

 global:

   home_path: /home/admin/oceanbase/obagent

   server_port: 8088

   pprof_port: 8089

   log_level: INFO

   log_path: log/monagent.log

   crypto_method: plain

   log_size: 30

   log_expire_day: 7

   log_file_count: 10

   http_basic_auth_user: admin

   http_basic_auth_password: root

   pprof_basic_auth_user: admin

   pprof_basic_auth_password: root

   ob_monitor_status: active

   host_monitor_status: active

   disable_http_basic_auth: false

disable_pprof_basic_auth: false

3、  部署 OceanBase 集群:

# obd cluster autodeploy sixlens_obcluster -c config.yaml --部署集群

六棱镜实践(上):OceanBase3.1.1 部署-5

# obd cluster display caip_obcluster --查看部署后的运行状态

六棱镜实践(上):OceanBase3.1.1 部署-6

4、连接验证:

$ obclient -h172.20.2.119 -uroot@sys#ob_cluster -pPwd123# -P2883 -A -c oceanbase  --sys租户 

六棱镜实践(上):OceanBase3.1.1 部署-7

1)、status 表示节点状态。inactive, 表示节点已经掉线或者进程退出了。节点掉线常见原因是节点时钟偏差过大、网络延时过大、clog空间盘满(use大于等于95%)。如果进程刚刚启动,则是进程在跟 rootserver 通信沟通。正常情况下启动几秒就能变 active,异常宕机后的再启动可能需要几十秒变 acitve,最长不超过2分钟。

2)、start_service_time 表示节点开始提供服务时间。如果是默认值 1970-1-1 ,则表示进程还在应用clog、刷新schema等。通常如果要应用的clog不多的时候,这个几秒钟就好了。如果是此前内存中大量数据还没有合并落盘就宕机了,这个恢复时间就长一些,可能会要十几分钟。

3)、stop_service_time 表示停止服务时间。如果是默认值 1970-1-1 ,表示没有停止服务。如果时间大于默认值(在当前时间附近),表示手动发起过 stop server 或 stop zone 命令。则需要手动发起 start server 或者 start zone 命令恢复服务。

4)、只有这三个列都正常了,节点才是正常的,集群才是正常的

 

$obclient -h172.20.2.119 -uroot@proxysys -P2883 -pPwd123#  --obproxy账户

六棱镜实践(上):OceanBase3.1.1 部署-8

 

4、资源池-租户-用户-创建及测试

查询系统资源总计资源

SELECT svr_ip,svr_port, cpu_total, mem_total/1024/1024/1024, disk_total/1024/1024/1024, zone FROM __all_virtual_server_stat;

六棱镜实践(上):OceanBase3.1.1 部署-9

 

查询租户已分配资源:

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;

六棱镜实践(上):OceanBase3.1.1 部署-10

Note:资源池cpu共28c/20g/4T  租户已用 5c/6G  新建租户最大可用为 23c/14g(超分会报错)

 

创建2个资源单元(6c/8g/2T):   

CREATE RESOURCE UNIT unitcaip max_cpu = 8, max_memory = '8G', min_memory = '8G', max_iops = 100000, min_iops = 100000, max_session_num = 30000, max_disk_size = '2000G';

 

CREATE RESOURCE UNIT unitsixlens max_cpu = 8, max_memory = '6G', min_memory = '6G', max_iops = 100000, min_iops = 100000, max_session_num = 30000, max_disk_size = '2000G';

 

查看新创建的资源单元:

SELECT unit_config_id,name,max_cpu,min_cpu,max_memory,min_memory,max_disk_size FROM __all_unit_config;

六棱镜实践(上):OceanBase3.1.1 部署-11

 

创建2个资源池:

CREATE RESOURCE POOL poolcaip UNIT = 'unitcaip', UNIT_NUM = 1,ZONE_LIST = ('zone1', 'zone2', 'zone3');

 

CREATE RESOURCE POOL poolsixlens UNIT = 'unitsixlens', UNIT_NUM = 1,ZONE_LIST = ('zone1', 'zone2', 'zone3');

六棱镜实践(上):OceanBase3.1.1 部署-12

 

 

创建2个租户:

create tenant tenantcaip resource_pool_list=('poolcaip'), charset=utf8mb4, replica_num=3, zone_list('zone1', 'zone2', 'zone3'), primary_zone=RANDOM, locality='F@zone1,F@zone2,F@zone3' set variables ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';

 

create tenant tenantsixlens resource_pool_list=('poolsixlens'), charset=utf8mb4, replica_num=3, zone_list('zone1', 'zone2', 'zone3'), primary_zone=RANDOM, locality='F@zone1,F@zone2,F@zone3' set variables ob_compatibility_mode='mysql', ob_tcp_invited_nodes='%';

六棱镜实践(上):OceanBase3.1.1 部署-13

 

 

 

 

查看创建成功的租户:

MySQL [oceanbase]> select tenant_id,tenant_name,primary_zone from __all_tenant;

六棱镜实践(上):OceanBase3.1.1 部署-14

 

登录新创建的2个租户(默认租户密码为空):

$ obclient -h172.20.2.119 -uroot@tenantcaip#ob_cluster -P2883 -c -A oceanbase

MySQL [oceanbase]> alter user root identified by 'Pwd123#';  --设置租户tenantcaip 的root密码

$ obclient -h172.20.2.119 -uroot@tenantsixlens#ob_cluster -P2883 -c -A oceanbase

MySQL [oceanbase]> alter user root identified by 'Pwd123#';  --设置租户tenantsixlens 的root密码

 

分别创建用户并授权:

$ obclient -h172.20.2.119 -uroot@tenantcaip#ob_cluster -pPwd123# -P2883 -c -A oceanbase

MySQL [oceanbase]> CREATE USER 'usercaip' IDENTIFIED BY ' Pwd123#';   --创建用户并设置密码

MySQL [oceanbase]> SELECT user FROM mysql.user;   --查看创建成功的用户

MySQL [oceanbase]> grant all on *.* to 'usercaip' WITH GRANT OPTION;   --授权

MySQL [oceanbase]> show grants for usercaip;   --查看授权

用于登录测试:

obclient -h172.20.2.119 -uusercaip@tenantcaip#ob_cluster -pPwd123# -P2883 -c -A oceanbase

 

$ obclient -h172.20.2.119 -uroot@tenantsixlens#ob_cluster -pPwd123# -P2883 -c -A oceanbase

MySQL [oceanbase]> CREATE USER 'usersixlens' IDENTIFIED BY ' Pwd123#';   --创建用户并设置密码

MySQL [oceanbase]> grant all on *.* to 'usersixlens' WITH GRANT OPTION;  --授权

MySQL [oceanbase]> show grants for usersixlens;    --查看授权

MySQL [oceanbase]> SELECT user FROM mysql.user;   --查看创建成功的用户

用于登录测试:

$ obclient -h172.20.2.119 -uusersixlens@tenantcaip#ob_cluster -pPwd123# -P2883 -c -A oceanbase

 

连接白名单设置(否则只能127登录)

$ obclient -h172.20.2.119 -uroot@sys#ob_cluster -p Pwd123# -P2883 -A -c oceanbase   -- sys租户

ALTER TENANT tenantsixlens SET VARIABLES ob_tcp_invited_nodes='%';    

 

随便一个租户下的用户登录OB集群测试建库建表:

$ obclient -h172.20.2.119 -uusersixlens@tenantcaip#ob_cluster -pPwd123# -P2883 -c -A oceanbase

MySQL [oceanbase]> create database sixlens;

MySQL [sixlens]> CREATE TABLE sixlens (id int,name varchar(20));

MySQL [sixlens]> insert into sixlens(id,name) values('20211212',"六棱镜");

六棱镜实践(上):OceanBase3.1.1 部署-15

 

5、优化部分:

一、sys租户优化部分

$ obclient -h172.20.2.119 -uroot@sys#ob_cluster -p123456 -P2883 -A -c oceanbase    

1、OB占系统总内存的比例,提高OB可用的内存量。默认值是 80, 主机内存大于 256G 时,这个可以设置到 90,最大不要超过 90

alter system set memory_limit_percentage = 90;  --百分比

2、alter system set memstore_limit_percentage = 55;    -- memstore占租户的内存比

3、alter system set freeze_trigger_percentage = 40;   --启动major/minor freeze的时机 转存阀值

4、minor freeze的次数,尽量不在测试期间触发major freeze。默认是0,可以设置非0的数字,100代表合并100次后进行转储

alter system set minor_freeze_times = 100;

4、  alter system set minor_warm_up_duration_time = 0; -- 加快minor freeze

5、  在memstore的内存使用率达到90%时开启写入限速。默认是100,不开启限速

alter system set writing_throttling_trigger_percentage=85;   --租户级别设置(有几个租户设置几次)

6、alter system set trace_log_slow_query_watermark='100s';  --查询100秒后未出结果即为慢查询默认是1秒

7、hash join 的时候用到,跟hash join 原理有关。 如果确认业务查询hash join很多,或者数据集很大,同时又有hash join报内存不足,那就调大一些,推荐1G

alter system set _hash_area_size='1g';

8、-- 从默认的90调整到100,提高转储的IO使用上限。

alter system set sys_bkgd_io_high_percentage=100;  --默认50

alter system set sys_bkgd_io_low_percentage=100; --默认0

9、alter system set enable_merge_by_turn = false; -- 关闭轮转合并

10、增大mini_merge的线程数,期望提高mini_merge的速度(默认值为3)。调大为8以后,发现会导致压测中CPU使用率有时飙升至90%,对性能有影

alter system set _mini_merge_concurrency = 8;

11、alter system set merge_thread_count = 32; -- 增大合并的线程数。默认是0

Note: show parameters like ' memstore_limit_percentage ';  --查看相关参数

 

二、业务租户优化部分

obclient -h172.20.2.119 -uroot@tenantcaip#ob_cluster -p Pwd123# -P2883 -c -A oceanbase

obclient -h172.20.2.119 -uroot@tenantsixlens#ob_cluster -p Pwd123# -P2883 -c -A oceanbase

set global ob_query_timeout=36000000000;

set global ob_trx_timeout=36000000000;

set global max_allowed_packet=67108864;

set global secure_file_priv="";

set global ob_trx_idle_timeout = 36000000000;

set global ob_trx_lock_timeout = 10000000;

set global ob_sql_work_area_percentage = 30;

set global undo_retention = 3000;

show global variables like '%timeout%';  --查看相关变量值

 

6、常用命令:

1、查看资源分布信息:

select t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, t2.max_memory/1024/1024/1024 max_mem_gb, t2.min_memory/1024/1024/1024 min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name from __all_resource_pool t1 join __all_unit_config t2 on (t1.unit_config_id=t2.unit_config_id) join __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`) left join __all_tenant t4 on (t1.tenant_id=t4.tenant_id) order by t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;

六棱镜实践(上):OceanBase3.1.1 部署-16

2、  SELECT * FROM __all_server; --查看集群状态

六棱镜实践(上):OceanBase3.1.1 部署-17

Note:with_rootserver为1的节点即为当前集群的rootserver

3、查看集群资源单元unit配置情况

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;

六棱镜实践(上):OceanBase3.1.1 部署-18

4、更改相关资源配置:

alter resource unit sys_unit_config max_cpu=4, min_cpu=4;

alter resource unit sys_unit_config max_memory='8G', min_memory='8G' ;

5、查询磁盘相关:

select svr_ip, round(total_size/1024/1024/1024) total_size_gb, round(free_size/1024/1024/1024) free_size_gb, round((total_size-free_size)/1024/1024/1024) used_size_gb from __all_virtual_disk_stat;

6、查询所有租户总磁盘空间使用率 --未使用查询为空

select sum(data_size)/1024/1024/1024,sum(required_size)/1024/1024/1024,svr_ip,svr_port from __all_virtual_meta_table group by svr_ip,svr_port;

7、查询指定租户使用磁盘空间 --注意替换“tenant_id=1001/1002”  无数据查询结果为空

select sum(data_size)/1024/1024/1024,sum(required_size)/1024/1024/1024,svr_ip,svr_port from __all_virtual_meta_table where tenant_id=1001 group by svr_ip,svr_port;

8、查询所有租户占用的总磁盘空间

select tenant_id,sum(data_size)/1024/1024/1024,sum(required_size)/1024/1024/1024,svr_ip,svr_port from __all_virtual_meta_table group by tenant_id;

Note:租户的配额只有cpu和内存生效的,磁盘配额不生效 磁盘是用datafile size做整体限制的,不是按照租户限制的 任意一个租户都可以把整体的磁盘空间写满

9、查看总计和可分配资源:

select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, round(a.disk_total/1024/1024/1024) disk_total_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, usec_to_time(b.stop_time) stop_time, b.build_version from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port) order by a.zone, a.svr_ip;

Note: mem_total内存+system_memory等于memory_limit的大小

10、查看总计和已经被分配的资源:

select zone, svr_ip, svr_port,inner_port, cpu_total, cpu_assigned,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;

11、查看租户的增量内存使用情况

SELECT tenant_id, ip, round(active/1024/1024/1024) active_gb, round(total/1024/1024/1024) total_gb, round(freeze_trigger/1024/1024/1024) freeze_trg_gb, round(mem_limit/1024/1024/1024) mem_limit_gb, freeze_cnt , round((active/freeze_trigger),2) freeze_pct, round(total/mem_limit, 2) mem_usage FROM `gv$memstore` WHERE tenant_id =1001 ORDER BY tenant_id, ip;

六棱镜实践(上):OceanBase3.1.1 部署-19

total_gb 表示总内存,active_gb 表示当前未转储的内存,freeze_trg_gb 表示内存转储的阈值,mem_limit_gb 表示能用的最大的增量内存(超过就报内存不足),freeze_cnt 表示转储次数。freeze_pct表示未转储的内存占转储阈值的比例,mem_usage 表示增量内存总的使用比例(到100% 就报内存不足)。

Note:mem_usage:使用率达1.0就是百分之百

12、查看 OB 集群发生了什么事件

SELECT DATE_FORMAT(gmt_create, '%b%d %H:%i:%s') gmt_create_ , module, event, name1, value1, name2, value2, rs_svr_ip,name3,value3,name4,value4 FROM __all_rootservice_event_history WHERE 1 = 1 AND module IN ('daily_merge') AND module NOT IN ('leader_coordinator') and event not like '%finish_backup%' ORDER BY gmt_create DESC LIMIT 100;

 ——————————未完待续

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论