Linux下为分布式监控系统Zabbix配置TiDB数据库

一、初始TiDB

1、TiDB 简介

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

TiDB 具备如下 NewSQL 核心特性:

  1. SQL支持 (TiDB 是 MySQL 兼容的)
  2. 水平线性弹性扩展
  3. 分布式事务
  4. 跨数据中心数据强一致性保证
  5. 故障自恢复的高可用

TiDB 的设计目标是 100% 的 OLTP 场景和 80% 的 OLAP 场景。

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

2、TiDB 整体架构

要深入了解 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 为单位进行调度。

3、核心特性

<1>水平扩展

无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。

<2>高可用

高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。

二、实验环境(rhel7.3版本)

1、selinux和firewalld状态为disabled

2、各主机信息如下:

主机 ip
server1(zabbix-server,PD1,TiDB,TiKV,web) 172.25.83.1

三、为zabbix配置TiDB数据库

1、下载zabbix软件包及其对应依赖性对应的包,并进行安装

[root@server1 ~]# yum install * -y

注:php的安装版本需要注意(yum list php 查看匹配版本);如果是7.0版本的,需要安装的为5.4.16-21.el7;如果是7.2的主机,需要安装为5.4.16-36.el7;如果是7.3版本的,需要安装的为5.4.16-42.el7。

2、安装数据库,启动数据库,登陆数据库,并对数据库进行配置

[root@server1 ~]#  yum install mariadb-server -y
[root@server1 mysql]# systemctl start mariadb
[root@server1 mysql]# mysql_secure_installation    #第一个敲空格,其余的敲y
[root@server1 mysql]# mysql -uroot -proot
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;    #创建zabbix数据库,因为之后要在web界面进行操作,为了防止乱码,这里创建的数据库要求格式为utf-8
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';   
#创建zabbix用户,并对其进行授权

3、安装httpd服务,对其进行配置,并启动httpd服务

<1>安装httpd服务

[root@server1 ~]# yum install httpd -y

<2>对httpd服务进行配置(编辑/etc/httpd/conf.d/zabbix.conf)

[root@server1 ~]# cd /etc/httpd/conf.d/
[root@server1 conf.d]# vim zabbix.conf    #更改时区
 20         php_value date.timezone Asia/Shanghai

<3>启动httpd服务

[root@server1 ~]# systemctl start httpd

4、下载TIDB数据库的相关压缩包,检测该压缩包,并进行解压

(1)下载压缩包

[root@server1 ~]# yum install wget -y   #下载wget软件包,以提供wget命令

[root@foundation83 4.0]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE   #在物理机进行配置,使172.25.83网段的主机可以上网



[root@server1 ~]# wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
[root@server1 ~]# wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256


[root@server1 ~]# ls
tidb-latest-linux-amd64.tar.gz  tidb-latest-linux-amd64.sha256

(2)检查文件完整性,返回 ok 则正确

[root@server1 ~]# sha256sum -c tidb-latest-linux-amd64.sha256
tidb-latest-linux-amd64.tar.gz: OK

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

[root@server1 ~]# tar -xzf tidb-latest-linux-amd64.tar.gz
[root@server1 ~]# ll -d tidb-latest-linux-amd64
drwxr-xr-x 3 1000 1000 17 Apr 19 13:42 tidb-latest-linux-amd64

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

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

[root@server1 ~]# cd tidb-latest-linux-amd64
[root@server1 tidb-latest-linux-amd64]# ls
bin

步骤一、启动 PD:

[root@server1 tidb-latest-linux-amd64]# bin/pd-server --data-dir=/data/pd --log-file=/data/logs/pd.log &
[1] 2889

步骤二、启动 TiKV:

[root@server1 tidb-latest-linux-amd64]#  bin/tikv-server --pd="127.0.0.1:2379" --data-dir=/data/tikv --log-file=/data/logs/tikv.log &
[2] 2899

步骤三、启动 TiDB:

[root@server1 tidb-latest-linux-amd64]# bin/tidb-server --store=tikv --path="127.0.0.1:2379" --log-file=/data/logs/tidb.log &
[3] 2971

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

