tidb集群安装部署

部署架构图

一、安装tiup

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

二、部署tidb集群

架构图

存储架构图

SQL层架构图

1、安装tiup cluster

tiup install cluster

2、制作集群部署文件

global:user: "tidb"ssh_port: 22deploy_dir: "/tidb-deploy"data_dir: "/tidb-data"# # Monitored variables are applied to all the machines.
monitored:node_exporter_port: 9100blackbox_exporter_port: 9115# deploy_dir: "/tidb-deploy/monitored-9100"# data_dir: "/tidb-data/monitored-9100"# log_dir: "/tidb-deploy/monitored-9100/log"
server_configs:tidb:log.slow-threshold: 300binlog.enable: falsebinlog.ignore-error: falsetikv:# server.grpc-concurrency: 4# raftstore.apply-pool-size: 2# raftstore.store-pool-size: 2# rocksdb.max-sub-compactions: 1# storage.block-cache.capacity: "16GB"# readpool.unified.max-thread-count: 12readpool.storage.use-unified-pool: falsereadpool.coprocessor.use-unified-pool: truepd:schedule.leader-schedule-limit: 4schedule.region-schedule-limit: 2048schedule.replica-schedule-limit: 64
pd_servers:- host: 192.168.1.91name: pd-91# ssh_port: 22# client_port: 2379# peer_port: 2380# deploy_dir: "/tidb-deploy/pd-2379"# data_dir: "/tidb-data/pd-2379"# log_dir: "/tidb-deploy/pd-2379/log"# numa_node: "0,1"# # The following configs are used to overwrite the `server_configs.pd` values.# config:#   schedule.max-merge-region-size: 20#   schedule.max-merge-region-keys: 200000- host: 192.168.1.92name: pd-92- host: 192.168.1.93name: pd-93
tidb_servers: - host: 192.168.1.91# ssh_port: 22# port: 4000# status_port: 10080# deploy_dir: "/tidb-deploy/tidb-4000"# log_dir: "/tidb-deploy/tidb-4000/log"# numa_node: "0,1"# # The following configs are used to overwrite the `server_configs.tidb` values.# config:#   log.slow-query-file: tidb-slow-overwrited.log- host: 192.168.1.92- host: 192.168.1.93
tikv_servers: - host: 192.168.1.91# ssh_port: 22# port: 20160# status_port: 20180# deploy_dir: "/tidb-deploy/tikv-20160"# data_dir: "/tidb-data/tikv-20160"# log_dir: "/tidb-deploy/tikv-20160/log"# numa_node: "0,1"# # The following configs are used to overwrite the `server_configs.tikv` values.# config:#   server.grpc-concurrency: 4#   server.labels: { zone: "zone1", dc: "dc1", host: "host1" }- host: 192.168.1.92- host: 192.168.1.93
cdc_servers:- host: 10.0.1.3
monitoring_servers:- host: 192.168.1.91# ssh_port: 22# port: 9090# deploy_dir: "/tidb-deploy/prometheus-8249"# data_dir: "/tidb-data/prometheus-8249"# log_dir: "/tidb-deploy/prometheus-8249/log"
grafana_servers:- host: 10.0.1.10# port: 3000# deploy_dir: /tidb-deploy/grafana-3000alertmanager_servers:- host: 10.0.1.10# ssh_port: 22# web_port: 9093# cluster_port: 9094# deploy_dir: "/tidb-deploy/alertmanager-9093"# data_dir: "/tidb-data/alertmanager-9093"# log_dir: "/tidb-deploy/alertmanager-9093/log"

3、部署集群

tiup cluster deploy prod-cluster v4.0.11 /tmp/topology.yaml -u root -p 123456
  • prod-cluster - 集群名称

  • v4.0.1 - 版本号

  • 修改tidb的sql-mode,支持group by(多字段)

    SHOW VARIABLES like 'sql_mode';
    SET GLOBAL sql_mode='';-- 去掉group by
    
  • 改为悲观事务
    mysql默认为悲观事务,想要与mysql保持一致,改为悲观事务

    SET GLOBAL tidb_txn_mode = 'pessimistic';
    
  • 启动集群

    关闭机器防火墙

  tiup cluster start prod-cluster

