Zabbix+分布式数据库TiDB实现分布式数据库监控

本文详细介绍了如何结合Zabbix监控分布式数据库TiDB的步骤,包括TiDB和TiKV的安装配置,以及Zabbix服务器和代理的设置,最后通过数据导入和配置修改实现了对TiDB的监控。实验环境中,TiDB集群由多个节点组成,利用PD进行集群管理,TiKV存储数据,确保了高可用和扩展性。
摘要由CSDN通过智能技术生成

一、Tidb的简介

1.什么是TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

与传统的单机数据库相比,TiDB 具有以下优势:

1)纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
2)支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL
3)默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
4)支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账

  1. 具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景

2.TiDB 整体架构

在内核设计上,TiDB 分布式数据库将整体架构拆分成了多个模块,各模块之间互相通信,组成完整的 TiDB 系统。对应的架构图如下:

在这里插入图片描述

2.主要模块简介

1) TiDB Server

TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。

2) PD Server

PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。

3) 存储节点

TiKV Server:

负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range(从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region。TiKV 的 API 在 KV 键值对层面提供对分布式事务的原生支持,默认提供了 SI (Snapshot Isolation) 的隔离级别,这也是 TiDB 在 SQL 层面支持分布式事务的核心。TiDB 的 SQL 层做完 SQL 解析后,会将 SQL 的执行计划转换为对 TiKV API 的实际调用。所以,数据都存储在 TiKV 中。另外,TiKV 中的数据都会自动维护多副本(默认为三副本),天然支持高可用和自动故障转移。

TiFlash

TiFlash 是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速

3.实验环境

需要四台虚拟机

节点所安装服务
server11:172.25.254.21zabbix-server mariadb PD1,TiDB
server12:172.25.254.22tikv集群
server13:172.25.254.23tikv集群

二、server11环境搭建

1.zabbix-server服务提前搭建

成功启动
在这里插入图片描述

2.mariadb提前部署

在这里插入图片描述

3.server11安装配置TiDB

server11下载安装包,解压并后台启用PD

下载TiDB二进制包
[root@westos_student73 file_recv]# wget https://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
[root@westos_student73 file_recv]# scp tidb-latest-linux-amd64.tar.gz server11:

在这里插入图片描述server11开启PD并后台运行

[root@server11 ~]# tar zxf tidb-latest-linux-amd64.tar.gz 
[root@server11 ~]# cd tidb-v5.0.1-linux-amd64/
[root@server11 tidb-v5.0.1-linux-amd64]# ls
bin  PingCAP Community Software Agreement(Chinese Version).pdf  PingCAP Community Software Agreement(English Version).pdf
#开启PD并后台运行
[root@server11 tidb-v5.0.1-linux-amd64]# ./bin/pd-server --name=pd1 --data-dir=pd1 --client-urls="http://172.25.254.21:2379" --peer-urls="http://172.25.254.21:2380" --initial-cluster="pd1=http://172.25.254.21:2380" --log-file=pd.log &
#查看2379和2380端口是否开放
[root@server11 tidb-v5.0.1-linux-amd64]# netstat -antlp | grep :2379
tcp        0      0 172.25.254.21:2379      0.0.0.0:*               LISTEN      14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:60982     172.25.254.21:2379      ESTABLISHED 14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:60980     172.25.254.21:2379      ESTABLISHED 14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:2379      172.25.254.21:60982     ESTABLISHED 14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:60990     172.25.254.21:2379      ESTABLISHED 14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:2379      172.25.254.21:60990     ESTABLISHED 14062/./bin/pd-serv 
tcp        0      0 172.25.254.21:2379      172.25.254.21:60980     ESTABLISHED 14062/./bin/pd-serv 
[root@server11 tidb-v5.0.1-linux-amd64]# netstat -antlp | grep :2380
tcp        0      0 172.25.254.21:2380      0.0.0.0:*               LISTEN      14062/./bin/pd-serv 
[root@server11 tidb-v5.0.1-linux-amd64]# 

在这里插入图片描述

三、解压并开启tikv(server12、server13、server14)

server12配置

[root@server12 ~]# ls
nginx-1.20.2  nginx-1.20.2.tar.gz  tidb-latest-linux-amd64.tar.gz  zabbix_proxy.conf
[root@server12 ~]# tar zxf tidb-latest-linux-amd64.tar.gz 
[root@server12 ~]# ls
nginx-1.20.2  nginx-1.20.2.tar.gz  tidb-latest-linux-amd64.tar.gz  tidb-v5.0.1-linux-amd64  zabbix_proxy.conf
[root@server12 ~]# cd tidb-v5.0.1-linux-amd64/
[root@server12 tidb-v5.0.1-linux-amd64]# ls
bin  PingCAP Community Software Agreement(Chinese Version).pdf  PingCAP Community Software Agreement(English Version).pdf
[root@server12 tidb-v5.0.1-linux-amd64]# ./bin/tikv-server --pd="172.25.254.21:2379" --addr="172.25.254.22:20160" --data-dir=tikv1 --log-file=tikv.log &
[1] 3533
[root@server12 tidb-v5.0.1-linux-amd64]# netstat -antlp


在这里插入图片描述
在这里插入图片描述

server13配置

[root@server13 ~]# ls
apache-tomcat-8.5.24.tar.gz  tidb-latest-linux-amd64.tar.gz
[root@server13 ~]# tar zxf tidb-latest-linux-amd64.tar.gz 
[root@server13 ~]# ls
apache-tomcat-8.5.24.tar.gz  tidb-latest-linux-amd64.tar.gz  tidb-v5.0.1-linux-amd64
[root@server13 ~]# cd tidb-v5.0.1-linux-amd64/
[root@server13 tidb-v5.0.1-linux-amd64]# ls
bin  PingCAP Community Software Agreement(Chinese Version).pdf  PingCAP Community Software Agreement(English Version).pdf
[root@server13 tidb-v5.0.1-linux-amd64]# ./bin/tikv-server --pd="172.25.254.21:2379" --addr="172.25.254.23:20160" --data-dir=tikv1 --log-file=tikv.log &
[1] 4194
[root@server13 tidb-v5.0.1-linux-amd64]# netstat -antlp | grep tikv
tcp        0      0 127.0.0.1:20180         0.0.0.0:*               LISTEN      4194/./bin/tikv-ser 
tcp6       0      0 172.25.254.23:20160     :::*                    LISTEN      4194/./bin/tikv-ser 
tcp6       0      0 172.25.254.23:50760     172.25.254.21:2379      ESTABLISHED 4194/./bin/tikv-ser 

在这里插入图片描述

四、server11服务端开启zabbix及tidb

开启tidb-server服务并打入后台

[root@server11 tidb-v5.0.1-linux-amd64]# ./bin/tidb-server &
[root@server11 tidb-v5.0.1-linux-amd64]# netstat -antlp | grep tidb
tcp6       0      0 :::10080                :::*                    LISTEN      8198/./bin/tidb-ser 
tcp6       0      0 :::4000                 :::*                    LISTEN      8198/./bin/tidb-ser 
[root@server11 tidb-v5.0.1-linux-amd64]# netstat -antlp | grep 4000
tcp6       0      0 :::4000                 :::*                    LISTEN      8198/./bin/tidb-ser 
[root@server11 tidb-v5.0.1-linux-amd64]# 


在这里插入图片描述
在这里插入图片描述

五、数据导入(创建TIDB)

1.数据库连接tidb

[root@server11 tidb-v5.0.1-linux-amd64]# mysql -h 172.25.254.21 -P 4000 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.25-TiDB-v5.0.1 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'westos';
mysql> grant all privileges on *.* to 'zabbix'@'%';

在这里插入图片描述

在这里插入图片描述

2、给数据库导入数据

将之前mysql导入的zabbix库的数据倒出,此步要确定之前已经创建了zabbix数据库。
[root@server1 zabbix-server-mysql-4.0.5]# mysqldump -uroot -pwestos zabbix >/mnt/zabbix.sql 
将备份的数据库导入tidb的数据库中
[root@server1 mnt]# mysql -h 172.25.4.111 -P 4000 -uroot
MySQL [(none)]> use zabbix;
Database changed
MySQL [zabbix]> set tidb_batch_insert=1;
MySQL [zabbix]> source /mnt/zabbix.sql;

在这里插入图片描述

3.server11修改配置文件

[root@server11 ~]# vim /etc/zabbix/zabbix_server.conf 
DBPort=4000
[root@server11 ~]# cd /etc/zabbix/web/
[root@server11 web]# vim zabbix.conf.php

$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = '172.25.254.21';
$DB['PORT']                             = '4000';
$DB['DATABASE']                 = 'zabbix';
$DB['USER']                             = 'zabbix';
$DB['PASSWORD']                 = 'westos';


重启服务
[root@server11 web]# systemctl restart zabbix-server
[root@server11 web]# systemctl restart zabbix-agent

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

4、浏览器访问进行测试

在这里插入图片描述在这里插入图片描述此时访问的已经不是mariadb数据库,而是tidb数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多于少的区别

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值