[root@server1 tidb-latest-linux-amd64]# ps aux | grep server
root      2889  0.6  1.6 10615964 31716 pts/0  Sl   20:14   0:00 bin/pd-server --data-dir=/data/pd --log-file=/data/logs/pd.log
root      2899  1.6 25.1 1238356 473992 pts/0  S<l  20:14   0:00 bin/tikv-server --pd=127.0.0.1:2379 --data-dir=/data/tikv --log-file=/data/logs/tikv.log
root      2971  1.3  8.3 549516 156964 pts/0   Sl   20:14   0:00 bin/tidb-server --store=tikv --path=127.0.0.1:2379 --log-file=/data/logs/tidb.log
root      3032  0.0  0.0 112648   960 pts/0    R+   20:15   0:00 grep --color=auto server
[root@server1 tidb-latest-linux-amd64]# netstat -antulpe | grep 4000
tcp6       0      0 :::4000                 :::*                    LISTEN      0          26825      2971/bin/tidb-serve 

6、配置TIDB数据库

<1>创建用户并授权

[root@server1 ~]# mysql -h 127.0.0.1 -P 4000 -uroot
MySQL [(none)]> CREATE USER zabbix@localhost identified by 'zabbix';
Query OK, 1 row affected (0.03 sec)

MySQL [(none)]> create database zabbix character set utf8 collate utf8_bin;  
Query OK, 0 rows affected (0.09 sec)

MySQL [(none)]> GRANT all ON zabbix.* TO zabbix@localhost;
Query OK, 0 rows affected (0.04 sec)

MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.01 sec)

<2>将数据导入zabbix数据库

<1>先找到数据库要导入的位置:

[root@server1 ~]# rpm -ql zabbix-server-mysql-4.0.5

<2>导入数据库

[root@server1 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server1 zabbix-server-mysql-4.0.5]# zcat create.sql.gz | mysql -h 127.0.0.1 -P4000 -uzabbix -p zabbix
Enter password:     #这里的密码是zabbix用户的密码,输入之后,等待,不要ctrl+c
ERROR 1105 (HY000) at line 7155: statement count 5001 exceeds the transaction limitation, autocommit = true
[root@server1 zabbix-server-mysql-4.0.5]# mysql -h 127.0.0.1 -P 4000 -uroot   #登陆数据库查看,可以看到zabbix数据库中共有144张表
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;

<3>修改zabbix配置文件

<1>先找到zabbix-server配置文件所在的位置

[root@server1 ~]# rpm -ql zabbix-server-mysql-4.0.5

<2>编辑zabbix-server的配置文件(编辑 /etc/zabbix/zabbix_server.conf)

[root@server1 ~]# vim /etc/zabbix/zabbix_server.conf
DBName=zabbix

DBUser=zabbix

DBPassword=zabbix   #修改的地方

DBPort=4000   #修改的地方

<3>启动zabbix-server服务

[root@server1 ~]# systemctl start zabbix-server

如果该台主机之前安装并配置过zabbix,那么在web端访问172.25.83.1/zabbix会直接登录到之前的数据库,这时可以删除zabbix在web端生成的.php配置文件,或者改掉该文件的后缀名,重新访问网页即可。访问成功之后,会在该目录下重新生成新的zabbix.conf.php文件。

[root@server1 web]# pwd
/etc/zabbix/web
[root@server1 web]# ls
maintenance.inc.php  zabbix.conf.php
[root@server1 web]# mv zabbix.conf.php zabbix.conf.php.bak
[root@server1 web]# ls
maintenance.inc.php  zabbix.conf.php.bak

6、访问http://172.25.83.1/zabbix,进行监控项配置即可

点击Next step

点击Next step

在Database  port中填入“4000“,在Password处填入“zabbix”

点击Next step

输入Name:Zabbix server(这个名字可以随便起的)

点击Next step

点击Next step

点击Finish,完成安装

输入Username:Admin和Password:zabbix。进入登陆界面(注意Admin的首字母需要大写)

注意:初始帐号和密码。

帐号:Admin

密码:zabbix


点击小人这里,我们可以修改语言

将Language该为Chinese(zh_CN),然后点击update,即修改成功

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/89406834