腾讯云数据库TDSQL——架构与安装体验

目录

TDSQL架构体验

TDSQL安装体验

TDSQL心得与收获


前言:

我在接触国产数据库之前,一直从事Oracle的运维工作,在漫长岁月里面,直到2017年才听说了TDSQL数据库,后来发现国产数据库如雨后春笋般涌出,竞争相当激烈。

有幸公司准备采用国产化数据库,在2020年对一些国产化数据库进行调研。在众多数据库中TDSQL进入了我的眼帘,跟了TDSQL在我公司整个POC的过程,也有幸参加了2020年12月24日的腾讯云数据库2020年度盛典。

目前公司部分系统已经用上了TDSQL,下面分享一下使用体验。

  • TDSQL架构体验

说起TDSQL架构,大家可以从网上资料中找到很多资料,最经典的图如下:

腾讯云数据库TDSQL——架构与安装体验_第1张图片

 总结起来就是:

  1. 赤兔管理平台:统一运维管理平台,是DBA使用最多的图形化界面。
  2. OSS:http协议操作接口,如果多个机器用一个赤兔管理,也是通过OSS来对接的。
  3. scheduler/manager:运维管理模块,负责高可用切换,资源调度等。
  4. Zookeeper:决策模块,保存集群元数据,提供配置维护、选举决策、路由同步等。
  5. SQL引擎(Proxy):计算节点,负责权限管理。SQL转发,读写分离等。
  6. 数据节点(Set):部署MySQL数据库服务,并包含Agent状态监控模块。

关于负载均衡的探讨:

看一下上图的“负载均衡”,一般是F5硬负载,如果没有也可以使用LVS软负载。其实腾讯原厂的同事建议使用负载均衡,把请求按照一定规则发送到Proxy节点。但是在我们实践过程中,还是有很多实际情况与预想不符。

首先就是F5设备不符合国产化需求,如果使用国产化Array产品,又有TDSQL适配难度;然后LVS软负载不符合本公司对负载的要求,也未采纳;最后,根据业务特点我们应用不对外,很多都是长连接,这样一来对负载均衡的需求则不高。

所以,可以采用应用直连Proxy的方式,当然也会区分几类不同的业务系统,连接指定的Proxy,如果出现问题,则由应用自行切换选择可用Proxy。

关于使用虚拟机还是物理机:

如果是测试环境,虚拟机就行了,最少可以使用3台。到了生产环境,建议大家还是按照官方文档来看,我手头的是《TDSQL产品文档_v10.3.17.4.0》,有需要的小伙伴可以私信我。

按照文档,核心组件中Proxy和DB节点建议用物理机,这个对于分布式实例,对性能有要求的集群是必要的,其余节点我们选择的仍然是虚拟机。

后期新的业务投产的时候,为了共用集群,会增加Proxy和DB节点,但是由于只是用于基础库,数据量不大,且为非分布式实例。这时我们选择使用虚拟机来实现。基于企业实际情况,这也许是节约成本的最佳选择。

关于备份:

数据库备份是TDSQL建议的,如果不配置备份,会有相应的告警。基于实际情况,是否备份,怎样备份是需要探讨的。基于我们实际的业务,数据量约20T,但只有6台DB节点,如果使用一主两备6分片的情况,就会产生单个数据库约10T。这样备份的量很大,除了全备,至少要能够容纳两个全备和一周的增备。另外最主要的问题是备份出的数据需要恢复,也需要同等大小的计算资源和存储资源,生产实际难以满足,最终还是采用重要表的逻辑备份。

关于非核心组件:

大家知道TDSQL的开源组件很多,关于安装哪些非必要组件的问题。

  1. 安装HDFS吗?如果库小且计算和存储资源能够保证恢复的情况下可以安装使用,如果已有备份存储设备替代HDFS则可以不用,或数据库特别大,备份恢复不能满足实际要求。
  2. 安装LVS吗?LVS是软负载,是开源组件,如果厂商给予维护则可以考虑。如果有硬负载,则考虑硬负载,除非业务特殊不用负载均衡设备。
  3. 安装Kafka吗?不用多源同步可不使用,DBBridge可替代。
  4. 安装Consumer吗?不用多源同步可不使用,DBBridge可替代。
  5. 安装ES吗?除非监管要求审计,一般按需使用。当然实际上为了安全,能安装尽量安装。
  • TDSQL安装体验

