作者:陈麒

原文来源: https://tidb.net/blog/0cacc3df

TiDB 集群部署

在单机上模拟部署生产环境集群

  • 适用场景:希望用单台 Linux 服务器,体验 TiDB 最小的完整拓扑的集群,并模拟生产环境下的部署步骤。

1. 准备环境

准备一台部署主机,确保其软件满足需求:

  • Linux 类机器:这里采用的是华为 Kylin V10 SP1 操作系统, HUAWEI,Kunpeng 920 CPU(4Cores)

<!---->

  • Linux 操作系统开放外网访问,用于下载 TiDB 及相关软件安装包

1.1 最小规模的 TiDB 集群拓扑规划

| 实例 | 个数 | IP | 配置 | | ------- | -- | ----------------------------------------- | ------------------------------------------------------------ | | PD | 1 | 192.168.0.131 | 默认端口 | | TiKV | 3 | 192.168.0.131 192.168.0.131 192.168.0.131 | 避免端口和目录冲突 | | TiDB | 1 | 192.168.0.131 | 默认端口 | | TiFlash | 1 | 192.168.0.131 | 默认端口 (这里不配置 TiFlash实例) | | Monitor | 1 | 192.168.0.131 | Grafana:3003 (默认3000)、 Prometheus:9099(默认9090),默认端口Ambari已占用 |

  • 拓扑文件配置模板:( topo.yaml )

    global:user: "tidb"ssh_port: 22ssh_type: builtindeploy_dir: "/data/tidb/tidb-deploy"data_dir: "/data/tidb/tidb-data"os: linux
    ​
    # # Monitored variables are applied to all the machines.
    monitored:node_exporter_port: 9100blackbox_exporter_port: 9115deploy_dir: /data/tidb/tidb-deploy/monitor-9100data_dir: /data/tidb/tidb-data/monitor-9100log_dir: /data/tidb/tidb-deploy/monitor-9100/log
    ​
    server_configs:tidb:log.slow-threshold: 3000tikv:readpool.storage.use-unified-pool: falsereadpool.coprocessor.use-unified-pool: truepd:replication.enable-placement-rules: truereplication.location-labels: ["host"]
    ​
    pd_servers:- host: 192.168.0.131ssh_port: 22name: pd-192.168.0.131-2379client_port: 2379peer_port: 2380deploy_dir: /data/tidb/tidb-deploy/pd-2379data_dir: /data/tidb/tidb-data/pd-2379log_dir: /data/tidb/tidb-deploy/pd-2379/logarch: arm64os: linuxtidb_servers:- host: 192.168.0.131ssh_port: 22port: 4000status_port: 10080deploy_dir: /data/tidb/tidb-deploy/tidb-4000log_dir: /data/tidb/tidb-deploy/tidb-4000/logarch: arm64os: linux
    ​
    tikv_servers:- host: 192.168.0.131ssh_port: 22port: 20160status_port: 20180deploy_dir: /data/tidb/tidb-deploy/tikv-20160data_dir: /data/tidb/tidb-data/tikv-20160log_dir: /data/tidb/tidb-deploy/tikv-20160/logconfig:server.labels:host: logic-host-1arch: arm64os: linux
    - host: 192.168.0.131ssh_port: 22port: 20161status_port: 20181deploy_dir: /data/tidb/tidb-deploy/tikv-20161data_dir: /data/tidb/tidb-data/tikv-20161log_dir: /data/tidb/tidb-deploy/tikv-20161/logconfig:server.labels:host: logic-host-2arch: arm64os: linux
    - host: 192.168.0.131ssh_port: 22port: 20162status_port: 20182deploy_dir: /data/tidb/tidb-deploy/tikv-20162data_dir: /data/tidb/tidb-data/tikv-20162log_dir: /data/tidb/tidb-deploy/tikv-20162/logconfig:server.labels:host: logic-host-3arch: arm64os: linux
    ​
    monitoring_servers:- host: 192.168.0.131ssh_port: 22port: 9099deploy_dir: /data/tidb/tidb-deploy/prometheus-9099data_dir: /data/tidb/tidb-data/prometheus-9099log_dir: /data/tidb/tidb-deploy/prometheus-9099/logexternal_alertmanagers: []arch: arm64os: linux
    ​
    grafana_servers:- host: 192.168.0.131ssh_port: 22port: 3003deploy_dir: /data/tidb/tidb-deploy/grafana-3003arch: arm64os: linuxusername: adminpassword: adminanonymous_enable: falseroot_url: ""domain: ""
    

