国产数据库技术分析-TiDB丝滑安装配置

一、需求背景

客户单位收到上级单位通知,需要将应用程序使用的 mysql 数据库切换为信创认证的国产数据库,因此项目组需要对mysql数据库切换为国产数据库进行技术可行性分析。
在这里插入图片描述
按信创名单排查后,决定先使用 PingCAP 公司旗下的 TiDB 进行技术分析,原因是 TiDB 数据库几乎完全兼容 mysql 数据库。

问题汇总(持续更新)子项处理办法
机器/服务器CPU架构,关联使用 Tiflash 组件(涉及join性能)老机器部署 v6.2 版本以下的 TiDB
mysql兼容性外键,不兼容外键去掉mysql外键(这个的确没啥用)
mysql兼容性字符集,不兼容部分字符集,如 utf8_danish_ci修改 utf8_danish_ci 字符集
mysql兼容性主键控制,要求每张表都要有主键增加主键控制
mysql兼容性UNION ALL语法报错,原因为字段设置为bit类型修改字段类型为char
mysql兼容性语法强校验;group by column desc; mysql不会报错,但TiDB报错修正语法
mysql兼容性不支持分组合计 with rollup 语法X
mysql兼容性不支持存储过程、函数、触发器X

从上面来看,TiDB还是做得非常好,规避一些mysql人为造成的不规范行为。

二、单机上丝滑部署TiDB生产集群

1、下载并安装 TiUP(工具):

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

在这里插入图片描述

2、声明全局环境变量(任何地方都可以用TiUP工具):

# 修改为 Shell profile 文件的实际位置,在上面安装Tiup工具时已经告知
source ${your_shell_profile}
source /root/.bash_profile

3、开始安装(TiDB集群) 配置环境:

tiup playground 是快速而临时的搭建方案(不推荐),生产环境不能这样使用,需要配置一份 topology.yaml 文件,去描述集群内容、端口、数据存储地址。
做到优雅、丝滑的启动集群、停止集群、重启集群、监测集群。

3.1、安装与更新cluster
tiup cluster;
tiup update --self && tiup update cluster;
3.2、创建标准的目录结构:
# 标准的目录结构,有助于规范部署行为、便于后期运维
cd home;
mkdir TiDB;
cd TiDB;
mkdir tidb-deploy;
mkdir tidb-data;
vim topo.yaml;

在这里插入图片描述

3.3、topo.yaml 模板文件如下(1个tidb库、3个tikv存储):

10.10.26.233 机器网卡IP,用于后续其他机器、程序或者navicat客户端链接使用。

# 注意下述的存储路径,端口不能被其他程序占用(可以替换端口)
global:
 user: "tidb"
 ssh_port: 22
 deploy_dir: "/home/TiDB/tidb-deploy"
 data_dir: "/home/TiDB/tidb-data"

monitored:
 node_exporter_port: 9100
 blackbox_exporter_port: 9115

server_configs:
 tidb:
   instance.tidb_slow_log_threshold: 300
 tikv:
   readpool.storage.use-unified-pool: false
   readpool.coprocessor.use-unified-pool: true
 pd:
   replication.enable-placement-rules: true
   replication.location-labels: ["host"]
 tiflash:
   logger.level: "info"

pd_servers:
 - host: 10.10.26.233

tidb_servers:
 - host: 10.10.26.233

tikv_servers:
 - host: 10.10.26.233
   port: 20160
   status_port: 20180
   config:
     server.labels: { host: "logic-host-1" }

 - host: 10.10.26.233
   port: 20161
   status_port: 20181
   config:
     server.labels: { host: "logic-host-2" }

 - host: 10.10.26.233
   port: 20162
   status_port: 20182
   config:
     server.labels: { host: "logic-host-3" }

tiflash_servers:
 - host: 10.10.26.233

monitoring_servers:
 - host: 10.10.26.233

grafana_servers:
 - host: 10.10.26.233
3.4、部署集群

tiup list tidb 命令可查看版本

# 执行命令后要求输入当前ssh的root账号密码,等待几分钟部署完成
tiup cluster deploy tidb v6.1.6 /home/TiDB/topo.yaml --user root -p

坑点:TiDB从 6.2 版本开始,tiflash 对向量化引擎做了优化,但是对 CPU架构也有了一定要求,需要支持avx2。
报错如下:failed to start: 10.10.26.233 tiflash-9000.service, please check the instance’s log(/home/TiDB/tidb-deploy/tiflash-9000/log) for more detail.: timed out waiting for port 3930 to be started after 2m0s
因此:老机器/服务器的CPU可能导致 tiflash 部署失败;而tiflash 为复杂join查询和并行计算提供了优化,同时使用事务和分析查询的话还是必须要安装tiflash,所以我这里采用的是 v6.1.6版本

4、启动集群

# 启动集群
tiup cluster start tidb
#查看集群列表
tiup cluster list
#查看集群的拓扑结构和状态
tiup cluster display tidb
#关闭集群
tiup cluster stop tidb

5、连接TiDB数据库:

# 可以用如下两个命令连接TIDB数据库
tiup client
mysql --host 127.0.0.1 --port 4000 -u root

在这里插入图片描述

5.1、设置数据库密码:
# 如同mysql一样,设置root账号的密码(外部navicat就能链接上了)
mysql --host 10.10.26.233 --port 4001 -u root;
use mysql;
update user set authentication_string=password("cdqcp01.com") where user="root";
flush privileges;
5.2、查看数据库监控:

TiDB自带数据库监控

TiDB Dashboard:  http://10.10.26.233:2379/dashboard (账号和密码为数据库账号密码)
Grafana:         http://10.10.26.233:3000 (默认admin/admin,进入后需要修改密码)

在这里插入图片描述

6、删除安装和数据:

危险命令
# 销毁集群
tiup cluster destroy tidb;
# Yes, I know my cluster and data will be deleted.
# 清除所有的 TIUP部署和数据
tiup clean --all 
  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值