一、了解TDSQL

tdsql腾讯云文档
TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。实现超百万级 QPS 的高吞吐,最高 PB 级智能存储,保障数据安全可靠。

TDSQL-C MySQL 版采用存储和计算分离的架构,所有计算节点共享一份数据,提供秒级的配置升降级、秒级的故障恢复,单节点可支持百万级 QPS,自动维护数据和备份,最高以GB/秒的速度并行回档。

TDSQL-C MySQL 版既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、高效迭代的优势。TDSQL-C MySQL 版引擎完全兼容原生 MySQL,您可以在不修改应用程序任何代码和配置的情况下,将 MySQL 数据库迁移至 TDSQL-C MySQL 版引擎。
腾讯云私有文档:这个文档有详细的教程,是官方的说明安装文档。可以自行去看一下,我看网上都没有提到。 里面的内容如下:

感兴趣可以自行了解。

可以看到tdsql-mysql是完全兼容mysql的数据库,所有的操作都是mysql一样,只不过是多了分布式的集群化,拥有的更多的功能更加高效。

术语表

机器准备

部署方式请参考官方的手册。

由于本地环境资源不足,这里构建出三个虚拟机,使用三台虚拟机来搭建一个最小的TDSQL集群(2台用于DB、1台用于调度和运营体系部署)。

备注:虚拟机环境均为:

    2核+AMD Ryzen 5 PRO 4650U+CentOS7+2G内存,配置可以说是极低(所以可选的组件本文就不安装了)。

三台虚拟机的配置如下:

三台机器的规划如下:

虚拟机系统推荐centos7

配置环境

1.下载安装包

终端执行命令下载文件

wget https://tdsql1031730-1300276124.cos.ap-beijing.myqcloud.com/tdsql_10.3.17.3.0.zip

解压文件

unzip tdsql_10.3.17.3.0.zip

2.配置文件

2.1免密配置

 #以下指令都在主机执行 这里直接回撤就行不需要设置ssh-keygen -t rsa#这里需要输入从机1的密码ssh-copy-id 192.168.162.136#这里需要输入从机2的密码ssh-copy-id 192.168.162.137

免密登录主要是安装的时候脚本自动连接从机安装需要的组件

2.2 修改 tdsql_hosts文件

文件在tdsql_install文件夹下面

# 填入所有机器的地址(包括主控机)# 用于环境检测和初始化配置# 同一个标签组内的ip地址不要重复,一个ip一行# 序号从1递增,比如只有2台机器,那么序号保留tdsql_mac1 tdsql_mac2# 后续如果有扩容,新扩容的机器也需要在这里补上[tdsql_allmacforcheck]tdsql_mac1 ansible_ssh_host=192.168.162.135tdsql_mac2 ansible_ssh_host=192.168.162.136tdsql_mac3 ansible_ssh_host=192.168.162.137# zookeeper机器ip地址# 数量只能是1、3、5, 正式环境建议3台或者5台# 如果是使用自己已有的zk集群,这里同样要填写正确的zk地址[tdsql_zk]tdsql_zk1 ansible_ssh_host=192.168.162.135tdsql_zk2 ansible_ssh_host=192.168.162.136tdsql_zk3 ansible_ssh_host=192.168.162.137# scheduler机器的ip地址,正式环境建议2个[tdsql_scheduler]tdsql_scheduler1 ansible_ssh_host=192.168.162.136tdsql_scheduler2 ansible_ssh_host=192.168.162.137# oss机器的ip地址, 正式环境建议2个[tdsql_oss]tdsql_oss1 ansible_ssh_host=192.168.162.136tdsql_oss2 ansible_ssh_host=192.168.162.137# 赤兔机器的ip地址, 正式环境建议2个[tdsql_chitu]tdsql_chitu1 ansible_ssh_host=192.168.162.136tdsql_chitu2 ansible_ssh_host=192.168.162.137# 监控采集模块的IP地址,正式环境建议2个[tdsql_monitor]tdsql_monitor1 ansible_ssh_host=192.168.162.136tdsql_monitor2 ansible_ssh_host=192.168.162.137# db机器地址# 有多少台就填多少个ip地址# 注意tdsql_db序号逐个递增,不要跳跃[tdsql_db]tdsql_db1 ansible_ssh_host=192.168.162.136tdsql_db2 ansible_ssh_host=192.168.162.137# proxy机器地址[tdsql_proxy]tdsql_proxy1 ansible_ssh_host=192.168.162.136tdsql_proxy2 ansible_ssh_host=192.168.162.137# hdfs机器地址# 机器数量只能是1台或者3台# 如果单节点部署,则只保留tdsql_hdfs1,其他删除# 正式环境建议高可用部署,初始安装数量只能3台[tdsql_hdfs]tdsql_hdfs1 ansible_ssh_host=192.168.162.135# lvs机器地址,数量固定2台[tdsql_lvs]tdsql_lvs1 ansible_ssh_host=172.16.16.30tdsql_lvs2 ansible_ssh_host=172.16.16.48# kafka机器地址,数量固定3台[tdsql_kafka]tdsql_kafka1 ansible_ssh_host=172.16.16.47tdsql_kafka2 ansible_ssh_host=172.16.16.30tdsql_kafka3 ansible_ssh_host=172.16.16.48# 多源同步消费者服务ip地址,数量固定1台[tdsql_consumer]tdsql_consumer1 ansible_ssh_host=172.16.16.30# es机器地址[tdsql_es]tdsql_es1 ansible_ssh_host=192.168.162.135[tdsql_mc]tdsql_mc1 ansible_ssh_host=192.168.162.135tdsql_mc2 ansible_ssh_host=192.168.162.136tdsql_mc3 ansible_ssh_host=192.168.162.137#这里如果不需要可以不配置[tdsql_newdb]tdsql_newdb1 ansible_ssh_host=1.1.1.1tdsql_newdb2 ansible_ssh_host=2.2.2.2tdsql_newdb3 ansible_ssh_host=3.3.3.3#这里如果不需要可以不配置[tdsql_ansible_test]tdsql_ansible_test1 ansible_ssh_host=1.1.1.1tdsql_ansible_test2 ansible_ssh_host=2.2.2.2tdsql_ansible_test3 ansible_ssh_host=3.3.3.3

