為分散式監控系統Zabbix配置TiDB資料庫
一、認識 TiDB
1. TiDB 簡介
TiDB 是 PingCAP 公司基於 Google Spanner / F1 論文實現的開源分散式 NewSQL 資料庫。
TiDB 具備如下 NewSQL 核心特性:
SQL支援 (TiDB 是 MySQL 相容的)
水平線性彈性擴充套件
分散式事務
跨資料中心資料強一致性保證
故障自恢復的高可用
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. 核心特性
水平擴充套件
無限水平擴充套件是 TiDB 的一大特點,這裡說的水平擴充套件包括兩方面:計算能力和儲存能力。TiDB Server 負責處理 SQL 請求,隨著業務的增長,可以簡單的新增 TiDB Server 節點,提高整體的處理能力,提供更高的吞吐。TiKV 負責儲存資料,隨著資料量的增長,可以部署更多的 TiKV Server 節點解決資料 Scale 的問題。PD 會在 TiKV 節點之間以 Region 為單位做排程,將部分資料遷移到新加的節點上。所以在業務的早期,可以只部署少量的服務例項(推薦至少部署 3 個 TiKV, 3 個 PD,2 個 TiDB),隨著業務量的增長,按照需求新增 TiKV 或者 TiDB 例項。
高可用
高可用是 TiDB 的另一大特點,TiDB/TiKV/PD 這三個元件都能容忍部分例項失效,不影響整個叢集的可用性。下面分別說明這三個元件的可用性、單個例項失效後的後果以及如何恢復。
TiDB
TiDB 是無狀態的,推薦至少部署兩個例項,前端通過負載均衡元件對外提供服務。當單個例項失效時,會影響正在這個例項上進行的 Session,從應用的角度看,會出現單次請求失敗的情況,重新連線後即可繼續獲得服務。單個例項失效後,可以重啟這個例項或者部署一個新的例項。
PD
PD 是一個叢集,通過 Raft 協議保持資料的一致性,單個例項失效時,如果這個例項不是 Raft 的 leader,那麼服務完全不受影響;如果這個例項是 Raft 的 leader,會重新選出新的 Raft leader,自動恢復服務。PD 在選舉的過程中無法對外提供服務,這個時間大約是3秒鐘。推薦至少部署三個 PD 例項,單個例項失效後,重啟這個例項或者新增新的例項。
TiKV
TiKV 是一個叢集,通過 Raft 協議保持資料的一致性(副本數量可配置,預設儲存三副本),並通過 PD 做負載均衡排程。單個節點失效時,會影響這個節點上儲存的所有 Region。對於 Region 中的 Leader 結點,會中斷服務,等待重新選舉;對於 Region 中的 Follower 節點,不會影響服務。當某個 TiKV 節點失效,並且在一段時間內(預設 10 分鐘)無法恢復,PD 會將其上的資料遷移到其他的 TiKV 節點上。
二、為zabbix配置TiDB資料庫
本文配置測試環境為rhel7.2 x86_64bit,且已經安裝zabbix-server並且配置過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)是否關閉以及各服務是否正常啟動
[[email protected] 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)
記得往資料庫中匯入資料
[[email protected] ~]# cd /usr/share/doc/zabbix-server-mysql-3.4.2/
[[email protected] zabbix-server-mysql-3.4.2]# tar -zxvf create.sql.gz
[[email protected] 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)配置
[[email protected] web]# pwd
/etc/zabbix/web
[[email protected] web]# vim zabbix.conf.php
。。。
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.0.41';####
$DB['PORT'] = '4000';####
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'lockey';
$DB['PASSWORD'] = 'lockey23';
。。。
如果上邊的配置沒有修改則會出現以下錯誤:
Database error Error connecting to database: Can't connect to local MySQL server through socket
上邊步驟如果都OK將可以正常登入(初始使用者名稱密碼Admin/zabbix)
登入成功首頁如下展示:
相關推薦
為分散式監控系統Zabbix配置TiDB資料庫
一、認識 TiDB 1. TiDB 簡介 TiDB 是 PingCAP 公司基於 Google Spanner / F1 論文實現的開源分散式 NewSQL 資料庫。 TiDB 具備如下 NewSQL 核心特性: SQL支援 (TiDB 是 MySQ
分散式監控系統Zabbix--使用Grafana進行圖形展示
Grafana預設沒有zabbix作為資料來源,需要手動給zabbix安裝一個外掛,然後再新增進Grafana即可,非常簡單。下面就介紹下Grafana的使用: Grafana的官網:http://docs.grafana.org/installation/rpm/ 1)Centos下的安裝
開發人員學Linux(13):CentOS7安裝配置IT設備監控系統Zabbix
zabbix linux centos cacti nagios 1.前言在前一篇講述了如何安裝Memcached和Redis,在這一篇主要講述如何安裝企業級IT設備監控系統Zabbix。本人曾在某大型集團公司信息化部門工作,公司在多個城市以及一個城市的多個區有辦公區,在那裏不僅會開發軟件
zabbix監控系統的配置
一、zabbix介紹 zabbix是一個基於WEB介面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。 zabbix能監視各種網路引數,保證伺服器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 zabbix由2部分構成,zabbix server與可選元件zabb
Lepus天兔資料庫監控系統安裝配置
[[email protected] ~]# cd /opt/[[email protected] opt]# wget https://www.apachefriends.org/xampp-files/5.6.36/xampp-linux-x64-5.6.36-0-installer.
Grafana + Zabbix --- 部署分散式監控系統
閱讀目錄: 序章: Zabbix的一個很優秀的分散式監控伺服器, 它有兩部分組成: 1. “zabbix-server”用來收集並且在web端展示資料 2. “zabbix-agent”用來採集資料,傳送給server 在安裝Zabbix時,用了3臺虛擬機器來測試監控的
zabbix分散式監控系統的搭建要注意的事項
前言 關於zabbix的概念及zabbix服務的安裝,在這裡就不細講了。 由於在zabbix的搭建中,我們經常會遇到一些細節上的問題,導致出現錯誤。 所以下面總結的是搭建zabbix監控時的注意事項,實行及可以降低出錯機率。 zabbix
Zabbix 分散式監控系統平臺(新增被監控的linux主機) Zabbix 4.2版本
Zabbix 分散式監控系統平臺(新增被監控主機) 伺服器端:192.168.0.156 (linux系統) 被監控主機:1
分散式監控系統之Zabbix基礎
1、為什麼要使用監控系統? 我們知道一個系統不管怎麼講它都會出故障,我們為了保證線上業務的最大化的可用性,通常我們要給關鍵業務做高可用;做高可用的目的是為了讓故障發生時,能夠有一個備用的解決方案,將故障轉移,從而實現服務的高可用性;那麼問題來了,我們怎麼知道系統發生了故障或者將要發生故障呢?怎麼去把將
分散式監控系統之Zabbix基礎使用
前文我們瞭解了分散式監控系統zabbix的相關元件的作用和zabbix的部署,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13997582.html;今天我們來了解下zabbix的基礎使用; 在開始使用zabbix之前,我們先來了解下zabbix的一些術語
分散式監控系統之Zabbix巨集、模板和自定義item
前文我們聊了下zabbix的基礎使用,包括主機的新增、監控項、觸發器、action以及告警通知的配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14007342.html;今天我們來了解下zabbix的巨集、模板和自定義監控項的相關話題; 1、什麼是巨集?
分散式監控系統之Zabbix主動、被動及web監控
前文我們瞭解了zabbix的網路發現功能,以及結合action實現自動發現主機並將主機新增到zabbix hosts中,連結指定模板進行監控;回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14020847.html;今天我們來了解下zabbix的主動監控、被動監控以
分散式監控系統之Zabbix 使用SNMP、JMX通道採集資料
前文我們瞭解了zabbix的被動、主動以及web監控相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14024212.html;今天我們來了解下zabbix使用SNMP和JMX通道採集資料的相關話題; 1、SNMP協議介紹 SNMP是英文
分散式監控系統之Zabbix proxy
前文我們瞭解了zabbix 使用snmp和jmx通道採集資料的相關使用配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14029864.html;今天我們來說zabbix proxy; 1、zabbix proxy是什麼?為什麼要使用zabbix proxy
分布式監控系統Zabbix-3.0.3-完整安裝記錄 -添加進程與端口監控
進程 net default 監聽 bsp 觸發 lis style reg 對於進程和端口的監控,可以使用zabbix自帶的key進行監控,只需要在server端維護就可以了,相比於nagios使用插件去監控的方式更為簡單。下面簡單介紹配置:1)監控端口zabbix監
分布式監控系統Zabbix-3.0.3-添加windows監控主機
start ack roc 分布式 con host 系統 觸發 但是 大多數情況下,線上服務器都是linux系統,但是偶爾也會有些windows機器。下面簡單介紹下zabbix添加windows監控機的操作:1)下載windows的zabbix_agent下載地址:htt
分布式監控系統Zabbix-批量添加聚合圖形
即將 ids gpo username gpa env req append 替換 之前部署了Zabbix(3.4.4版本)監控環境,由於主機比較多,分的主機組也比較多,添加聚合圖形比較麻煩,故采用python腳本進行批量添加聚合圖形。腳本下載地址:https://pa
.Net架構篇:思考如何設計一款實用的分散式監控系統?
前言無論從最早期的unix作業系統,還是曾經大行其道的單體式應用,還是現在日益流行的微服務架構,始終都離不開監控的身影。如windows的工作管理員,linux的top命令,都可以看作是監控的面板。再聯絡起現實生活,無處不在的路網攝像頭,為交通機關監控交通人流提供了方便。系統規模越大,越離不開監控。缺少了監控
Linux系統安裝配置MongoDB資料庫
安裝教程 1、關閉SELINUX vi /etc/selinux/config 對配置檔案進行修改,然後按ESC鍵,:wq儲存退出 #SELINUX=enforcing #SELINUXTYPE=targeted SELINU
監控系統----zabbix新增監控
監控系統----zabbix新增監控 筆者總結的zabbix新增監控流程大致如下 1.配置模板 2.新建主機 3.新增特定監控項 4.新增trigger 5.新增action 一.配置模板 zabbix裡面就已經自帶了很多模板,筆者在工作中比較喜歡用到的是T