tidb集群安装部署
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集群安装部署相关推荐
- HBase 1.2.6 完全分布式集群安装部署详细过程
2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...
- SolrCloud 分布式集群安装部署(solr4.8.1 + zookeeper +tomcat)
SolrCloud 分布式集群安装部署 安装软件包准备 · apache-tomcat-7.0.54 · jdk1.7 · solr-4.8.1 · zookeeper-3.4.5 注:以上软件都是基 ...
- zookeeper集群安装部署
zookeeper集群安装部署 1:规划: 集群建议至少在三台服务器上部署 192.168.1.171 192.168.1.172 192.168.1.173 2:去各 ...
- 企业实战_18_MyCat_ZK集群安装部署
接上一篇:企业实战_17_MyCat水平扩展_跨分片查询_ER分片 https://gblfy.blog.csdn.net/article/details/100066013 文章目录 一.使用ZK记 ...
- 资源放送丨《Oracle RAC 集群安装部署》PPT视频
点击上方"蓝字" 关注我们,享更多干货! 前段时间,墨天轮邀请数据库资深专家 邦德 老师分享了<Oracle RAC 集群安装部署>,在这里我们将课件PPT和实况录像分 ...
- 今晚8点直播(内含福利)丨 Oracle RAC集群安装部署
Oracle RAC集群安装部署-9月16日20:00 Oracle RAC真正的应用集群,它可以多个主机共同分散业务,来达到负载均衡和高可用,目前企业也大规模应用,具有稳定,很好的扩展性等特点. 作 ...
- 本周四直播预告(内含福利)丨 Oracle RAC集群安装部署
Oracle RAC集群安装部署-9月16日20:00 Oracle RAC真正的应用集群,它可以多个主机共同分散业务,来达到负载均衡和高可用,目前企业也大规模应用,具有稳定,很好的扩展性等特点. 作 ...
- 安装部署(七) 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 ...
- 记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
基本信息 官网 http://pig.apache.org/ 下载地址 http://www.apache.org/dyn/closer.cgi/pig https://mirror.bit.edu. ...
最新文章
- springmvc使用和经验总结(长沙师说网络科技有限公司)
- 文化致胜的时代 协同OA可以这样助力企业文化建设
- CNN 模型的参数(parameters)数量和浮点运算数量(FLOPs)是怎么计算的
- 繁琐又危险的任务(varchar--nvarchar)
- GDCM:gdcm::Curve的测试程序
- How to Fix “Username is not in the sudoers file. This incident will be reported” in Ubuntu
- hdu 2871 Memory Control(线段树)
- 其他手机有机会用鸿蒙,即将发布的荣耀50系列手机可以有机会用鸿蒙系统吗?...
- 实验5 编写、调试具有多个段的程序
- 深度揭秘阿里云 Serverless Kubernetes
- java mainclass_java – 无法加载Main-Class清单属性
- JAVA与GO语言之间应该选择学习哪个?
- Acwing动态规划1——背包问题
- python index 报错_Python3 抓取数据报错IndexError: list index out of range
- 微服务4——服务的限流、熔断(Sentinel-三ti no)sca-comsumersca-provider
- บาคาร่า ธุรกิจที่สร้างรายได้ดี
- django模型类中,为什不是user_id而是user?
- java修饰词严格程度_Java修饰词的总结
- 【23种设计模式】中介者模式(Mediator Pattern) .Net Core实现
- 悔不当初:没人能随随便便成功
热门文章
- python pandas 日期计算_Python Pandas计算日期之间的平均天数
- HTML5常用新特性
- TPS65983ACZQZR USB Type-C 控制器和553SDCGI8时钟缓冲器、SLB9665TT2.0应用说明
- Android 3 使用 smartTable 表格工具 实现选中一行 并获得行所有信息
- pytorch 错误 AttributeError: ‘Tensor‘ object has no attribute ‘backword‘
- 计算机有残留office,Microsoft Office怎么卸载干净?
- 区块链早起打卡项目趣步模式
- Linux服务器连接mysql数据库操作
- 鸡汤怎么炖好喝 鸡汤的家常做法
- 计算机基础知识:通用快速进入Windows用户某个文件夹