相比于安装Oracle,搭建TDSQL还是非常方便的,得益于腾讯对安装脚本的封装。具体安装步骤还是请参考《TDSQL产品文档_v10.3.17.4.0》。当然文档写的还是较粗,对于一般性操作系统的配置并没有提到。

下面结合最小化安装环境的练习,做一个简单的安装体验。

集群名

最小化测试集群

操作系统

CentOS7.6

cpu

8

内存

16G

磁盘

200G

数量

3

主机名

TDBDB01

TDBDB02

TDBDB03

IP1

1.1.1.220

1.1.1.221

1.1.1.222

IP2

2.2.2.13

2.2.2.14

2.2.2.15

ZK

Y

Y

Y

Scheduler

Y

Y

OSS

Y

Y

CHITU

Y

Y

MONITOR

Y

Y

DB

Y

Y

Y

PROXY

Y

Y

Y

为了实现反复安装练习,需要先清理环境。本次采用的是删除目录,杀进程,去掉定时,重启。当然,前提是要先安装ansible和配置好各分区IP。

//删除各节点data/data1目录

ansible servers -i /txsoft/sh -m shell -a 'rm -rf /data && rm -rf /data1'

ansible servers -i /txsoft/sh -m shell -a 'rm -rf /tddata/data && rm -rf /tddata/data1'

ansible  servers -i /txsoft/sh -m shell -a 'ls -l / |grep data '

//杀死php/nginx进程,删除相应的文件夹

ansible servers -i /txsoft/sh -m shell -a 'ps -ef|grep php'

ansible servers -i /txsoft/sh -m shell -a 'ps -ef|grep nginx'

ansible servers -i /txsoft/sh -m shell -a 'pkill nginx'

ansible servers -i /txsoft/sh -m shell -a 'pkill php'

ansible servers -i /txsoft/sh -m shell -a 'ps -ef|grep php'

ansible servers -i /txsoft/sh -m shell -a 'rm -rf /usr/local/php && rm -rf /usr/local/ngnix'

//清空/etc/crontab定时执行程序

ansible servers -i /txsoft/sh -m copy -a 'src=/bc/crontab dest=/etc/crontab'

//重启各节点

ansible servers -i /txsoft/j6_1 -m shell -a 'reboot'

ansible servers -i /txsoft/sh -m shell -a 'uptime'        

创建相应的目录。一般data目录是安装软件的,必须要有。因为只有一块盘,可以创建软连接。其中data1用于装数据。

//各节点创建data/data1目录,建立软连接

ansible  servers -i /txsoft/sh -m shell -a 'mkdir -p /tddata/data && mkdir -p /tddata/data1 '

ansible  servers -i /txsoft/sh -m shell -a 'ln -s /tddata/data /data && ln -s /tddata/data1 /data1 '

ansible  servers -i /txsoft/sh -m shell -a 'ls -l / |grep data '

最小化测试环境如果没有NTP,需要统一一下时间。

//统一时间

ansible servers -i /txsoft/sh -m shell -a  'date'

cmd=$(date "+%Y-%m-%d %H:%M:%S")&&cmd=$(echo "ansible servers -i /txsoft/sh  -m shell -a \"date -s  \\\""$cmd"\\\"\"")&& eval $cmd

接下来直接安装步骤1。

//执行tdsql安装程序

ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_site.yml

后面的安装可以再次引用《TDSQL产品文档_v10.3.17.4.0》。也就是配置赤兔环境,还有运行安装步骤2。由于篇幅优先不再赘述。

  • TDSQL心得与收获

TDSQL的引入大大方便了运维,由于腾讯的封装,使DBA不再因为MySQL的架构问题而烦恼,TDSQL也修复了MySQL中很多的BUG,解放了运维人员,使人员更专注于业务逻辑。是不是有点SaaS的味道。

当然本次说的是独立部署TDSQL的情况,如果公司允许可以使用在线的腾讯云数据库TDSQL。

关于考证,可以先拿下TCA,有精力的同学通过培训可以去考TCP。

本次分享就到这里。

你可能感兴趣的:(数据库,database)