1.2 部署主机软件和环境要求配置

根据 TiDB 软硬件环境配置建议优化系统配置,可直接执行脚本进行初始化硬件环境:

$ cat initTiDB.sh
#!/bin/bash
​
close_swap() {echo "检测及关闭系统 swap"sudo echo "vm.swappiness = 0" >> /etc/sysctl.confswapoff -a && swapon -asysctl -pecho "系统 swap 已关闭"
}
​
close_firewall() {echo "关闭及检测目标部署机器的防火墙"sudo systemctl stop firewalld.servicesudo systemctl disable firewalld.servicesudo systemctl status firewalld.serviceecho "目标部署机器的防火墙已关闭"
}
​
ntp_service() {#read -p "Please input a ntp_server_ip:" ntp_server_ip#sudo systemctl stop ntpd.service#sudo ntpdate ${ntp_server_ip} sudo systemctl restart ntpd.servicesudo systemctl enable ntpd.serviceecho "检查ntp服务器的连通性"ntpq -p
}
​
csop() {echo "配置系统优化参数..."echo "查看当前操作系统的 tuned 策略"tuned-adm listecho "创建新的 tuned 策略"mkdir /etc/tuned/balanced-tidb-optimal/touch /etc/tuned/balanced-tidb-optimal/tuned.conf
​echo "[main]" > /etc/tuned/balanced-tidb-optimal/tuned.confecho "include=balanced" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[cpu]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "governor=performance" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[vm]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "transparent_hugepages=never" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "[disk]" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "elevator=noop" >> /etc/tuned/balanced-tidb-optimal/tuned.confecho "新的 tuned 策略创建完成. 查看请执行 cat /etc/tuned/balanced-tidb-optimal/tuned.conf"echo "应用新的 tuned 策略"tuned-adm profile balanced-tidb-optimal
​echo "验证透明大页的状态: 是否为never"cat /sys/kernel/mm/transparent_hugepage/enabled
​echo "验证数据目录所在磁盘的 I/O 调度器:是否为noop "cat /sys/block/sd[bc]/queue/scheduler
​echo "查看 cpufreq 模块选用的节能策略: performance模式"cpupower frequency-info --policyecho "如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy"echo "配置系统参数优化完成..."
}
​
modify_sysctl() {echo "修改 sysctl 参数..."echo "fs.file-max = 1000000">> /etc/sysctl.confecho "net.core.somaxconn = 32768">> /etc/sysctl.confecho "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.confecho "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.confecho "vm.overcommit_memory = 1">> /etc/sysctl.confecho "执行 sysctl -p 命令在不重启的情况下使配置生效"sysctl -pecho "修改 sysctl 参数完成..."
}
​
limits_conf() {echo "配置用户的 limits.conf 文件"echo "tidb           soft    nofile          1000000" >>/etc/security/limits.confecho "tidb           hard    nofile          1000000" >>/etc/security/limits.confecho "tidb           soft    stack          32768" >>/etc/security/limits.confecho "tidb           hard    stack          32768" >>/etc/security/limits.conf
​echo "limits.conf 文件配置完成"
}
​
useradd_tidb() {echo "增加tidb用户"sudo useradd tidbsudo sh -c 'echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers'echo "password"sleep 6sudo passwd tidb
}
​
​
echo "TiDB 环境与系统配置检查开始..."
​
echo "1.close_swap Start"
close_swap
echo "close_swap End"
echo " "
​
echo "2.close_firewall Start"
close_firewall
echo "close_firewall End"
echo " "
​
echo "3.ntp_service Start"
ntp_service
echo "ntp_service End"
echo " "
​
echo "4.csop Start"
csop
echo "csop End"
echo " "
​
echo "5.modify_sysctl Start"
modify_sysctl
echo "modify_sysctl End"
echo " "
​
echo "6.limits_conf Start"
limits_conf
echo "limits_conf End"
echo " "
​
echo "7.useradd_tidb Start"
useradd_tidb
echo "useradd_tidb End"
echo " "
​
echo "TiDB 环境与系统配置检查完成......"

2. 实施部署

