备注:
tidb 听说已经很长时间了,一直无安装部署(主要是不像cockrouchdb 不见那么简单)
1. 环境准备(官方建议使用6台机器)
// 我的机器准备(阿里云的,同时大家最好选择ssd的同时选择独享的,总之配置要高)使用vpc,中控机没写
10.0.230.14 pod1
10.0.230.15 pod2
10.0.230.16 pod3
10.0.230.13 tikv1
10.0.230.18 tikv2
10.0.230.17 tikv3
2. 中控机环境配置
a. 基本要求:
机器 4 台以上。TiKV 至少 3 个实例,而且不要将 TiKV 与 TiDB 或 PD 模块部署在同一台机器上。详见部署建议。
操作系统:
CentOS 7.0 及以上版本
X86_64 架构 (AMD64)
内核版本 3.10 及以上
Ext4 文件系统
机器之间互通网络。部署时关闭防火墙和 iptables,部署完成后再开启。
所有机器的时间和时区设置一致,有 NTP 服务可以同步正确时间。
一个可从中控机登录的远程用户帐号,以通过 SSH 连接托管节点。普通用户帐号需要有 sudo 权限。
Python 2.6 或 Python 2.7
b. 环境安装
yum install epel-release
yum update
yum install ansible
3. tidb 环境配置
a. 下载ansible 文件
wget https://github.com/pingcap/tidb-ansible/archive/master.zip
unzip master.zip
cd tidb-ansible-master
b. 编辑inventory.ini
# TiDB Cluster Part
[tidb_servers]
10.0.230.14
10.0.230.15
[tikv_servers]
10.0.230.13
10.0.230.18
10.0.230.17
[pd_servers]
10.0.230.14
10.0.230.15
10.0.230.16
[spark_master]
[spark_slaves]
# Monitoring Part
[monitoring_servers]
10.0.230.16
[grafana_servers]
10.0.230.16
[monitored_servers:children]
tidb_servers
tikv_servers
pd_servers
spark_master
spark_slaves
## Binlog Part
[pump_servers:children]
tidb_servers
[drainer_servers]
[pd_servers:vars]
# location_labels = ["zone","rack","host"]
## Global variables
[all:vars]
deploy_dir = /home/tidb/deploy
## Connection
# ssh via root:
ansible_user = root
ansible_become = true
ansible_become_user = tidb
# ssh via normal user
#ansible_user = tidb
cluster_name = test-cluster
tidb_version = latest
# deployment methods, [binary, docker]
deployment_method = binary
# process supervision, [systemd, supervise]
process_supervision = systemd
# timezone of deployment region
timezone = Asia/Shanghai
set_timezone = True
# misc
enable_elk = False
enable_firewalld = False
# check NTP service
enable_ntpd = True
machine_benchmark = True
set_hostname = False
# binlog trigger
enable_binlog = False
# store slow query log into seperate file
enable_slow_query_log = False
c. 部署tidb
依赖
ansible-playbook local_prepare.yml
环境初始化,内核参数修改
ansible-playbook bootstrap.yml -k -K
部署组件
ansible-playbook deploy.yml -k
4. 启动tidb
启动:
ansible-playbook start.yml -k
连接:
mysql -u root -h 10.0.230.14 -P 4000
操作:
创建数据库:
CREATE DATABASE IF NOT EXISTS samp_db;
创建表:
CREATE TABLE person (
number INT(11),
name VARCHAR(255),
birthday DATE
);
5. 集群监控
端口10.0.230.16:3000 默认账户 admin admin
6. 问题以及解决
a. 账户问题
默认是tidb (自己创建),但是在部署的时候有问题,所以上面的修改为使用root
b. 主机问题
测试的过程中使用hostsname 能ping 通,但是就是无法启动,解决方法:直接使用ip地址
c. 磁盘检测问题
默认建议的我们的磁盘iops 需要达到15M,一般申请的ecs都太小,所以建议选择配置大的,包括cpu ,磁盘使 用ssd 大小大点
d. ntp 服务问题
tidb 对于时间同步要求比较高,注意时间的问题,阿里云问题不大,默认开启了,而且自动启动并同步。
7. 参考文档
https://www.pingcap.com/docs-cn/QUICKSTART/