按照上面规划的填写即可 这里的ip需要换成你自己的ip

2.2 修改group_vars配置(ansible变量)

文件在tdsql_install/group_vars/all文件

---# scheduler,oss机器网卡tdsql_sche_netif: ens33# 操作系统账号tdsql的明文密码# 如果有规划要部署两个集群做DCN同步, 则这两个集群的tdsql密码要一致tdsql_os_pass: 12345# tdsql在zk上的根路径, 保持默认不允许修改tdsql_zk_rootdir: /tdsqlzk# zk机器的域名配置, 会写入各配置文件, 并将域名配置到/etc/hosts中# 正式环境必须用机房或者地区的关键字, 有意义的关键字来命名# 如果部署多套TDSQL集群, 则名字需要唯一# 例如: 深圳机房zk的域名可以定义为tdsql_sz_zktdsql_zk_domain_name: tdsql_test_zk# zk端口配置, 保持默认不要改,如果是自建的zk, 则和已有zk端口保持一致tdsql_zk_clientport: 2118tdsql_zk_serverport1: 2338tdsql_zk_serverport2: 2558# 赤兔监控库配置, 赤兔初始化完成后需要将监控库信息在这里更新tdsql_metadb_ip: 192.168.162.135tdsql_metadb_port: 15001tdsql_metadb_ip_bak: 192.168.162.135tdsql_metadb_port_bak: 15001tdsql_metadb_user: hanlontdsql_metadb_password: 123456# hdfs机器的ssh端口tdsql_hdfs_ssh: 22# hdfs数据目录, 正式环境要求mount挂载比较大的数据盘tdsql_hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs# kafka日志目录,正式环境要求mount挂载比较大的数据盘tdsql_kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka# 多源同步消费服务的机器网卡tdsql_consumer_netif: ens33# es7配置tdsql_es7_mem: 4tdsql_es7_base_path: /data1/estdsql_helper_cluster_name: tdsql# 一致性读MC机器的网卡, 需要安装MC时配置tdsql_mc_netif: ens33update_tdsqlinstall_packet: mysqlagent

注意 只需要修改网卡 和 赤兔监控库配置
网卡可以通过 命令查看

ifconfig


红色框里的就是自己的网卡

2.3安装ansible(主控机)

#指定环境配置source scripts/environment_set#执行安装脚本sh scripts/install_ansible.sh

查看是否安装成功

ansible --version

2.4 关闭防火墙

注意一定要关闭防火墙 要不然无法连接到从机

#(关闭防火墙)systemctl stop firewalld.service#(关闭防火墙自动启动)systemctl disable firewalld.service#查看防火墙状态:systemctl status firewalld.service

2.5 修改内存检测文件(如果内存满足要求 则不需要修改)

