简介

TiDB (/‘taɪdiːbi:/) 取名来自元素钛,是一个开源的分布式数据库,与MySQL兼容,并且可以用于 OLTP (Online Transactional Processing) and OLAP (Online Analytical Processing)


部署使用ansible方式

机器配置介绍

ip cpu 内存 部署
10.10.80.54 8 8G ansible中控机
10.10.80.55 8 8G tidb
10.10.80.56 8 8G tikv
10.10.80.57 8 8G tidb,pd
10.10.80.59 8 8G tikv
10.10.80.60 8 8G pd
10.10.80.61 8 8G tikv
10.10.80.62 8 8G pd

TiDB部署流程

1. 使用root登录中控机

yum -y install epel-release git curl sshpass
yum -y install python-pip

2. 创建tidb用户

useradd tidb
# 设置密码
passwd tidb
# 配置免密码
visudo
# 添加到末尾
tidb ALL=(ALL) NOPASSWD: ALL

切换到tidb用户

su - tidb
# 生成ssh密钥
ssh-keygen -t rsa

3.下载ansible脚本

cd /home/tidb
git clone -b release-2.0 https://github.com/pingcap/tidb-ansible.git

4. 安装ansible

cd /home/tidb/tidb-ansible
sudo pip install -r ./requirements.txt
# 验证是否安装成功
ansible --version

5. 配置hosts.ini文件

cd /home/tidb/tidb-ansible
vi hosts.ini
[servers]
10.10.80.55
10.10.80.56
10.10.80.57
10.10.80.59
10.10.80.60
10.10.80.61
10.10.80.62

[all:vars]
username = tidb
ntp_server = pool.ntp.org

6. 给所有部署目标机器上创建 tidb 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。

ansible-playbook -i hosts.ini create_users.yml -k

7. 配置ntp,同步时间

ansible-playbook -i hosts.ini deploy_ntp.yml -k

8. 分配机器资源,编辑 inventory.ini 文件

vi inventory.ini
## TiDB Cluster Part
[tidb_servers]
10.10.80.55
10.10.80.57

[tikv_servers]
10.10.80.56
10.10.80.59
10.10.80.61

[pd_servers]
10.10.80.57
10.10.80.60
10.10.80.62

[spark_master]

[spark_slaves]

## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
10.10.80.55

[grafana_servers]
10.10.80.55

# node_exporter and blackbox_exporter servers
[monitored_servers]
10.10.80.55
10.10.80.56
10.10.80.57
10.10.80.59
10.10.80.60
10.10.80.61
10.10.80.62

9. 修改检查参数,绕过配置监测

vi /home/tidb/tidb-ansible/roles/check_system_optional/defaults/main.yml


# CPU
tidb_min_cpu: 8
tikv_min_cpu: 8
pd_min_cpu: 4
monitor_min_cpu: 4

# Mem
tidb_min_ram: 4000
tikv_min_ram: 4000
pd_min_ram: 4000
monitor_min_ram: 4000

# Disk
tidb_min_disk: 10000000000
tikv_min_disk: 10000000000
pd_min_disk: 10000000000
monitor_min_disk: 10000000000

10. 部署及启动

# 返回 tidb 表示 ssh 互信配置成功
ansible -i inventory.ini all -m shell -a 'whoami'
# 返回 root 表示 tidb 用户 sudo 免密码配置成功。
ansible -i inventory.ini all -m shell -a 'whoami' -b
# 联网下载 TiDB binary 到中控机
ansible-playbook local_prepare.yml
# 初始化系统环境,修改内核参数
ansible-playbook bootstrap.yml
# 部署 TiDB 集群软件
ansible-playbook deploy.yml
# 启动集群
ansible-playbook start.yml

测试集群

#连接mysql需要指定utf-8
mysql -h 10.10.80.55 -P 4000 -u root --default-character-set=utf8

grafana地址:http://10.10.80.55:3000 默认帐号密码是:admin/admin

集群可视化tidb-vision安装

# 首先安装node
yum install nodejs
# clone项目
git clone https://github.com/pingcap/tidb-vision.git
# 安装依赖
cd tidb-version
npm install
# 指定pd的地址端口
export PD_ENDPOINT=10.10.80.57:2379;npm start

迁移工具使用

1. 使用loader同步数据

下载工具集

# 下载 tool 压缩包
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256

# 检查文件完整性,返回 ok 则正确
sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256
# 解开压缩包
tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz
cd tidb-enterprise-tools-latest-linux-amd64

1. 使用mydumper导出数据

mydumper -h 192.168.1.191 -P 3308 -u xxx -p xxx --regex '^plat.*$' -o ./mysql/

2. 使用loader导入数据

# 创建配置文件
touch loader.toml
loader -c ./loader.toml

syncer -config syncer.toml

2. Syncer实时同步

保证不是0

show global variables like 'server_id';

开启binlog

show global variables like 'log_bin';

binlog数据格式

show global variables like 'binlog_format';

show global variables like 'binlog_row_image';

配置sync.meta,指定binlog位置

binlog-name = "mysql-bin.000058"
binlog-pos = 811453981
binlog-gtid = ""

创建syncer.toml配置文件

[from]
host = "192.168.1.191"
user = "xxx"
password = "xxx"
port = 3308

[to]
host = "127.0.0.1"
user = "root"
password = ""
port = 4000

开始同步

syncer -config syncer.toml