请选择 进入手机版 | 继续访问电脑版

Tbase基础积累一

[复制链接]
丁翼 发表于 2021-1-1 18:31:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
1、概述

Tbase 是在开源数据库postgresql的基础举行开辟的高度兼容oracle语法的分布式数据库
详细查看:https://github.com/Tencent/TBase/wiki
 
2、架构图


 
Coordinator:协调治点(简称 CN),对外提供接口,负责数据的分发和查询规划,多 个节点位置对等,每个节点都提供相同的数据库视图;在功能上 CN 上只存储系统的全 局元数据,并不存储实际的业务数据。
Datanode:处理处罚存储本节点相关的元数据,每个节点还存储业务数据的分片,简称 DN。 在功能上,DN 节点负责完成执行协调治点分发的执行请求。
GTM:全局事务管理器(Global Transaction Manager),负责管理集群事务信息,同时管 理集群的全局对象,比如序列等。
 
在这个架构下,TBase 集群具有下面几个本事:
多活/多主:每个 coordinator 提供相同的集群视图,可以从任何一个 CN 举行写入,业
务无需感知集群拓扑;
读/写扩展:数据被分片存储在了不同的 DN,集群的读/写本事,随着集群规模的扩大做 而得到提升;
集群写一致:业务在一个 CN 节点发生的写事务会一致性的出现在其他的 CN 节点,就 像这些事务是本 CN 节点发生的一样;
集群结构透明:数据位于不同的数据库节点中,当查询数据时,不必关心数据位于详细 的节点;
TBase 的 share nothing 集群架构方便了业务接入,低落了业务接入的门槛。
 
3、测试环境

3.1 组件列表

目前安装的是分布式Tbase V5版本。
  脚色
  ip
  设置
  备注
  cn1_主
 8core 16g 500gdb读写毗连ipcn1_备 8core 16g 500gdb只读毗连ipcn2_主 8core 16g 500gdb读写毗连ipcn2_备 8core 16g 500gdb只读毗连ipgtm_主 8core 16g 500g全局事务gtm_备 8core 16g 500g全局事务dn1_主 16core 64g 3.7t数据分片存储节点dn1_备 16core 64g 3.7t数据分片存储节点dn2_主 16core 64g 3.7t数据分片存储节点dn2_备 16core 64g 3.7t数据分片存储节点dn3_主 16core 64g 3.7t数据分片存储节点dn3_备 16core 64g 3.7t数据分片存储节点oss 8core 16g 500g http://10.94.140.14:8080/
tbase集群管理平台
dbbridge 8core 16g 500 http://10.94.140.9:31030/
数据迁移
 
3.2  测试数听说明

staging 环境o下的所有业务表和视图。默认分布键接纳主键的第一关键字。
 
3.3 毗连信息

ip:10.94.
port:11345
database: 
user:
3.4 毗连工具

Tbase是基于postgresql开辟的,目前postgresql的毗连工具都是可以直接毗连tbase的,虽然存在小量差异,但并影响不大,详细使用如下:

  •  开辟同事使用桌面毗连方法:使用常用navicat \ pgadmin\dbeaver等工具。
  •  dba同事需分身使用tbase自带但psql举行毗连,该工具可以使用" \d+ schema.tablename"方法查看表范例、分布键、分布节点方式。
  •  java应用毗连发起是tbase 定制但jar包(postgresql-42.2.12-TBase.jar)举行毗连,详细查看附件。postgresql-42.2.12-TBase.jar
  • python毗连,使用现有pg库就可以了。
参考:https://github.com/Tencent/TBase/wiki/4%E3%80%81TBase%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97
4、开启oracle 特性

grant all on schema pg_oracle to cbs;
相关参数设置:
  name
  value
   
  enable_oracle_compatible
on orafce.nls_date_format  orafce.timezonePRC orafce.varchar2_null_safe_concatoff support_oracle_compatibleon 参数修改方法:发起使用oss的【运维管理】-->【设置管理】
修改参数语法
alter system set support_oracle_compatible=on;
 
5、创建数据库和schema

5.1 创建数据库

create database CBS ENCODING UTF8 lc_collate 'zh_CN.utf8';
字符集只能继续db 模版(template0/template1)的字符集。
查看下令
psql>/l  
5.2 创建schema

创建用户

create role toubao with login password 'toubao@123';
创建用户对应的模式

create schema toubao AUTHORIZATION toubao;
 
这样使用用户toubao毗连数据库,就不需要指定模式的情况下直接访问toubao模式下的数据表。
特别提醒

在tbase和postgresql中模式与用户不存在必要的对应关系,而且一个用户可以拥有多个模式
5.3 访问用户和权限授予参考pg模式

  1. CREATE USER [i]name[/i] [ [ WITH ] [i]option[/i] [ ... ] ]where [i]option[/i] can be:      SUPERUSER | NOSUPERUSER    | CREATEDB | NOCREATEDB    | CREATEROLE | NOCREATEROLE    | INHERIT | NOINHERIT    | LOGIN | NOLOGIN    | REPLICATION | NOREPLICATION    | BYPASSRLS | NOBYPASSRLS    | CONNECTION LIMIT [i]connlimit[/i]    | [ ENCRYPTED ] PASSWORD '[i]password[/i]' | PASSWORD NULL    | VALID UNTIL '[i]timestamp[/i]'    | IN ROLE [i]role_name[/i] [, ...]    | IN GROUP [i]role_name[/i] [, ...]    | ROLE [i]role_name[/i] [, ...]    | ADMIN [i]role_name[/i] [, ...]    | USER [i]role_name[/i] [, ...]    | SYSID [i]uid[/i]
复制代码
授权
grant select on book to hqq;
 
grant all on all tables in schema cbs to cbs;
alter table s02.t02 owner to schema_owner_01;
 
grant all on schema pg_oracle to cbs
5.4 应用登岸后免schema前缀的设置

设置数据库的默认搜索路径

alter database postgres set search_path to "$user", public,user1,user2;
 
设置用户的默认搜索路径

alter role user1 set search_path to "$user";
设置session的搜索路径

set search_path to public;
参数优先级别

 
session > 用户 > 数据库 > 系统默认
 
6 Tbase的表范例

Tbase的表范例可以分为分布式和复制表两范例。详细说明如下:
6.1 分布表

shared key必须为主键的一部分,如果不指定则使用主键的第一个关键字作为分布键。
创建语法:
--平凡分布表

create table public.t1
(
f1 int not null,
f2 varchar(20),
primary key(f1)
)
distribute by shard(f1)
to group default_group
;
 
--分布分区表

create table public.t1_pt
(
f1 int not null,
f2 timestamp not null,
f3 varchar(20),
primary key(f1)
)
partition by range (f2)
begin (timestamp without time zone '2019-01-01 0:0:0')
step (interval '1 month') partitions (3)
distribute by shard(f1)
to group default_group;
 
--冷热分区表
create table public.t1_cold_hot
(
f1 int not null,
f2 timestamp not null,
f3 varchar(20),
primary key(f1)
)
partition by range (f2)
begin (timestamp without time zone '2019-01-01 0:0:0')
step (interval '1 month') partitions (3)
distribute by shard(f1,f2)
to group default_group cold_group;
 
6.2 复制表

create table public.t1_rep
(
f1 int not null,
f2 varchar(20),
primary key(f1)
)
distribute by replication
to group default_group;

来源:https://blog.csdn.net/harryho/article/details/112011169
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )