在线安装TIDB集群
在线安装TiDB集群
- 服务器准备
说明:TiDB8需要能够连接外网,以便下载各类安装包
TiDB4非必须,但最好是有一台,因为后续测试Mysql数据同步或者进行性能比较时,都要用到
TiKV最好是采用Ext4文件格式,所以使用挂载盘的方式增加(如果没有数据盘,那么不配置也能安装成功)
机器名 | IP | 操作系统 | 配置 | 用途 |
TiDB1 | ***.62 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB2 | ***.63 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB3 | ***.64 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB4 | ***.65 | CentOS7.4 X64 | 4C+8G+260G | Mysql5.7+测试工具 |
TiDB5 | ***.66 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB6 | ***.67 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB7 | ***.68 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB8 | ***.69 | CentOS7.4 X64 | 4C+8G+60G | 中控机ansible+monitor |
- TiKV数据盘挂载
在TiDB1,TiDB2,TiDB3都需要进行操作。
执行 vi /etc/fstab
添加挂载参数
/dev/mapper/centos-home /home ext4 defaults,nodelalloc,noatime 0 0
参数解释:
noatime - 不更新文件系统上 inode 访问记录,可以提升性能
nodelalloc情况下每5秒文件系统会提交日志触发回写;delalloc情况下,系统会在约每30秒左右触发一次回写。对于频繁读写,可以加快写入速度。
最后一个0表示是否使用fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。
卸载目录并重新挂载
# umount /home # mount -a
确认是否生效,如果生效了会多出nodelalloc
# mount -t ext4 /dev/mapper/centos-home on /home type ext4 (rw,noatime,seclabel,nodelalloc,data=ordered)
- 在中控机上添加tidb用户并设置免密码
添加用户
# useradd tidb # passwd tidb
如果密码设置过短,则会提示密码少于8位,但只是警告继续即可。若设置不成功,可修改vi /etc/login.defs中的PASS_MIN_LEN参数
设置免密
# visudo
将tidb ALL=(ALL) NOPASSWD: ALL加入到最后一行并保存
- 在中控机上配置 用户、Ansible、免密
使用tidb用户登录中控机
下载TiDb-Ansible
$ cd /home/tidb $ sudo yum -y install git $ git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git
版本可以到github上看一下,是否有更新。如果使用主线版本执行 git clone https://github.com/pingcap/tidb-ansible.git
安装ansible
$ sudo yum -y install epel-release $ sudo yum -y install python-pip curl$ sudo yum -y install sshpass $ cd tidb-ansible $ sudo pip install -r ./requirements.txt $ ansible --version ansible 2.5.0
配置其它服务器的免密
$ ssh-keygen -t rsa
生成密钥,连续回车即可
配置设置免密的目标服务器,注意将***换成真实的IP。
$ vi hosts.ini[servers] ***.***.***.62 ***.***.***.63 ***.***.***.64 ***.***.***.65 ***.***.***.66 ***.***.***.67 ***.***.***.68***.***.***.69
[all:vars] username = tidb ntp_server = pool.ntp.org
使用ansible执行免密
$ ansible-playbook -i hosts.ini create_users.yml -k
检验
$ ssh ***.***.***.68 $ sudo -su root
如果在中控机上能够无密码登录,并且登录后可以无密码切换到root。即说明免密设置成功
特别注意中控机本机也要免密,后续将组件安装到中控机时就不用再进行特别的设置了
- 关闭所有服务器上的防火墙
使用tidb用户登录,关闭防火墙,并取消开机启动
$ cd /home/tidb/tidb-ansible $ ansible -i hosts.ini all -m shell -a "firewall-cmd --state" -b $ sudo systemctl stop firewalld.service $ sudo systemctl disable firewalld.service $ ansible -i hosts.ini all -m shell -a "systemctl stop firewalld.service" -b $ ansible -i hosts.ini all -m shell -a "systemctl disable firewalld.service" -b
- 设置NTP
使用tidb用户登录中控机,安装ntp服务
$ cd /home/tidb/tidb-ansible$ ansible -i hosts.ini all -m shell -a "yum install -y ntp" -b
配置中控机做为时间服务器
$ sudo vi /etc/ntp.conf文件做如下修改 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap restrict ***.**.*.0 mask 255.255.255.0# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 127.127.1.0 server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst
说明:需要增加一个restrict,可以使用当前服务器的IP段,上面使用***是为了保密。注意填写自己的IP段。
ntp中本机使用server 127.127.1.0
配置所有从机的ntp配置
$ sudo vi /etc/ntp.conf文件做如下修改 # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server ***.***.***.69 iburst server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst
iburst : 当server不可达时,以默认发包速率的8倍向服务器发包。***是为了保密,请修改为主控机的实际IP
启动ntp服务
使用tidb登录中控机
$ cd /home/tidb/tidb-ansible $ ansible -i hosts.ini all -m shell -a "systemctl disable chronyd.service" -b $ ansible -i hosts.ini all -m shell -a "systemctl enable ntpd.service" -b $ ansible -i hosts.ini all -m shell -a "systemctl start ntpd.service" -b
检验ntp服务
$ ansible -i hosts.ini all -m shell -a "ntpstat" -b $ ansible -i hosts.ini all -m shell -a "ntpq -p" -b
ntpstat可以查看服务器的ntp状态,ntpq可以查看各服务器当前使用的时间服务器
特别注意:服务器重启以后,去启动tidb时,可能会提示ntp同步不成功,确保ntp服务是开启的,等待几分钟就好了。
- 配置集群规划
本次每台服务器只配置一个TiKV,并且使用标准目录配置,如果需要一台服务器配置多KV或者调整数据目录,请参考官方文档
机器名 | IP | 操作系统 | 配置 | 用途 |
TiDB1 | ***.62 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB2 | ***.63 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB3 | ***.64 | CentOS7.4 X64 | 4C+8G+60G+200G扩展 | TiKV+TiSpark |
TiDB4 | ***.65 | CentOS7.4 X64 | 4C+8G+260G | Mysql5.7+测试工具 |
TiDB5 | ***.66 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB6 | ***.67 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB7 | ***.68 | CentOS7.4 X64 | 4C+8G+60G | TiDB+PD |
TiDB8 | ***.69 | CentOS7.4 X64 | 4C+8G+60G | 中控机ansible+monitor |
使用tidb登录中控机,进行规划配置
$ cd /home/tidb/tidb-ansible $ vi inventory.ini将服务器IP配置到各配置项下面 ## TiDB Cluster Part [tidb_servers] ***.***.**66 ***.***.**67 ***.***.**68[tikv_servers] ***.***.**62 ***.***.**63 ***.***.**64[pd_servers] ***.***.**66 ***.***.**67 ***.***.**68[spark_master] ***.***.**62[spark_slaves] ***.***.**63 ***.***.**64## Monitoring Part # prometheus and pushgateway servers [monitoring_servers] ***.***.**69[grafana_servers] ***.***.**69# node_exporter and blackbox_exporter servers [monitored_servers] ***.***.**62 ***.***.**63 ***.***.**64 ***.***.**65 ***.***.**66 ***.***.**67 ***.***.**68 ***.***.**69
请将***替换为实际的IP
- 安装TiDB集群
安装前检验
执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。
$ ansible -i inventory.ini all -m shell -a 'whoami'
执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。
$ ansible -i inventory.ini all -m shell -a 'whoami' -b
下载安装包
$ ansible-playbook local_prepare.yml
执行后会自动下载最新的TiDB包到downloads目录中
修改系统环境,修改内核参数
$ ansible-playbook bootstrap.yml
修改后会做一些检测,也会提示一些错误,例如CPU核数不够,如果不是关键问题,可以直接继续。
根据inventory.ini部署集群
$ ansible-playbook deploy.yml
部署需要的时间比较长,可以看看日志输出,当出现以下字样时,说明部署成功。如果failed不是0,那么可以重新执行部署,如果多次部署还不成功,则需要看一下,错误原因了。
***.***.**.62 : ok=59 changed=28 unreachable=0 failed=0 ***.***.**.63 : ok=60 changed=29 unreachable=0 failed=0 ***.***.**.64 : ok=60 changed=29 unreachable=0 failed=0 ***.***.**.65 : ok=32 changed=15 unreachable=0 failed=0 ***.***.**.66 : ok=66 changed=28 unreachable=0 failed=0 ***.***.**.67 : ok=66 changed=28 unreachable=0 failed=0 ***.***.**.68 : ok=66 changed=28 unreachable=0 failed=0 ***.***.**.69 : ok=85 changed=48 unreachable=0 failed=0 localhost : ok=1 changed=0 unreachable=0 failed=0 Congrats! All goes well. :-)
为spark配置JDK
如果使用了TiSpark,那么需要为对应的服务器配置JDK。首先将JDK安装包放到中控机上,然后再传给TiSpark所在的服务器。
如果可以直接传过去,也可以不使用此种方式
$ cd /home/tidb $ mkdir software
先将jdk文件传送到此目录中,jdk-8u91-linux-x64.tar.gz
在TiKV的服务器上创建/opt/jdk目录。然后回到中控机使用scp进行传输
scp jdk-8u91-linux-x64.tar.gz root@***.**.**.62:/opt/jdk/ scp jdk-8u91-linux-x64.tar.gz root@***.**.**.63:/opt/jdk/ scp jdk-8u91-linux-x64.tar.gz root@***.**.**.64:/opt/jdk/
请将***换成实际IP
使用root切换到62、63、64三台服务器上,进行jdk解压,并进行环境变量配置。以62为例
$ ssh 172.18.100.62 $ su - # cd /opt/jdk/ # tar zxvf jdk-8u91-linux-x64.tar.gz # vi /etc/profile在文件的最后位置增加JDK配置。doneexport JAVA_HOME=/opt/jdk/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarunset i unset -f pathmunge
验证JDK安装是否成功
# source /etc/profile# java -version# su - tidb# java -version
- 启动和停止TiDB集群
使用tidb登录,启动集群
$ cd /home/tidb/tidb-ansible $ ansible-playbook start.yml
出现以下输出,代表启动成功
***.***.**.62 : ok=18 changed=3 unreachable=0 failed=0 ***.***.**.63 : ok=18 changed=3 unreachable=0 failed=0 ***.***.**.64 : ok=18 changed=3 unreachable=0 failed=0 ***.***.**.65 : ok=14 changed=2 unreachable=0 failed=0 ***.***.**.66 : ok=18 changed=4 unreachable=0 failed=0 ***.***.**.67 : ok=18 changed=4 unreachable=0 failed=0 ***.***.**.68 : ok=18 changed=4 unreachable=0 failed=0 ***.***.**.69 : ok=31 changed=10 unreachable=0 failed=0 localhost : ok=1 changed=0 unreachable=0 failed=0 Congrats! All goes well. :-)
使用tidb登录,停止集群
$ cd /home/tidb/tidb-ansible $ ansible-playbook stop.yml
出现以下输出,代表停止成功
***.***.**.62 : ok=18 changed=2 unreachable=0 failed=0 ***.***.**.63 : ok=18 changed=2 unreachable=0 failed=0 ***.***.**.64 : ok=18 changed=2 unreachable=0 failed=0 ***.***.**.65 : ok=13 changed=1 unreachable=0 failed=0 ***.***.**.66 : ok=17 changed=3 unreachable=0 failed=0 ***.***.**.67 : ok=17 changed=3 unreachable=0 failed=0 ***.***.**.68 : ok=17 changed=3 unreachable=0 failed=0 ***.***.**.69 : ok=20 changed=4 unreachable=0 failed=0 localhost : ok=1 changed=0 unreachable=0 failed=0 Congrats! All goes well. :-)
- 检查集群状态
使用mysql客户端工具测试
mysql -u root -h ***.***.**.66 -P 4000
mysql -u root -h ***.***.**.67 -P 4000
mysql -u root -h ***.***.**.68 -P 4000
通过浏览器访问监控平台
地址:http://***.***.**.69:3000 默认帐号密码是:admin/admin
至此平台安装完成,TiSpark目前还没有测试,代测试后补充这部分内容。
- 安装mysql客户端
如果手头没有mysql服务器,那么就无法使用mysql命令,所以这里提供mysql客户端的安装方法
$ cd /home/tidb/ $ mkdir software $ cd software $ mkdir mysql $ sudo yum -y install wget $ wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm $ sudo yum install -y mysql57-community-release-el7-11.noarch.rpm $ sudo yum install -y mysql-community-client
安装成功后,安装目录就可以删除了。
- 使用tpch-mysql加载数据(可选)
下载tpch工具
$ cd /home/tidb $ git clone https://github.com/maobuji/tpch-mysql $ cd tpch-mysql/test-tools $ chmod 775 *.sh
配置tpch导入工具
$ vi config.properties
在文件中配置数据库地址、用户名等内容
生成待导入数据
$ sh dataMake.sh
创建库表并导入数据
$ sh dataImport.sh
导入数据库需要一定时间,需要耐心等待
如果设置的是并发导入,任务会进入后台,且结束不会提示。如果用ps查到类似的进程,则说明还在导入中
$ ps -ef|grep tpchtidb 22855 1 0 14:17 pts/1 00:00:00 mysql -h 172.34.34.66 -P 4000 -uroot --local-infile=1 -D tpch
如果希望知道进度,可以将config文件中的target_db_asynchronous 改为1,逐表进行导入。
生成查询sql
$ sh queryMake.sh $ cd queries
目录下会生成tpch的22个查询sql,可以用于测试执行
- 启动TiSpark
使用tidb用户登录TIDB1,启动master
$ cd /home/tidb/deploy/spark $ ./sbin/start-master.sh
启动成功后,可以访问http://TIDB1_IP:8080/ 进入管控台,后续加入Spark-Slave后也可以通过管控台查看Slave是否已加入集群
使用tidb用户登录TIDB2,TIDB3,启动Slave
$ cd /home/tidb/deploy/spark $ ./sbin/start-slave.sh spark://TIDB1_IP:7077
再次访问管控台,可以看到Slave已经加入了
配置信息
TiSpark需要配置PD信息
/home/tidb/deploy/spark/conf/spark-defaults.conf
由于我们在开始的规划文档中已经配置好了,所以只要看一下文件内容即可,不再需要配置了
spark.tispark.pd.addresses这个配置项目应该指向PD的IP列表,如果没有则手工配置 ***.***.**.66:2379,***.***.**.67:2379,***.***.**.68:2379
- 运行TiSpark测试
目前数据库中已经有了tpch数据库,我们对这个数据库进行查询。
$ cd /home/tidb/deploy/spark/bin $ sh spark-shell启动成功后会出现如下输出: Welcome to____ __/ __/__ ___ _____/ /___\ \/ _ \/ _ `/ __/ '_//___/ .__/\_,_/_/ /_/\_\ version 2.1.1/_/Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_91) Type in expressions to have them evaluated. Type :help for more information.
执行查询
scala> import org.apache.spark.sql.TiContext import org.apache.spark.sql.TiContextscala> val ti = new TiContext(spark) ti: org.apache.spark.sql.TiContext = org.apache.spark.sql.TiContext@3d6c7152scala> ti.tidbMapDatabase("tpch")scala> spark.sql("select count(*) from lineitem").show +--------+ |count(1)| +--------+ | 6001215| +--------+
除了使用spark-shell以外,也可以使用tispark-sql,即可以直接执行sql语句,不过该工具没有被默认安装,需要自己下载
使用tidb保持登录在TiSpark的master上
$ cd /home/tidb/deploy/spark/bin$ sudo yum install -y wget $ wget https://raw.githubusercontent.com/pingcap/tispark/master/core/scripts/tispark-sql $ chmod 775 tispark-sql $ sh tispark-sql
等一会则进入输入模式
tispark-sql> use tpch; tispark-sql> show databases;
以下内查询结果:
.......
18/05/17 10:14:32 INFO TaskSchedulerImpl: Removed TaskSet 1.0, whose tasks have all completed, from pool
18/05/17 10:14:32 INFO DAGScheduler: ResultStage 1 (processCmd at CliDriver.java:376) finished in 0.101 s
18/05/17 10:14:32 INFO DAGScheduler: Job 1 finished: processCmd at CliDriver.java:376, took 0.147235 s
test
tpch
mysql
default
Time taken: 0.206 seconds, Fetched 4 row(s)
18/05/17 10:14:32 INFO CliDriver: Time taken: 0.206 seconds, Fetched 4 row(s)
查询输出的日志内容非常多,结果也混在里边,目前还太清楚,如何配置参数,不输出查询过程。
自此, TiSpark测试完成
转载于:https://www.cnblogs.com/maobuji/p/9040766.html
在线安装TIDB集群相关推荐
- 在开发环境使用 TiUP安装TiDB集群
TiUP 是 TiDB 4.0 版本引入的集群运维工具,TiUP cluster 是 TiUP 提供的使用 Golang 编写的集群管理组件,通过 TiUP cluster 组件就可以进行日常的运维工 ...
- 在线安装k3s集群-外置mysql数据库
我这里使用的系统是centos7.6 一.首先准备一个mysql数据库 推荐使用mysql5.7版本,mysql5.7以下版本安装会有问题 二.准备工作 关闭swap # 临时关闭swap分区,当前会 ...
- 在线安装K3S集群-外部数据库
我这里用的系统环境是 centos7.6 使用的集群配置为: 1核2G 一.环境准备 如下 非必须 的也可以不操作 确保是一台干净的 CentOS7 服务器. 开放端口(需要在安全组中放开一些必须的端 ...
- 基于rancher在线安装k8s集群
canal作用 运维脉络 使用rancher搭建k8s 部署nginx:
- 从零部署TiDB集群
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | yangyidba 来源 | 公众号「yang ...
- Centos7配置TiDB集群
一:各模块属性 模块名称 状态 建议实例数 功能 负载均衡组件 TiDB 无状态 2 接收SQL请求,处理SQL相关逻辑,并通过PB找到存储数据的TiKV地址 LVS.HAProxy.F5 PB 集群 ...
- Centos7 安装Docker(v2021 version 20.10.5) 并通过docker-compose运行TiDB集群
Centos7 安装Docker(v2021 version 20.10.5) 卸载docker旧版 注意:新系统不用卸载 yum remove docker \docker-client \dock ...
- tidb集群安装部署
tidb集群安装部署 部署架构图 一.安装tiup curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/inst ...
- 在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...
作者:陈麒 原文来源: https://tidb.net/blog/0cacc3df TiDB 集群部署 在单机上模拟部署生产环境集群 适用场景:希望用单台 Linux 服务器,体验 TiDB 最小的 ...
最新文章
- vue监听h5页面返回健(微信和支付宝浏览器亲测):
- python while循环语句-Python
- Scrum Meeting 报告
- c++ List(双向链表)
- php 获取上个月、下个月、本月的日期 当前月份的前后一个月
- airflow连接mysql错误_安装Airflow遇到的问题以及解决过程
- fastadmin model关联模型 关联查询问题
- 吉隆坡强制所有餐馆明年必须设有无线上网服务
- 《OpenGL ES 3.x游戏开发(上卷)》一2.4 文件I/O
- 树中两节点的最低公共祖先
- springboot 设置全局字符编码,解决乱码问题
- xp如何删除计算机管理员用户账户,“WINXP系统除Administrator以外只有一个管理员账户时,此帐户默认无法删除,如何删除”的解决方案...
- '什么意思 怎么输入
- 大觉山漂流,男人的欢笑女人的尖叫
- python笔记更新(网络编程)
- 全国2013年10月考试《行政组织理论》试题和答案
- jquery实现输入框实时统计字数和设置字数限制功能
- 【车载开发系列】UDS诊断---DTC故障码基础回顾
- C语言之for循环与while循环
- 优先队列(priority_queue)
热门文章
- Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
- 软文推荐:常用 Java 静态代码分析工具的分析与比较
- mapPartition方法与map方法的区别(转载)
- ubuntu系统下面PhantomJS not found on PATH
- 所谓的inference场景与深度学习终端加速器以及边缘计算和雾计算
- 关于AutoML的一些笔记
- sublime无法输入中文(转)
- 将存储过程的结果插入表里
- cytoscape使用方法_7种方法 ,订制你的专属venn图!-代谢组学/蛋白组学研究
- es6中新增对象的特性和方法