目录
认识TDSQL
根据百度百科的搜索信息显示,2020年12月腾讯云数据库品牌升级,腾讯云原有的TDSQL、TBase、CynosDB三大产品线将统一升级为“腾讯云企业级分布式数据库TDSQL”。全新升级后的腾讯云TDSQL涵盖分布式、分析型、云原生等多引擎融合的完整数据库产品体系。
目前,截止到发文,笔者在官网上是看到了TDSQL MySQL版和TDSQL PostgreSQL版这两种相关产品。
当然,其衍生的系列产品还是蛮多的。大家可以根据需求去选择合适的产品。
笔者本次主要探究的是TDSQL MySQL版(私有云),官方文档见:
TDSQL MySQL版(私有云) 10.3.16.2.x-新版本新特性-文档中心-腾讯云-腾讯云
本文使用Tencent云数据库TDSQL交流群中提供的新版本tdsql_10.3.17.3.0进行体验,目的是为了初步走入TDSQL世界。
整体架构
整体看来,和传统的通用型商用关系型数据库产品不同,更像是一个数据库+大数据的分布式解决方案(一键部署方案)。
组件介绍
组件缩写 | 组件名称 | 备注 |
Zookeeper | zookeeper集群 | 高可用和一致性集群 |
Keeper(manager/scheduler) | TDSQL调度模块 | 主备切换/扩缩容/资源管理 |
OSS | TDSQL操作接口 | 提供http的操作接口 |
DB | 数据库模块 | 包含mysql和agent |
proxy | 网关模块 | 帐号鉴权/sql解析和转发 |
monitor | 监控采集模块 | 从zk定期采集实例动态数据 |
chitu | 运营平台 | 实例管理/告警管理/权限控制 |
clouddba | 扁鹊系统 | sql优化和诊断 |
HDFS | 冷备存储模块 | 备份binlog/slowlog/errlog |
LVS | 负载均衡模块 | 提供vip,对业务透明后端proxy |
kafka | 消息队列 | 是多源同步和es的基础组件 |
consumer | 多源同步消费者 | 提供mysql、tdsql和oracle之间的同步方案 |
es | 数据检索及分析工具 | 用于分析网关日志,帮助定位问题 |
onlineddl | 在线表结构变更 | 用于在chitu页面变更tdsql实例的表结构 |
安装部署
规划环境
部署方式请参考官方的手册。
由于本地环境资源不足,这里构建出三个虚拟机,使用三台虚拟机来搭建一个最小的TDSQL集群(2台用于DB、1台用于调度和运营体系部署)。
备注:虚拟机环境均为:
2核+AMD Ryzen 5 PRO 4650U+CentOS7+2G内存,配置可以说是极低(所以可选的组件本文就不安装了)。
三台虚拟机规划如下:
组件 | 192.168.253.102 | 192.168.253.202 | 192.168.253.212 |
zookeeper | Y | Y | Y |
scheduler | Y | Y | |
oss | Y | Y | |
chitu | Y | Y | |
monitor | Y | Y | |
db | Y | Y | |
proxy | Y | Y | |
hdfs | Y | ||
... | ... | ... | ... |
Note: 值得注意的是,在本文的整个安装部署过程中,由于本地虚拟机资源实在低得让人抱歉,会出现一些意想不到的情况。笔者也只能无奈中进行解决和规避。如果在高质量环境(高配物理机)中,可以关注一下是否出现文中提及的类似问题,我想,应该会好很多。
简单部署
准备tdsql包
#下载tdsql_10.3.17.3.0.zip,解压 unzip tdsql_10.3.17.3.0.zip |
免密配置
ssh-keygen -t rsa #在102机器上执行,这里不需要输入密码 ssh-copy-id 192.168.253.102 ssh-copy-id 192.168.253.202 ssh-copy-id 192.168.253.212 |
准备数据目录
#102机器 mkdir /data #202和212机器 mkdir /data mkdir /data1 |
修改tdsql_hosts文件
按照自己的规划去修改对应组件的配置即可。
修改group_vars配置(ansible变量)
vim group_vars/all |
按官方说明配置即可。
安装ansible(主控机)
source scripts/environment_set sh scripts/install_ansible.sh |
ansible --version |
安装zk(part1_site)
ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_site.yml |
等待一段时间后,报错了。
CPU数必须大于=2,调整cpu为2核后,又报错:
内存必须大于5G。
好吧,我的虚拟机根本不足以支撑这个环境检查。
那没办法了,为了体验下安装,只好修改检查的脚本了,看看后续能不能继续运行吧,毕竟我又不准备装kafka。
vim roles/tdsql_env_check/files/checkenv/docheck.sh |
注释掉检查项。
后面检查其他机器时,也会报类似检查错误,如法炮制,修改脚本。
然后再执行zk安装。
资源不足的情况下,在注释掉CPU和MEM的检查后,是可以安装zk成功的。(在此,请提前准备好足够资源的部署环境吧,毕竟咱要处理的可是海量数据。笔者不在公司,手头的破笔记本也只能呜呼了。)
由于虚拟机配置实在差劲,等了N久之后,终于再次报错了。
我去看了一下./roles/tdsql_chitu/files/shell_scripts/install_php.sh脚本,发现安装PHP的步骤没有成功,也没有将对应的php源码包拷贝到/data/tools目录下,因此导致没有安装成功。 (哪块脚本没拷贝过去?还得上班,没时间去查了,就这样吧。)
决定手动编译一下。
将./group_files/tdsql_php/php.tar.gz拷贝到/data/tools下,按照tdsql脚本的configure进行编译安装。
cp ./group_files/tdsql_php/php.tar.gz /data/tools/ cd /data/tools/ tar xvfp php.tar.gz cd php ./configure --prefix=/usr/local/php --enable-fpm \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --with-libxml-dir \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --enable-gd-jis-conv \ --enable-mysqlnd \ --enable-mbstring \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --enable-sockets \ --enable-soap \ --with-curl \ --with-openssl make && make install |
弄好php后,再安装zk试试,没有问题了。
最后显示failed任务数为0表示安装成功。
初始化chitu
网页访问安装chitu模块的机器地址,初始化chitu。
http://192.168.253.202/tdsqlpcloud
1)进入安装向导页面
这边我得吐槽一下,用QQ浏览器腾讯自家的浏览器居然显示不出来页面。(如下)
2)环境检测
3)集群接入
4)集群初始化
逐一配置IDC、机型规格、设备资源、网关组等信息,然后创建分布式实例。
为方便,这块建了一个一主零备,请实际用多节点吧。(这块没显示出来网关?)
5)初始化非分布式实例
6)为系统配置数据库
这块遇到一个问题。
如果使用TDSQL实例,测试数据库连接会报错。如果使用普通数据库实例,则可以测试成功。
然后,开始安装。
7)进入软件授权管理
默认跳过此步骤即可。
完成安装,进入运营页面。
登录成功。
我这块看不到网关,很奇怪。(初步看,似乎是前面执行install proxy port脚本的时候发生了core,导致最后一步网关设置没完成)
但是同样是可以成功连接数据库的。
mysql -utdsqlpcloud -h192.168.253.202 -P14003 -p'password' |
再次修改ansible(主要是增加proxy及端口)
示例:
执行安装part2_site
ansible-playbook -i tdsql_hosts playbooks/tdsql_part2_site.yml |
没多久,就完成了。
其他可选模块
如hdfs,lvs,kafka,consumer,es等可选组件,由于时间以及资源的关系,本文就不再安装了。
总结
通过本文,熟悉了TDSQL的各组件模块和一键部署流程,基本完成了TDSQL私有云的本地部署,并可以成功访问数据库,达到了体验的目的。
最后,以一条SQL语句结尾吧。
[root@tdsql_test_zk2 tdsqlinstall]# mysql -utdsqlpcloud -h192.168.253.202 -P14003 -p'password' Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 15743 Server version: 5.7.35-V2.0R681D005-v17-20210125-2105-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]> MySQL [(none)]> select version() from dual; +-------------------------------------------+ | version() | +-------------------------------------------+ | 5.7.35-V2.0R681D005-v17-20210125-2105-log | +-------------------------------------------+ 1 row in set (0.00 sec) MySQL [(none)]> |