zabbix+tidb:可实现水平扩展
Posted Tuki_a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix+tidb:可实现水平扩展相关的知识,希望对你有一定的参考价值。
什么是tidb
TiDB 是开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品。
具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 mysql 5.7 协议和 MySQL 生态等重要特性。
目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。
TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
与传统的单机数据库相比,TiDB 具有以下优势:
纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
支持 SQL,对外暴露 MySQL 的网络协议,并兼容大多数 MySQL 的语法,在大多数场景下可以直接替换 MySQL
默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账
具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景
tidb整体架构
TiDB Server:SQL 层,对外暴露 MySQL 协议的连接 endpoint,负责接受客户端的连接,执行 SQL 解析和优化,最终生成分布式执行计划。TiDB 层本身是无状态的,实践中可以启动多个 TiDB 实例,通过负载均衡组件(如 LVS、HAProxy 或 F5)对外提供统一的接入地址,客户端的连接可以均匀地分摊在多个 TiDB 实例上以达到负载均衡的效果。TiDB Server 本身并不存储数据,只是解析 SQL,将实际的数据读取请求转发给底层的存储节点 TiKV(或 TiFlash)。
PD (Placement Driver) Server:整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。PD 不仅存储元信息,同时还会根据 TiKV 节点实时上报的数据分布状态,下发数据调度命令给具体的 TiKV 节点,可以说是整个集群的“大脑”。此外,PD 本身也是由至少 3 个节点构成,拥有高可用的能力。建议部署奇数个 PD 节点。
存储节点
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 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。
搭建步骤
下载zabbix组件及相应软件
[root@server1 ~]# yum install -y zabbix-server-mysql zabbix-web-mysql
[root@server1 ~]# yum install -y mariadb-server #安装数据库
[root@server1 ~]# systemctl start mariadb #打开数据库
[root@server1 ~]# mysql_secure_installation ##初始化数据库,设置密码
使用设置的密码登录mysql成功
安装tidb并开启pd
[root@server1 ~]# cd tidb/
[root@server1 tidb]# tar zxf tidb-latest-linux-amd64.tar.gz
[root@server1 tidb]# cd tidb-latest-linux-amd64
[root@server1 tidb-latest-linux-amd64]# ./bin/pd-server --name=pd1 --data-dir=pd1 --client-urls="http://172.25.26.1:2379" --peer-urls="http://172.25.26.1:2380" --initial-cluster="pd1=http://172.25.26.1:2380" --log-file=pd.log &
开启tikv
[root@server2 tidb]# tar zxf tidb-latest-linux-amd64.tar.gz
[root@server2 tidb]# cd tidb-latest-linux-amd64
[root@server2 tidb-latest-linux-amd64]# ./bin/tikv-server --pd="172.25.26.1:2379" --addr="172.25.26.2:20160" --data-dir=tikv1 --log-file=tikv.log &
开启tidb-server
[root@server1 tidb-latest-linux-amd64]# ./bin/tidb-server &
配置tidb
[root@server1 tidb-latest-linux-amd64]# mysql -h 172.25.26.1 -P 4000 -uroot ##数据库通过4000端口连接tidb
Welcome to the MariaDB monitor. Commands end with ; or \\g.
Your MariaDB connection id is 10
Server version: 5.5.60-MariaDB MySQL Community Server (Apache License 2.0)
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)]> create database zabbix character set utf8 collate utf8_bin; ##创建数据库
MySQL [(none)]> create user 'zabbix'@'%' identified by 'zabbix'; ##创建用户
Query OK, 1 row affected (0.29 sec)
MySQL [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> quit
Bye
修改zabbix配置文件
[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=172.25.26.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=4000
[root@server1 web]# vim /etc/zabbix/web/zabbix.conf.php
##写入以下内容
<?php
// Zabbix GUI configuration file.
global $DB, $HISTORY;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '172.25.26.1';
$DB['PORT'] = '4000';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
重启服务
[root@server1 web]# systemctl restart zabbix-server.service
[root@server1 web]# systemctl restart zabbix-agent.service
浏览器访问
输入ip/zabbix访问
以上是关于zabbix+tidb:可实现水平扩展的主要内容,如果未能解决你的问题,请参考以下文章