目录
认识TDSQL
整体架构
组件介绍
安装部署
规划环境
简单部署
准备tdsql包
免密配置
准备数据目录
修改tdsql_hosts文件
修改group_vars配置(ansible变量)
安装ansible(主控机)
安装zk(part1_site)
初始化chitu
再次修改ansible(主要是增加proxy及端口)
执行安装part2_site
其他可选模块
总结
根据百度百科的搜索信息显示,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_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 |
按照自己的规划去修改对应组件的配置即可。
vim group_vars/all |
按官方说明配置即可。
source scripts/environment_set sh scripts/install_ansible.sh |
ansible --version |
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。
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-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)]> |