1.TiDB简介
什么是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优势
纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
支持SQL,对外暴露MySQL的网络协议,并兼容大多数MySQL的语法,在大多数场景下可以直接替换MySQL
默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
支持ACID事务,对于一些有强一致需求的场景友好
具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景
TiDB架构
2.实验环境
redhat7.6
节点 安装服务
node1:172.25.33.1 zabbix-server mariadb PD1,TiDB
node2:172.25.33.2 tikv集群
node3:172.25.33.3 tikv集群
3.node1环境搭建
zabbix下载(建议参考官方文档www.zabbix.com)
Install Zabbix repository
[root@node1 ~]rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
Install Zabbix server and agent
[root@node1 ~]yum install zabbix-server-mysql zabbix-agent
安装 Zabbix frontend
aliyun.com镜像站
安装
centos-release-scl-2-3.el7.centos.noarch.rpm
centos-release-scl-rh-2-3.el7.centos.noarch.rpm
编辑配置文件 /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1
...
Install Zabbix frontend packages
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
4.安装mysql数据库并初始化数据库
安装mysql数据库
aliyun.com镜像站
安装mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
解压
tar zxf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar
安装
yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm
设置mysql开机自启动并立即启动
systemctl enable --now mysqld
初始化数据库
查看mysl初始密码
cat /var/log/mysql.log | grep A
mysql_secure_installation
输入初始密码
输入新密码
创建初始数据库
在数据库主机上运行以下代码。
mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=password
为Zabbix前端配置PHP
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl enable --now zabbix-server zabbix-agent httpd rh-php72-php-fpm
配置Zabbix前端
连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix
根据Zabbix文件里步骤操作: Installing frontend
5.node1安装配置TiDB
wget https://download.pingcap.org/tidb-latest-linux-amd64.tar.gz
node1开启PD并后台运行
[root@node1 ~]tar zxf tidb-latest-linux-amd64.tar.gz
[root@node1 ~]cd tidb-v5.0.1-linux-amd64/
开启PD并后台运行
[root@node1 tidb-v5.0.1-linux-amd64]./bin/pd-server --name=pd1 --data-dir=pd1 --client-urls="http://172.25.33.1:2379" --peer-urls="http://172.25.33.1:2380" --initial-cluster="pd1=http://172.25.33.1:2380" --log-file=pd.log &
查看2379和2380端口是否开放
[root@node1 tidb-v5.0.1-linux-amd64]netstat -antlp | grep :2379
[root@node1 tidb-v5.0.1-linux-amd64]netstat -antlp | grep :2380
6.解压并开启tikv(node2,node3)
[root@node2 ~]tar zxf tidb-latest-linux-amd64.tar.gz
[root@node2 ~]cd tidb-v5.0.1-linux-amd64/
[root@node2 tidb-v5.0.1-linux-amd64]./bin/tikv-server --pd="172.25.33.1:2379" --addr="172.25.33.2:20160" --data-dir=tikv1 --log-file=tikv.log &
[root@node2 tidb-v5.0.1-linux-amd64]netstat -antlp | grep tikv
[root@node3 ~]tar zxf tidb-latest-linux-amd64.tar.gz
[root@node3 ~]cd tidb-v5.0.1-linux-amd64/
[root@node3 tidb-v5.0.1-linux-amd64]./bin/tikv-server --pd="172.25.33.1:2379" --addr="172.25.33.3:20160" --data-dir=tikv1 --log-file=tikv.log &
[root@node3 tidb-v5.0.1-linux-amd64]netstat -antlp | grep tikv
[root@node1 tidb-v5.0.1-linux-amd64]./bin/tidb-server &
[root@node1 tidb-v5.0.1-linux-amd64] netstat -antlp | grep tidb
[root@node1 tidb-v5.0.1-linux-amd64] netstat -antlp | grep 4000
8.数据导入(创建TIDB)
数据库连接tidb
[root@node2 tidb-v5.0.1-linux-amd64]mysql -h 172.25.33.1 -P 4000 -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> CREATE USER 'zabbix'@'%' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'zabbix'@'%';
给数据库导入数据
将之前mysql导入的zabbix库的数据倒出,此步要确定之前已经创建了zabbix数据库。
[root@node2 tidb-v5.0.1-linux-amd64]mysqldump -uroot -p zabbix >/mnt/zabbix.sql
将备份的数据库导入tidb的数据库中
[root@node1 mnt]# mysql -h 172.25.33.1 -P 4000 -uroot
MySQL [(none)]> use zabbix;
Database changed
MySQL [zabbix]> set tidb_batch_insert=1;
MySQL [zabbix]> source /mnt/zabbix.sql;
9.node1修改配置文件
[root@node1 ~]vim /etc/zabbix/zabbix_server.conf
DBPort=4000
[root@node1 ~] cd /etc/zabbix/web/
[root@node1 ~]vim zabbix.conf.php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '172.25.33.1';
$DB['PORT'] = '4000';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'password';
重启服务
[root@node1 ~]systemctl restart zabbix-server
[root@node1 ~]systemctl restart zabbix-agent
8.浏览器访问进行测试