4、集群扩容

编写扩容文件类似步骤二的文件

执行扩容命令

tiup cluster scale-out <cluster-name> scale-out.yaml -u root -p

5、集群缩容

tiup cluster scale-in tidb-test -N 192.168.1.67:9001
--force 强制

缩容失败,手工下线节点

curl -X POST 'http://<pd-address>/pd/api/v1/store/<store_id>/state?state=Tombstone' #修改节点状态
tiup ctl pd -u <pd-address> store delete <store_id> #删除节点
tiup cluster edit-config <cluster-name>   #删除节点

6、binlog 同步mysql数据

下载同步的程序,下载链接

部署架构

编写syncer.meta文件:

binlog-name = "mysql-bin.000006"
binlog-pos = 3025199
binlog-gtid = ""

binlog-name、binlog-pos需要在mysql上通过show master status查看

编写配置文件config.toml

log-level = "info"
log-file = "syncer.log"
log-rotate = "day"server-id = 101## meta 文件地址
meta = "./syncer.meta"
worker-count = 16
batch = 100
flavor = "mysql"## Prometheus 可以通过该地址拉取 Syncer metrics,也是 Syncer 的 pprof 调试地址
status-addr = ":8271"## 如果设置为 true,Syncer 遇到 DDL 语句时就会停止退出
stop-on-ddl = false## SQL 请求由于网络异常等原因出错时的最大重试次数
max-retry = 100[from]
host = "192.168.1.67"
user = "asr_root"
password = "ASRADMIN"
port = 3306[to]
host = "192.168.1.51"
user = "root"
password = ""
port = 4000

启动syncer

./bin/syncer -config config.toml

参考链接

7、cdc同步数据到mysql

架构图

通过扩容的方式安装cdc

cdc_servers:- host: 10.0.1.3

同步命令

cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_1.log --addr=0.0.0.0:8301 --advertise-addr=127.0.0.1:8301
cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_2.log --addr=0.0.0.0:8302 --advertise-addr=127.0.0.1:8302
cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_3.log --addr=0.0.0.0:8303 --advertise-addr=127.0.0.1:8303

创建同步任务

cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task"

参考连接

8、TiFlash安装

扩容文件

server_configs:pd:replication.enable-placement-rules: true
tiflash_servers:- host: 192.168.1.67metrics_port: 8236tcp_port: 9000http_port: 8123- host: 192.168.1.68metrics_port: 8236tcp_port: 9000http_port: 8123

执行扩容命令

tiup cluster scale-out <cluster-name> <scale-file> -u root -p

设置tiflash副本

alter table <db-name>.<table-name> set tiflash replica 2;

9、mysql数据迁移

数据备份

./dumpling   -u asr_root -p ASRADMIN   -P 3306   -h 127.0.0.1 -B cdc_test  --filetype sql   --threads 32   -o ./sql   -F 256MiB

数据导入config.toml

[lightning]
# 日志
level = "info"
file = "tidb-lightning.log"[tikv-importer]
# 选择使用的 local 后端
backend = "tidb"
# 设置排序的键值对的临时存放地址,目标路径需要是一个空目录
sorted-kv-dir = "/home/tidb/tikv"[mydumper]
# 源数据目录。
data-source-dir = "/home/tidb/sql/"# 配置通配符规则,默认规则会过滤 mysql、sys、INFORMATION_SCHEMA、PERFORMANCE_SCHEMA、METRICS_SCHEMA、INSPECTION_SCHEMA 系统数据库下的所有表
# 若不配置该项,导入系统表时会出现“找不到 schema”的异常
#filter = ['*.*']
[checkpoint]
# 是否启用断点续传。
# 导入数据时,TiDB Lightning 会记录当前表导入的进度。
# 所以即使 TiDB Lightning 或其他组件异常退出,在重启时也可以避免重复再导入已完成的数据。
enable = false
# 存储断点的数据库名称。
[tidb]
# 目标集群的信息
host = "192.168.1.51"
port = 4000
user = "root"
password = ""
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# 集群 pd 的地址
pd-addr = "192.168.1.51:2379"
log-level = "error"

导入命令

./tidb-lighting -config config.toml