2.1 部署管理工具 TiUP

  • 下载并安装 (在线):

    curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
    
  • 声明全局环境变量:

    source /home/tidb/.bash_profile
    
  • 安装 TiUP 的 cluster 组件:

    tiup cluster
    tiup update --self && tiup update cluster
    
  • 注:由于模拟多机部署,需要通过 root 用户调大 sshd 服务的连接数限制:

    修改 /etc/ssh/sshd_configMaxSessions 调至 20。

    cat /etc/ssh/sshd_config | grep MaxSessions
    sudo vim /etc/ssh/sshd_config
    # 查找 MaxSessions 并修改数量 ,默认是10 ,我个人修改为 30 了
    :/MaxSessions # vim ESC模式下查找关键词
    

2.2 创建并启动集群

  • 提前规划:

  • 集群名称: tidbsingle

  • TiDB 版本: v5.0.0 ,可以通过 tiup list tidb 命令来查看当前支持部署的 TiDB 版本

  • TiDB 部署空间:该规模集群初始化时会占用 21.1G 左右磁盘空间,需要有基础保障。

  • 按照拓扑文件配置模板创建 topo.yaml 配置文件:

    su tidb
    touch topo.yaml
    
  • 执行部署前检查 (check)集群存在的潜在风险:

    tiup cluster check ./topo.yaml --user tidb
    
  • 执行部署前自动修复 (check --apply)集群存在的潜在风险:

    tiup cluster check ./topo.yaml --apply --user tidb
    
  • 上边两个步骤出现的一些潜在风险,在测试集群中可以不处理!

  • 值得一提的是:上面的检查会出现不支持麒麟系统的提示,可以不用管,官方人员说可以支持麒麟和鲲鹏系统,实验也是支持的。

  • 执行集群部署命令:

    tiup cluster deploy tidbsingle v5.0.0 ./topo.yaml --user tidb -p
    

按照引导来完成部署。

  • 这种模式的集群部署第一次需要执行以下方式进行初始化启动:

    tiup cluster start tidbsingle --init
    # 服务启动超时情况出现的话,先按照提示查看日志文件,根据 welcome 和 error 关键词定位异常;如果是单纯的超时可以多试几次
    

    第一次初始化启动会提示数据库 root 用户的初始密码;之后每次集群启动就不需要指定 --init

    # 集群启动
    tiup cluster start tidbsingle
    

2.3 访问集群

  • MySQL 客户端(黑屏模式)连接,因为 TiDB 兼容 MySQL ,这种模式当下流行且方便:

    mysql -h 192.168.0.131 -P 4000 -u root -p
    Enter password: 这里输入第一次初始化启动生成的密码!
    
  • 这里引入 数据库 root 用户的修改:

    # 使用 mysql 库
    use mysql;
    # select User,Host,authentication_string from mysql.user;
    # 修改密码为xxxxxxxxxx
    alter user 'root'@'%' identified by 'password';
    # 刷新
    flush privileges;
    # 退出连接
    exit
    
  • 数据库连接应用连接,按照 MySQL 模式进行连接配置:

<!---->

  • 因为这里采用的是云服务器,所以IP不一样是正常情况!

  • 访问 TiDB 的 Grafana 监控:

  • 通过 http://{ip}:3003/login 访问集群 Grafana 监控页面,默认用户名和密码在拓扑文件中设置均为 admin(默认)。

<!---->

  • 访问 TiDB 的 Dashboard:

  • 通过 http://{IP}:2379/dashboard/#/signin 访问集群 TiDB Dashboard 监控页面,默认用户名为 root ,密码为数据库密码。

2.4 管理集群

  • 执行以下命令确认当前已经部署的集群列表:

    tiup cluster list
    
  • 执行以下命令查看集群的拓扑结构和状态:

    tiup cluster display tidbsingle
    
  • 执行以下命令停止集群:

    tiup cluster stop tidbsingle
    
  • 执行以下命令销毁集群(数据全丢,注意执行条件):

    tiup cluster destroy tidbsingle
    

