TenDB Cluster简介

TenDB Cluster
   TenDB Cluster是腾讯游戏CROS DBA团队提供的MySQL分布式关系型数据库解决方案,主要包括三个核心组件:TSpider、TenDB、Tdbctl。
   TSpider是TenDB Cluster的接入层,是腾讯游戏CROS DBA基于MariaDB 10.3.7开发定制的版本,主要完善并定制spider这一分布式MySQL存储引擎;TSpider github地址:https://github.com/Tencent/TenDBCluster-TSpider
   TenDB是TenDB Cluster的存储层,是腾讯游戏CROS DBA基于Percona Server 5.7.20开定制的MySQL分支,主要提供一些更贴近游戏特点的基础能力,包括在线加字段、大字段压缩、binlog压缩及限速等;TenDB github地址:https://github.com/Tencent/TenDBCluster-TenDB
Tdbctl是集群的中控节点,是腾讯游戏CROS DBA团队基于TenDB开发(主要复用TenDB自身的SQL解析能力及MGR能力),主要提供集群路由管理、集群变更、集群监控等能力。Tdbctl github地址:https://github.com/Tencent/TenDBCluster-Tdbctl

TenDB Cluster简介
   TenDB Cluster是腾讯游戏CROS DBA团队提供的MySQL分布式关系型数据库解决方案,主要特点包括:透明分库分表、高可用的MySQL集群服务,透明及在线的扩容及缩容;使得开发者可以仅专注于业务逻辑的开发及运营,无需编写数据分片逻辑,在海量用户并发情况下,也无须关心DB存储层的负载压力。
https://github.com/Tencent/TenDBCluster-TSpider.git
https://codeload.github.com/Tencent/TenDBCluster-TSpider/zip/refs/heads/tspider3.6

TenDB Cluster管理手册

https://tendbcluster.com/book-cn/

 

使用docker-compose快速搭建TenDB Cluster
https://tendbcluster.com/book-cn/Documentation/op-guide/docker-compose-tendbcluster.html

docker-compose只适合在单机上一键部署 TenDB Cluster测试集群,方便用户快速体验 TenDB Cluster。不要用在生成环境。

准备环境
Docker: 版本17.x及以上
docker-compose: 下载地址 https://github.com/docker/compose/releases
helm: 下载地址 https://github.com/helm/helm/releases
网络能够正常拉取 tendb, tspider, tdbctl 的镜像,地址 https://hub.docker.com/u/tendbcluster
下载仓库 https://github.com/TenDBCluster/TenDBCluster-DockerCompose
仓库下 docker-compose.yml 默认是部署 4 个分片的 TenDB Cluster,如果想部署其它分片数,才需要使用 helm 根据模板来生成 docker-compose.yml。

docker: ce-19.03.1
helm: 2.16.7
docker-compose: 1.25.5Copy
快速部署
克隆仓库,拉取镜像
$ cd tendbcluster-docker-compose && docker-compose pull
Copy
一键启动
启动前确认下 docker-compose.yml 里面的默认用户名、密码、数据存放目录
ADMIN 用户只授权本地登录
OPERATOR 用户用于集群内部操作,比如 Tdbctl 去其它节点做 DDL 操作
MySQL 数据目录默认 /data/mysqldata/<port>
// 启动
$ docker-compose up -dCopy
大约1分钟后,通过 docker ps 查看 TenDB, TSpider, Tdbctl 三个组件的容器是否是 healthy .

体验
使用MySQL客户端连接上任意TSpider节点。比如我在Docker host 本地:
// connect to the first TSpider node
mysql -utendbcluster -ptendbclusterpass -h127.0.0.1 -P25000
select * from mysql.servers;
create database dbtest; use dbtest;
create table t(id int auto_increment primary key, c1 int);
show create table t\G
insert into t(c1) values(1),(1),(1),(1),(1),(1),(1),(1);

// connect to the second TSpider node, and check the schema auto-created
mysql -utendbcluster -ptendbclusterpass -h127.0.0.1 -P25001
show create table dbtest.t\G

// connect to the first Tendb node, and check the sharded data
mysql -utendbcluster -ptendbclusterpass -h127.0.0.1 -P20000
select * from dbtest_0.t;Copy
如果需要停止或者销毁:

$ cd tendbcluster-docker-compose
// 停止
$ docker-compose stop

// 重新启动
$ docker-compose start

// 销毁
$ docker-compose down
// 手动删除数据目录Copy
自定义部署
以上默认部署的是 4节点 TenDB,2节点 TSpider,1节点 Tdbctl,如果想体验其它数量分片如12节点 TenDB,不建议直接修改 docker-compose.yml,而是使用 helm template 来生成 docker-compose.yml 和 tdbctl-routing-flush.sql。

例compose/values.yaml :

tendb:
image: tendbcluster/tendb:3.2-min-v0.1
size: 12
portStart: 20000
dataDir: /data/mysqldata
innodbBufferPoolSize: 256MCopy
dataDir 是本机持久化卷目录,避免 shutdown 后测试数据丢失。

修改 values.yaml,生成 docker-compose.yml
包括如果想修改数据目录、镜像路径、镜像版本,都通过修改 compose/values.yaml 后再 helm 来生成,避免出错。

# // 1. 生成 generated-docker-compose.yml
helm template compose -x templates/docker-compose.yml > generated-docker-compose.yml

# // 2. 生成 Tdbctl 的路由信息,会挂载到 tdbctl-0 并且自动执行
helm template compose -x templates/tdbctl-routing-flush.sql.tpl > tdbctl-routing-flush.sql
# // 3. 替换 --- ,避免sql不识别
sed -i 's/---/--/g' tdbctl-routing-flush.sqlCopy
一键启动
$ docker-compose -f generated-docker-compose.yml up -d

posted @ 2021-04-19 14:17  ~*一生所爱*~  阅读(385)  评论(0编辑  收藏  举报
在国际交往中,实力 永远是维护正义的基础;国防 才是外交真正的后盾;尊严 只在剑峰之上;真理 只在大炮射程之内。