三、Haproxy 安装

1、安装

yum -y install haproxy

2、配置文件

vi /etc/haproxy.cfg

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global# to have these messages end up in /var/log/haproxy.log you will# need to:## 1) configure syslog to accept network log events.  This is done#    by adding the '-r' option to the SYSLOGD_OPTIONS in#    /etc/sysconfig/syslog## 2) configure local2 events to go to the /var/log/haproxy.log#   file. A line like the following can be added to#   /etc/sysconfig/syslog##    local2.*                       /var/log/haproxy.log#log         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/stats#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaultslog                     globalretries                 3timeout connect         2stimeout client          500mtimeout server          500m#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
listen admin_stats                         # frontend 和 backend 的组合体,监控组的名称,按需自定义名称bind 0.0.0.0:8080                       # 配置监听端口mode http                               # 配置监控运行的模式,此处为 `http` 模式option httplog                          # 表示开始启用记录 HTTP 请求的日志功能maxconn 10                              # 最大并发连接数stats refresh 30s                       # 配置每隔 30 秒自动刷新监控页面stats uri /haproxy                      # 配置监控页面的 URLstats realm HAProxy                     # 配置监控页面的提示信息stats auth admin:pingcap123             # 配置监控页面的用户和密码 admin,可以设置多个用户名stats hide-version                      # 配置隐藏统计页面上的 HAProxy 版本信息stats  admin if TRUE
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
listen tidb-cluster                        # 配置 database 负载均衡bind 0.0.0.0:3306                       # 配置浮动 IP 和 监听端口mode tcp                                # HAProxy 中要使用第四层的应用层balance leastconn                       # 连接数最少的服务器优先接收连接。`leastconn` 建议用于长会话服务,例如 LDAP、SQL、TSE 等,而不是短会话协议,如 HTTP。该算法是动态的,对于实例启动慢的服务器,权重会在运行中作调整。server tidb-1 192.168.1.91:4000 check inter 2000 rise 2 fall 3       # 检测 4000 端口,检测频率为 2000 毫秒。如果检测出 2 次正常就认定机器已恢复正常使用,如果检测出 3 次失败便认定该服务器不可用。server tidb-2 192.168.1.92:4000 check inter 2000 rise 2 fall 3server tidb-3 192.168.1.93:4000 check inter 2000 rise 2 fall 3

启动

#设置绑定策略
setsebool -P haproxy_connect_any=1systemctl start haproxy

haproxy-check.sh检测软件

#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];thenecho "`date` haproxy is dead" >> /tmp/haproxy.logsystemctl start haproxy
fi
sleep 2
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];thenecho "`date` haproxy cannot start,stop keepalived" >> /tmp/haproxy.logsystemctl stop keepalived
fi

四、keepalived安装

yun安装

yum install -y keepalived

如果缺少依赖,安装以下依赖

yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel

备机配置文件

global_defs {router_id hp_03
}vrrp_script chk_haproxy {script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径interval 5 ## 检测时间间隔weight -20 ## 如果条件成立,权重-20
}vrrp_instance VI_1 {state BACKUPinterface ens192 virtual_router_id 51priority 90nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_haproxy}virtual_ipaddress {192.168.1.98}
}

主机配置文件

global_defs {router_id hp_03
}vrrp_script chk_haproxy {script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径interval 5 ## 检测时间间隔weight -20 ## 如果条件成立,权重-20
}vrrp_instance VI_1 {state BACKUPinterface ens192virtual_router_id 51priority 100nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_haproxy}virtual_ipaddress {192.168.1.98}
}

启动

systemctl start keepalived

五、实施方案

1、部署tidb集群,3个tikv,3个pd,3个tidb,3个tiflash,2台haproxy,2个keepalived
2、同步mysql数据,作为mysql的从节点,运行一到两周
3、cdc同步数据到mysql,down机,把主库改为tidb