vim tdsql_install/roles/tdsql_env_check/files/checkenv/docheck.sh
#!/bin/bashloglist=`ls /data/tools/checklog/`initime=0mintime=0maxtime=0initzone='hanlon'for curlog in $loglistdo  curtime=`grep "cur_timestamp" /data/tools/checklog/$curlog |awk -F "[: ]+" {'print $2'}`  if [ $initime -eq 0 ];then        initime=$curtimemintime=$(($initime - 8))maxtime=$(($initime + 8))    elseif [ $curtime -gt $maxtime ]; then          echo "/data/tools/checklog/$curlog time is not sync"          echo "/data/tools/checklog/$curlog time is not sync" > /data/tools/checkenv/err.log          exit 1fiif [ $curtime -lt $mintime ]; then          echo "/data/tools/checklog/$curlog time is not sync"          echo "/data/tools/checklog/$curlog time is not sync" > /data/tools/checkenv/err.log          exit 1fi  fi  cur_cpu_capacity=`grep "cpu_capacity" /data/tools/checklog/$curlog |awk -F "[: ]+" {'print $2'}`  if [ ${cur_cpu_capacity} -lt 2 ]; then      echo "/data/tools/checklog/$curlog cpu less than 2C"      echo "/data/tools/checklog/$curlog cpu less than 2C" > /data/tools/checkenv/err.log      exit 1  fi    cur_mem_capacity=`grep "mem_capacity" /data/tools/checklog/$curlog |awk -F "[: ]+" {'print $2'}`  #注释掉这里 这里是检测机器的内存大小是否为5g  #if [ ${cur_mem_capacity} -lt 5000000 ]; then   #   echo "/data/tools/checklog/$curlog available mem less than 5G"    #  echo "/data/tools/checklog/$curlog available mem less than 5G" > /data/tools/checkenv/err.log     # exit 1 # fi cur_python_version=`grep "python_version" /data/tools/checklog/$curlog |awk -F "[: ]+" {'print $2'}` if [[ "${cur_python_version}" < '2.7.0' ]]; then      echo "/data/tools/checklog/$curlog python_version less than 2.7"      echo "/data/tools/checklog/$curlog python_version less than 2.7" > /data/tools/checkenv/err.log      exit 1 fi curtimezone=`grep "cur_timezone" /data/tools/checklog/$curlog |awk -F "[: ]+" {'print $2'}` if [[ "${initzone}" == 'hanlon' ]]; then         initzone=${curtimezone} fi if [[ "${curtimezone}" != "${initzone}" ]]; then      echo "/data/tools/checklog/$curlog time_zone is not ${initzone}"      echo "/data/tools/checklog/$curlog time_zone is not ${initzone}" > /data/tools/checkenv/err.log      exit 1 fi cur_sh=`grep "cur_sh" /data/tools/checklog/$curlog | awk -F "[: ]+" {'print $2'} | awk -F'/' '{print $NF}'` if [[ "${cur_sh}" != 'bash' ]]; then      echo "/data/tools/checklog/$curlog /bin/sh is not bash"      echo "/data/tools/checklog/$curlog /bin/sh is not bash" > /data/tools/checkenv/err.log      exit 1 fidone

这里是检测机器的内存大小是否为5g 因为我不需要安装后面的一系列组件 只是测试一下是否能够安装 所有 这里取消了

3.开始安装

进入tdsql_install目录下

 cd tdsql_10.3.17.3.0/tdsql_install/

安装命令

ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_site.yml

他会自动安装 如果太久没有反应查看是否从机 卡住了

最后执行到没有错误那就是安装成功了

# 执行了近20多分钟 ,执行完成要无failed=0PLAY RECAP ********************************************************************************************************************************************************chitu1                     : ok=20   changed=19   unreachable=0    failed=0chitu2                     : ok=20   changed=19   unreachable=0    failed=0db1                        : ok=13   changed=12   unreachable=0    failed=0db2                        : ok=13   changed=12   unreachable=0    failed=0db3                        : ok=13   changed=12   unreachable=0    failed=0huyidb01                   : ok=30   changed=19   unreachable=0    failed=0huyidb02                   : ok=27   changed=16   unreachable=0    failed=0huyidb03                   : ok=27   changed=16   unreachable=0    failed=0huyidb04                   : ok=27   changed=17   unreachable=0    failed=0oss1                       : ok=14   changed=11   unreachable=0    failed=0oss2                       : ok=14   changed=11   unreachable=0    failed=0proxy1                     : ok=13   changed=10   unreachable=0    failed=0proxy2                     : ok=13   changed=10   unreachable=0    failed=0proxy3                     : ok=13   changed=10   unreachable=0    failed=0scheduler1                 : ok=25   changed=23   unreachable=0    failed=0scheduler2                 : ok=22   changed=20   unreachable=0    failed=0zk1                        : ok=19   changed=17   unreachable=0    failed=0zk2                        : ok=19   changed=17   unreachable=0    failed=0zk3                        : ok=19   changed=17   unreachable=0    failed=0

可能出现的问题 ssh连接错误 那就是没有关闭防火墙 或者 没有配置免密登录
获取manager_varabie 错误 是网卡配置错误

4.初始化赤兔平台

网页访问安装chitu模块的机器地址,初始化chitu。
http://192.168.162.136/tdsqlpcloud
注意这里的ip为你hosts文件配置的ip地址

下一步 这里需要输入 配置文件配置的oss地址
就是从机1:8080 和从机2:8080 如有多个填写多个即可

集群初始化

逐一配置IDC、机型规格、设备资源、网关组等信息,然后创建分布式实例。
然后初始化实例

然后完成安装 进入平台
登录运营管理平台: 帐号密码 admin/123456

后续的就自己去尝试了