目录
TDSQL架构体验
TDSQL安装体验
TDSQL心得与收获
前言:
我在接触国产数据库之前,一直从事Oracle的运维工作,在漫长岁月里面,直到2017年才听说了TDSQL数据库,后来发现国产数据库如雨后春笋般涌出,竞争相当激烈。
有幸公司准备采用国产化数据库,在2020年对一些国产化数据库进行调研。在众多数据库中TDSQL进入了我的眼帘,跟了TDSQL在我公司整个POC的过程,也有幸参加了2020年12月24日的腾讯云数据库2020年度盛典。
目前公司部分系统已经用上了TDSQL,下面分享一下使用体验。
说起TDSQL架构,大家可以从网上资料中找到很多资料,最经典的图如下:
总结起来就是:
关于负载均衡的探讨:
看一下上图的“负载均衡”,一般是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的开源组件很多,关于安装哪些非必要组件的问题。
相比于安装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的引入大大方便了运维,由于腾讯的封装,使DBA不再因为MySQL的架构问题而烦恼,TDSQL也修复了MySQL中很多的BUG,解放了运维人员,使人员更专注于业务逻辑。是不是有点SaaS的味道。
当然本次说的是独立部署TDSQL的情况,如果公司允许可以使用在线的腾讯云数据库TDSQL。
关于考证,可以先拿下TCA,有精力的同学通过培训可以去考TCP。
本次分享就到这里。