为zabbix分布式监控配置TiDB

#############################TIDB简介#####################################
TiDB 是 PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库。

TiDB 是开源分布式 SQL 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。 TiDB 兼容 MySQL ,支持无限的
水平扩展,具备强一致性和高可用性。 TiDB 的目标是为在线事务和分析提供一站式的解决方案。
TiDB 具备如下 NewSQL 核心特性:

1 高度兼容 MySQL
 大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。
2水平弹性扩展
 通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
3分布式事务
 TiDB 100% 支持标准的 ACID 事务。
4 真正金融级高可用
 相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。
5 一站式 HTAP 解决方案
 TiDB 作为典型的 OLTP 行存数据库,同时兼具强大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP解决方案,一份存储同时处理OLTP & OLAP(OLAP、OLTP的介绍和比较 )无需传统繁琐的 ETL 过程。
6云原生 SQL 数据库
 TiDB 是为云而设计的数据库,同 Kubernetes (十分钟带你理解Kubernetes核心概念 )深度耦合,支持公有云、私有云和混合云,使部署、配置和维护变得十分简单。
 TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景,更复杂的 OLAP 分析可以通过 TiSpark 项目来完成。 TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力.


TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景。
TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时
它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,极大的提升研发的生产力。

要深入了解 TiDB 的水平扩展和高可用特点,首先需要了解 TiDB 的整体架构。

TiDB 集群主要分为三个组件:

TiDB Server
TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与
TiKV 交互获取数据,最终返回结果。 TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水
平扩展,可以通过负载均衡组件(如 LVS 、 HAProxy 或 F5 )对外提供统一的接入地址。

PD Server
Placement Driver ( 简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key
存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、 Raft group leader 的迁移等);三
是分配全局唯一且递增的事务 ID 。
PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。

TiKV Server
TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本
单位是 Region ,每个 Region 负责存储一个 Key Range (从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV
节点会负责多个 Region 。 TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管
理,不同节点上的多个 Region 构成一个 Raft Group ,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这
里也是以 Region 为单位进行调度。

TiDB 典型应用场景

首先,如果你在用关系 型数据库,比如 MySQL 比如 Oracle 这样的单机关系型 SQL 的数据,当你有水平扩展的需求,当你的数据量比较大已经超出了单机的限制,比如说并发量单机已经扛不住了,但是同时你又不想在业务层做很复杂的分库分表, 这时候你可以使用 TiDB。

第二,就是你的数据极端重要,不能容忍任何的数据丢失,不能容忍任何的宕机的时间,这时候你还需要跨数据中心的多活和高可用的话,TiDB 是你唯一的选择。

第三,你需要对你整个业务做云上的改造,但却还在使用单机数据库的话,它一定会成为你整个架构的瓶颈,这时候你需要TiDB 去帮你解决在云上的数据存储方案。

二、为zabbix配置TiDB数据库

本文配置测试环境为rhel7.2 x86_64bit,且已经安装过zabbix并且配置过mariadb数据库。

官方文档

1. TiDB 安装前系统配置与检查

文件系统 TiDB 部署环境推荐使用 ext4 文件系统
Swap 空间 TiDB 部署推荐关闭 Swap 空间
Disk Block Size 设置系统磁盘 Block 大小为 4096

selinux处于disabled状态
防火墙关闭:请查看 TiDB 所需端口在各个节点之间是否能正常访问

2. 下载官方 Binary

# 下载压缩包

wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256

# 检查文件完整性,返回 ok 则正确

sha256sum -c tidb-latest-linux-amd64.sha256

# 解开压缩包(在所有tidb主机中都要有二进制包)

tar -xzf tidb-latest-linux-amd64.tar.gz
cd tidb-latest-linux-amd64

3. 功能性测试部署

这里我将使用四个节点,部署一个 PD,三个 TiKV,以及一个 TiDB,各个节点以及所运行服务信息如下:

hostname IP 安装的系统服务
lockey41 192.168.0.41 PD1, TiDB,zabbix-server,web
lockey151 192.168.0.151 TiKV1
lockey152 192.168.0.152 TiKV2
lockey153 192.168.0.153 TiKV3

按如下步骤依次启动 PD 集群,TiKV 集群以及 TiDB:

注意:以下启动各个应用程序组件实例的时候,请选择后台启动,避免前台失效后程序自动退出。

cd tidb-latest-linux-amd64

步骤一. 在lockey41 启动 PD:

./bin/pd-server --name=pd1 --data-dir=pd1 --client-urls="http://192.168.0.41:2379" --peer-urls="http://192.168.0.41:2380" --initial-cluster="pd1=http://192.168.0.41:2380" --log-file=pd.log &

步骤二. 在 lockey151,lockey152,lockey153 启动 TiKV:

lockey151

./bin/tikv-server --pd="192.168.0.41:2379" --addr="192.168.0.151:20160" --data-dir=tikv1 --log-file=tikv.log &

lockey152

./bin/tikv-server --pd="192.168.0.41:2379" --addr="192.168.0.152:20160" --data-dir=tikv1 --log-file=tikv.log &

lockey153

./bin/tikv-server --pd="192.168.0.41:2379" --addr="192.168.0.151:20160" --data-dir=tikv1 --log-file=tikv.log &

步骤三. 在 lockey41 启动 TiDB:

./bin/tidb-server

对于各服务的启动状态和数据库端口可以使用以下命令检查:

ps -aux | grep server
netstat -antlp | grep 4000

步骤四. 使用 MySQL 客户端连接 TiDB:

这一步如果OK的话基本的数据库配置就成功了,接下来需要往zabbix应用中进行集成;如果这一步出现问题请先检查防火墙(systemctl status firewalld)是否关闭以及各服务是否正常启动

[root@lockey41 zabbix-server-mysql-3.4.2]# mysql -h 127.0.0.1 -P 4000 -ulockey -plockey23
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.1-TiDB-0.9.0 MySQL Community Server (Apache License 2.0)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [test]> CREATE DATABASE zabbix CHARSET 'utf8';
Query OK, 0 rows affected (0.07 sec)

MySQL [test]> GRANT ALL ON zabbix.* TO 'lockey'@'192.168.%.%' IDENTIFIED BY 'lockey23';
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| INFORMATION_SCHEMA |
| zabbix             |
+--------------------+
2 rows in set (0.00 sec)

记得往数据库中导入数据

[root@lockey41 ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.2/
[root@lockey41 zabbix-server-mysql-3.4.2]# tar -zxvf create.sql.gz
[root@lockey41 zabbix-server-mysql-3.4.2]# mysql -h 192.168.0.41 -P 4000 -ulockey -plockey23 zabbix<create.sql

4. 将TiDB集成到zabbix中去

修改之前的zabbix-server配置文件

vim /etc/zabbix/zabbix_server.conf

DBPort=4000##特别注意这一行

修改zabbix的web(php)配置

[root@lockey41 web]# pwd
/etc/zabbix/web
[root@lockey41 web]# vim zabbix.conf.php


如果上边的配置没有修改则会出现以下错误:

Database error      Error connecting to database: Can't connect to local MySQL server through socket

上边步骤如果都OK将可以正常登录(初始用户名密码Admin/zabbix)

登录成功首页如下展示:


 

猜你喜欢

转载自blog.csdn.net/chao199512/article/details/81675791