在华为 Kylin V10 SP1操作系统,HUAWEI,Kunpeng 920 CPU(4Cores)单机上模拟部署生产环境TiDB集群...相关推荐

  1. 在华为云 CCE 上部署 EMQX MQTT 服务器集群

    云进入以「应用为中心」的云原生阶段,Operator 模式的出现,则为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范.通过将运维知识固化成高级语言 Go/Java 代 ...

  2. 银河麒麟桌面操作系统 V10 SP1下Qt应用程序开发环境配置

    Kylin V10 SP1软件源中提供的Qt框架版本为5.12.8,qmake对应版本为3.1,Qt Creator对应版本为4.11.0. 一.下载软件包 1.1 安装Qt组件 执行命令来进行Qt组 ...

  3. Kylin V10系统U盘识别挂载问题

    1. 问题描述及原因分析 在使用Kylin V10服务器操作系统时候,需要用U盘拷贝数据,但插入U盘后,能看到U盘的标识,无论如何双击,都无法挂载使用,如下所示: 经研究发现,系统采用Device M ...

  4. 让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布!

    摘要:在华为全联接2021期间,华为云GaussDB(for openGauss)正式推出重大内核新特性--同城双集群高可用方案,提供金融级高可用服务,支持RPO=0 .RTO<60s的同城双集 ...

  5. 华为自研分布式时序数据库集群:初始GaussDB(for Influx)

    前言 随着云计算规模越来越大,以及物联网应用逐渐普及,在物联网(AIoT)以及运维监控(AIOps)领域,存在海量的时序数据需要存储管理.以华为云监控服务(Cloud Eye Service,CES) ...

  6. 【云驻共创】华为云云原生之Kubernetes网络架构原理深度剖析(上)

    文章目录 前言 一.Kubernetes诞生背景 1.云原生的概念 2.云原生架构 3.Kubernetes(k8s) 二.Kubernetes基本网络模型剖析 1.概念厘清 1.1 二层桥接 VS ...

  7. [新闻]华为高端集群路由器面世

    [中国,无锡] 3月14日在江苏无锡举行的集群路由技术研讨会上,华为技术有限公司("华为")展示了Quidway® NetEngine 5000E(以下简称NE5000E)核心路由 ...

  8. 华为云 UCS GitOps:轻松交付多集群云原生应用

    摘要:使用华为云 UCS GitOps 配置管理来交付您的多云应用. 本文分享自华为云社区<华为云 UCS GitOps:轻松交付多集群云原生应用>,作者:华为云云原生团队. 随着业务的全 ...

  9. 麒麟桌面操作系统V10 SP1 桌面操作系统软件商店无法打开

    系统环境: 麒麟V10 SP1 桌面操作系统 问题描述 在更新软件商店的过程中,重启了系统,重新打开软件商店,提示正在启动软件商店后,再无任何反应 原因分析: 打开终端,通过命令行启动软件商店 kyl ...

最新文章

  1. 软件开发管理规范流程图
  2. 理解并取证:DHCP的工作原理、怎么检测IP地址冲突
  3. 【Mysql】win10上Mysq的l安装
  4. 关于bn层的进一步认识
  5. html写一个赌马游戏,趣味赛马(在线网页游戏)
  6. 怎么访问二级服务器未响应,windows+访问服务器未响应
  7. 38. 重定向与负载均衡
  8. .net反射调用值类型引用参数时的处理办法(转)
  9. 结合 TreeMap 源码分析红黑树在 java 中的实现
  10. python安装包的路径
  11. 指纹考勤机使用的基本操作方法
  12. 【iPod转换精灵V10.2 官方最新版】强大的视频转换功能
  13. 草料二维码 批量生成二维码
  14. JS 截取视频某一帧图片 实现视频截图
  15. WPF Behavior 行为
  16. 转:学会正念沟通,领导力再也不是玄学
  17. 计算机主板供电,主板供电/元器件
  18. 针对正方教务开发大学App(查成绩,课表,一键评教,图书馆,正方系统)
  19. 单点自平衡立方体相当于有几个自由度?自平衡自行车有几个自由度?独轮车有几个自由度?
  20. 你所不了解的DevOps

热门文章

  1. 个人小程序支持哪些小程序服务类目
  2. 2021年森林督查暨森林资源管理“一张图”更新工作方案
  3. C++常见面试题总结
  4. 百度云-人工智能-识别图片中的文字
  5. python第三方库集锦
  6. DNS服务器可能不可用 win11解决方法
  7. 联想服务器显示系统初始化,[转载]联想服务器系统设置(一)
  8. 字符流的相关概念和相关方法的使用、IO异常的处理以及Properties属性集
  9. 防劫持工具,介绍几款浏览器劫持修复工具
  10. 很遗憾未能成功连接服务器神武,神武十年《见证》逍遥游戏里的超级学霸 最希望被别人抄“作业”...