TIDB集群安装部署方案————————上篇

Wesley13
• 阅读 1136

1.    安装TIDB生成环境硬件要求

组件

CPU

内存

硬盘类型

网络

数量(最低要求)

TiDB

16核+

48 GB+

SAS

万兆网卡(2块最佳)

2

PD

8核+

16 GB+

SSD

万兆网卡(2块最佳)

3

TiKV

16核+

48 GB+

SSD

万兆网卡(2块最佳)

3

监控

8核+

16 GB+

SAS

千兆网卡

1

服务器总计

9

**注:
**

•生产环境中的 TiDB 和 PD **可以部署和运行在同服务器上,如对性能和可靠性有更高的要求,应尽可能分开部署。
**

**•生产环境强烈推荐使用更高的配置。
**

•TiKV 硬盘大小建议不要超过 800G **以防止硬盘损坏时,数据恢复耗时过长
**

  1. 安装TIDB的虚拟机硬件环境

处理器:I7系列CPU

内存16G

硬盘:SSD 100G

Vm虚拟机:8个VM虚拟机,每台虚拟配给1.5G内存,操作系统Centos7.4版本以上,请确保主机和虚拟机能联上外网

机器名

IP

操作系统

配置

用途

TiDB1

192.168.1.49

CentOS7.4 X64

4C+8G+60G+200G扩展

TiKV+TiSpark

TiDB2

192.168.1.50

CentOS7.4 X64

4C+8G+60G+200G扩展

TiKV+TiSpark

TiDB3

192.168.1.51

CentOS7.4 X64

4C+8G+60G+200G扩展

TiKV+TiSpark

TiDB4

192.168.1.52

CentOS7.4 X64

4C+8G+260G

Mysql5.7+测试工具

TiDB5

192.168.1.53

CentOS7.4 X64

4C+8G+60G

TiDB+PD

TiDB6

192.168.1.54

CentOS7.4 X64

4C+8G+60G

TiDB+PD

TiDB7

192.168.1.55

CentOS7.4 X64

4C+8G+60G

TiDB+PD

TiDB8

192.168.1.56

CentOS7.4 X64

4C+8G+60G

中控机ansible+monitor

*注:在TiDB1,TiDB2,TiDB3***都需要进行操作,后面有说到如何用虚拟机挂载EXT4
**

  1. 安装前的准备工作

在安装TIDB之前先做完好一些准备工作,包括安装环境,IP地址和主机名称等。

**注:****如果虚拟机是复制的,一定要将虚拟机的MAC地址重新生成一次,****不然会出现不
**

能联网的问题,在生成MAC****之前虚拟机系统先要关闭中,生成之后再启动。

给所有主机分配IP地址

执行 vi /etc/sysconfig/network-scripts/ifcfg-ens33按如下图设置网络环境

其中GATEWAY设的是网关,IPADDR是指定IP地址,必须与现有局域网在同一个网段下

例如:192.168.1.49 NETMASK表示子网掩码

给所有主机重新命名

执行vim /etc/sysconfig/network

添加如下两行

NETWORKING=yes #使用网络

HOSTNAME= tidb01 #主机名称,主机名称用唯一编号表示

执行vim /etc/hosts

添加如下一行:

192.168.1.49 tidb01

设好之后重新启动网络

执行service network restart

关闭firewalld防火墙

systemctl stop firewalld.service #停止firewall防火墙服务

systemctl disable firewalld.service 关闭防火墙

Centos最小安装之后需要安装的Yum

安装额外yum源

yum install epel-release

更新Centos系统

yum update可以将Centos更新至最新版

查看Centos版本号信息

cat /etc/redhat-release

查看linux内核版本

cat /proc/version

查看系统是不是64位

getconf LONG_BIT

给虚拟机添加新的虚拟磁盘空间并转换为EXT4格式

TiDB1,TiDB2,TiDB3都需要进行操作挂载EXT4数据盘,操作如下:

在VM左侧窗口中对着虚拟主机单击右键设置->硬盘->添加->硬盘-SCSI->创建新虚拟磁盘

然后打开终端:看一下磁盘,sudo fdisk -l

