zoukankan      html  css  js  c++  java
  • 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 tG
    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.tG

    // 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

  • 相关阅读:
    那些离不开的 Chrome 扩展插件
    Spring Boot 实战 —— 入门
    Maven 学习笔记
    Linux lvm 分区知识笔记
    Linux 双向 SSH 免密登录
    CentOS Yum 源搭建
    Ubuntu 系统学习
    iOS 测试三方 KIF 的那些事
    Swift 网络请求数据与解析
    iOS Plist 文件的 增 删 改
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14676639.html
Copyright © 2011-2022 走看看