tidb集群安装部署相关推荐

  1. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  2. SolrCloud 分布式集群安装部署(solr4.8.1 + zookeeper +tomcat)

    SolrCloud 分布式集群安装部署 安装软件包准备 · apache-tomcat-7.0.54 · jdk1.7 · solr-4.8.1 · zookeeper-3.4.5 注:以上软件都是基 ...

  3. zookeeper集群安装部署

    zookeeper集群安装部署 1:规划:     集群建议至少在三台服务器上部署     192.168.1.171     192.168.1.172     192.168.1.173 2:去各 ...

  4. 企业实战_18_MyCat_ZK集群安装部署

    接上一篇:企业实战_17_MyCat水平扩展_跨分片查询_ER分片 https://gblfy.blog.csdn.net/article/details/100066013 文章目录 一.使用ZK记 ...

  5. 资源放送丨《Oracle RAC 集群安装部署》PPT视频

    点击上方"蓝字" 关注我们,享更多干货! 前段时间,墨天轮邀请数据库资深专家 邦德 老师分享了<Oracle RAC 集群安装部署>,在这里我们将课件PPT和实况录像分 ...

  6. 今晚8点直播(内含福利)丨 Oracle RAC集群安装部署

    Oracle RAC集群安装部署-9月16日20:00 Oracle RAC真正的应用集群,它可以多个主机共同分散业务,来达到负载均衡和高可用,目前企业也大规模应用,具有稳定,很好的扩展性等特点. 作 ...

  7. 本周四直播预告(内含福利)丨 Oracle RAC集群安装部署

    Oracle RAC集群安装部署-9月16日20:00 Oracle RAC真正的应用集群,它可以多个主机共同分散业务,来达到负载均衡和高可用,目前企业也大规模应用,具有稳定,很好的扩展性等特点. 作 ...

  8. 安装部署(七) HBase集群安装部署与测试

    HBase集群安装部署与测试 Hadoop 2.7.2  Spark 2.0.0 Kafka 0.10.0.0 HBase 1.2.2 Zookeeper 3.4.8 参考: http://www.t ...

  9. 记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

    基本信息 官网 http://pig.apache.org/ 下载地址 http://www.apache.org/dyn/closer.cgi/pig https://mirror.bit.edu. ...

最新文章

  1. springmvc使用和经验总结(长沙师说网络科技有限公司)
  2. 文化致胜的时代 协同OA可以这样助力企业文化建设
  3. CNN 模型的参数(parameters)数量和浮点运算数量(FLOPs)是怎么计算的
  4. 繁琐又危险的任务(varchar--nvarchar)
  5. GDCM:gdcm::Curve的测试程序
  6. How to Fix “Username is not in the sudoers file. This incident will be reported” in Ubuntu
  7. hdu 2871 Memory Control(线段树)
  8. 其他手机有机会用鸿蒙,即将发布的荣耀50系列手机可以有机会用鸿蒙系统吗?...
  9. 实验5 编写、调试具有多个段的程序
  10. 深度揭秘阿里云 Serverless Kubernetes
  11. java mainclass_java – 无法加载Main-Class清单属性
  12. JAVA与GO语言之间应该选择学习哪个?
  13. Acwing动态规划1——背包问题
  14. python index 报错_Python3 抓取数据报错IndexError: list index out of range
  15. 微服务4——服务的限流、熔断(Sentinel-三ti no)sca-comsumersca-provider
  16. บาคาร่า ธุรกิจที่สร้างรายได้ดี
  17. django模型类中,为什不是user_id而是user?
  18. java修饰词严格程度_Java修饰词的总结
  19. 【23种设计模式】中介者模式(Mediator Pattern) .Net Core实现
  20. 悔不当初:没人能随随便便成功

热门文章

  1. python pandas 日期计算_Python Pandas计算日期之间的平均天数
  2. HTML5常用新特性
  3. TPS65983ACZQZR USB Type-C 控制器和553SDCGI8时钟缓冲器、SLB9665TT2.0应用说明
  4. Android 3 使用 smartTable 表格工具 实现选中一行 并获得行所有信息
  5. pytorch 错误 AttributeError: ‘Tensor‘ object has no attribute ‘backword‘
  6. 计算机有残留office,Microsoft Office怎么卸载干净?
  7. 区块链早起打卡项目趣步模式
  8. Linux服务器连接mysql数据库操作
  9. 鸡汤怎么炖好喝 鸡汤的家常做法
  10. 计算机基础知识:通用快速进入Windows用户某个文件夹