此处的/dev/sdb就是我们新加的磁盘,我们要将其加进来

给新加的硬盘分区,执行如下命令:

sudo fdisk /dev/sdb

键入m,可看到帮助信息

再键入n表示新分区

再键入p选择基本分区

再键入1表示建一个分区

回车

回车,再回车

键入w ,再回车

格式化磁盘分区

用ext4格式对/dev/sdb进入格式化

mkfs.ext4 /dev/sdb

挂载分区

创建新的挂载点

mkdir /home

将新磁盘分区挂载到/ home目录下

mount -t ext4 /dev/sdb /home

查看挂载

df –hT

可以看到新加的硬盘:/dev/sdb 并且格式是ext4

设置开机自动挂载数据盘ext4参数

TiDB1,TiDB2,TiDB3都需要进行操作挂载EXT4数据盘,操作如下:

修改文件

vi /etc/fstab

加入一行:

/dev/sdb /home ext4 defaults,nodelalloc,noatime 0 0

卸载目录并重新挂载

umount /home

mount -a

确认是否生效,如果生效了会多出nodelalloc

*TiDB1,TiDB2,TiDB3***都需要进行操作,**操作如下:

mount -t ext4

添加用户

所有虚拟主机都需要进操作:

添加用户

所有虚拟主机都需要进操作:

useradd tidb

passwd tidb

设置免密配置文件

所有虚拟主机都需要进操作:

visudo

将tidb ALL=(ALL) NOPASSWD: ALL加入到最后一行并保存

登录192.168.1.56虚拟机配置ssh互信免密码登录

执行如下合令:

su - tidb

ssh-keygen -t rsa 然后一路回车

这时当前用户home目录下面会生成一对密钥,id_rsa 为私钥,id_rsa.pub 为公钥

通过 ssh-copy-id 进行传输公钥

执行下面命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.49

然后输入密码

其它虚拟主机一样操作:

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.50

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.51

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.52

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.53

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.54

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.55

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.56                  **#**中控机也要这样做

验证 ssh 互信及 sudo 免密码

以 tidb 用户登录到中控机,ssh 登录目标机器 IP,不需要输入密码并登录成功,表示 ssh 互信配置成功。

执行如下命令:

ssh 192.168.1.49

ssh 192.168.1.50

ssh 192.168.1.51

ssh 192.168.1.52

ssh 192.168.1.53

ssh 192.168.1.54

ssh 192.168.1.55

接着登录目标主机 ssh root@192.168.1.49,等主机无须密码即可登录成功。

以 tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。

关闭SELinux

所有虚拟主机都需要进操作:

vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

设置后需要重启才能生效

手工安装 NTP 服务

49-55 IP****虚拟主机都需要进行下面的操作:

 执行如下命令:

ssh 192.168.1.49

su - tidb

sudo yum install ntp ntpdate

sudo vi /etc/ntp.conf

将NTP的IP设成中控机的IP地址,

server 192.168.1.56 iburst

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

iburst : 当server不可达时,以默认发包速率的8倍向服务器发包。请修改为主控机的实际IP

 

sudo systemctl start ntpd.service

执行以下命令输出 running 表示 NTP 服务正在运行:

sudo systemctl status ntpd.service

 

执行 ntpstat 命令,输出 synchronised to NTP server(正在与 NTP server 同步)表示在正常同步:

exit

exit

ssh 192.168.1.50 其它步骤和上面的一样

手工安装192.168.1.56中控机的 NTP 服务

su - tidb

sudo yum install ntp ntpdate

sudo vi /etc/ntp.conf

说明:需要增加一个restrict,可以使用当前服务器的IP段,192.168.1.1是自已的网关IP段注意填写自己的IP段。

ntp中本机使用server 127.127.1.0

 

最后启动NTP服务:

sudo systemctl start ntpd.service

在192.168.1.53虚拟机安装MYSQL客户端工具

下载:mysql57-community-release-el7-11.noarch.rpm

安装:rpm -Uvh mysql57-community-release-el7-9.noarch.rpm

yum安装server:

yum install mysql-community-server

yum安装client:

yum install mysql-community-client

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这