@@ -5,291 +5,23 @@ category: deployment
5
5
6
6
# TiDB 快速入门指南
7
7
8
- ## 关于 TiDB
8
+ 作为开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库, TiDB 可以部署在本地和云平台上,支持公有云、私有云和混合云。
9
9
10
- TiDB 是 PingCAP 公司受 Google [ Spanner ] ( http://research.google.com/archive/spanner.html ) / [ F1 ] ( http://research.google.com/pubs/pub41344.html ) 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。 TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。
10
+ ## TiDB 部署方式
11
11
12
- ## 关于本指南
12
+ 你可以根据实际场景或需求,选择相应的方式来部署 TiDB 集群:
13
13
14
- 本指南为您介绍如何使用 TiDB-Ansible 快速部署一个 TiDB 集群,并了解 TiDB 的基本操作和管理。
14
+ - [ 使用 Ansible 部署] ( op-guide/ansible-deployment.md ) :如果用于生产环境,须使用 Ansible 部署 TiDB 集群。
15
+ - [ 使用 Ansible 离线部署] ( op-guide/offline-ansible-deployment.md ) :如果部署环境无法访问网络,可使用 Ansible 进行离线部署。
16
+ - [ 使用 Docker Compose 部署] ( op-guide/docker-compose.md ) :如果你只是想测试 TiDB、体验 TiDB 的特性,或者用于开发环境,可以使用 Docker Compose 在本地快速部署 TiDB 集群。该部署方式不适用于生产环境。
17
+ - [ 使用 Docker 部署] ( op-guide/docker-deployment.md ) :你可以使用 Docker 部署 TiDB 集群,但该部署方式不适用于生产环境。
15
18
16
- ## TiDB 集群部署
19
+ ## 项目源码
17
20
18
- 本节具体介绍如何部署一个 TiDB 集群。一个 TiDB 集群由不同的模块组成,包括:TiDB 服务器、TiKV 服务器、Placement Driver (PD) 服务器。
21
+ TiDB 集群所有组件的源码均可从 GitHub 上直接访问:
19
22
20
- 架构图如下所示:
21
-
22
- ![ TiDB Architecture] ( media/tidb-architecture.png )
23
-
24
- 参考 [ TiDB Ansible 部署方案] ( ./op-guide/ansible-deployment.md ) 。
25
-
26
- ## TiDB 基本操作
27
-
28
- 本节具体介绍 TiDB 中基本的增删改查操作。
29
-
30
- ### 创建、查看和删除数据库
31
-
32
- 使用 ` CREATE DATABASE ` 语句创建数据库。语法如下:
33
-
34
- ``` sql
35
- CREATE DATABASE db_name [options];
36
- ```
37
-
38
- 例如,要创建一个名为 ` samp_db ` 的数据库,可使用以下语句:
39
-
40
- ``` sql
41
- CREATE DATABASE IF NOT EXISTS samp_db;
42
- ```
43
-
44
- 使用 ` SHOW DATABASES ` 语句查看数据库:
45
-
46
- ``` sql
47
- SHOW DATABASES;
48
- ```
49
-
50
- 使用 ` DROP DATABASE ` 语句删除数据库,例如:
51
-
52
- ``` sql
53
- DROP DATABASE samp_db;
54
- ```
55
-
56
- ### 创建、查看和删除表
57
-
58
- 使用 ` CREATE TABLE ` 语句创建表。语法如下:
59
-
60
- ``` sql
61
- CREATE TABLE table_name column_name data_type constraint ;
62
- ```
63
-
64
- 例如:
65
-
66
- ``` sql
67
- CREATE TABLE person (
68
- number INT (11 ),
69
- name VARCHAR (255 ),
70
- birthday DATE
71
- );
72
- ```
73
-
74
- 如果表已存在,添加 ` IF NOT EXISTS ` 可防止发生错误:
75
-
76
- ``` sql
77
- CREATE TABLE IF NOT EXISTS person (
78
- number INT (11 ),
79
- name VARCHAR (255 ),
80
- birthday DATE
81
- );
82
- ```
83
-
84
- 使用 ` SHOW CREATE ` 语句查看建表语句。例如:
85
-
86
- ``` sql
87
- SHOW CREATE table person;
88
- ```
89
-
90
- 使用 ` SHOW FULL COLUMNS ` 语句查看表的列。 例如:
91
-
92
- ``` sql
93
- SHOW FULL COLUMNS FROM person;
94
- ```
95
-
96
- 使用 ` DROP TABLE ` 语句删除表。例如:
97
-
98
- ``` sql
99
- DROP TABLE person;
100
- ```
101
-
102
- 或者
103
-
104
- ``` sql
105
- DROP TABLE IF EXISTS person;
106
- ```
107
-
108
- 使用 ` SHOW TABLES ` 语句查看数据库中的所有表。例如:
109
-
110
- ``` sql
111
- SHOW TABLES FROM samp_db;
112
- ```
113
-
114
- ### 创建、查看和删除索引
115
-
116
- 对于值不唯一的列,可使用 ` CREATE INDEX ` 或 ` ALTER TABLE ` 语句。例如:
117
-
118
- ``` sql
119
- CREATE INDEX person_num ON person (number );
120
- ```
121
-
122
- 或者
123
-
124
- ``` sql
125
- ALTER TABLE person ADD INDEX person_num (number );
126
- ```
127
-
128
- 对于值唯一的列,可以创建唯一索引。例如:
129
-
130
- ``` sql
131
- CREATE UNIQUE INDEX person_num ON person (number );
132
- ```
133
-
134
- 或者
135
-
136
- ``` sql
137
- ALTER TABLE person ADD UNIQUE person_num on (number );
138
- ```
139
-
140
- 使用 ` SHOW INDEX ` 语句查看表内所有索引:
141
-
142
- ``` sql
143
- SHOW INDEX from person;
144
- ```
145
-
146
- 使用 ` ALTER TABLE ` 或 ` DROP INDEX ` 语句来删除索引。与 ` CREATE INDEX ` 语句类似,` DROP INDEX ` 也可以嵌入 ` ALTER TABLE ` 语句。例如:
147
-
148
- ``` sql
149
- DROP INDEX person_num ON person;
150
- ALTER TABLE person DROP INDEX person_num;
151
- ```
152
-
153
- ### 增删改查数据
154
-
155
- 使用 ` INSERT ` 语句向表内插入数据。例如:
156
-
157
- ``` sql
158
- INSERT INTO person VALUES (" 1" ," tom" ," 20170912" );
159
- ```
160
-
161
- 使用 ` SELECT ` 语句检索表内数据。例如:
162
-
163
- ``` sql
164
- SELECT * FROM person;
165
- + -- ------+------+------------+
166
- | number | name | birthday |
167
- + -- ------+------+------------+
168
- | 1 | tom | 2017 - 09 - 12 |
169
- + -- ------+------+------------+
170
- ```
171
- 使用 ` UPDATE ` 语句修改表内数据。例如:
172
-
173
- ``` sql
174
- UPDATE person SET birthday= ' 20171010' WHERE name= ' tom' ;
175
-
176
- SELECT * FROM person;
177
- + -- ------+------+------------+
178
- | number | name | birthday |
179
- + -- ------+------+------------+
180
- | 1 | tom | 2017 - 10 - 10 |
181
- + -- ------+------+------------+
182
- ```
183
-
184
- 使用 ` DELETE ` 语句删除表内数据:
185
-
186
- ``` sql
187
- DELETE FROM person WHERE number = 1 ;
188
- SELECT * FROM person;
189
- Empty set (0 .00 sec)
190
- ```
191
-
192
- ### 创建、授权和删除用户
193
-
194
- 使用 ` CREATE USER ` 语句创建一个用户 ` tiuser ` ,密码为 ` 123456 ` :
195
-
196
- ``` sql
197
- CREATE USER 'tiuser '@' localhost' IDENTIFIED BY ' 123456' ;
198
- ```
199
-
200
- 授权用户 ` tiuser ` 可检索数据库 ` samp_db ` 内的表:
201
-
202
- ``` sql
203
- GRANT SELECT ON samp_db.* TO ' tiuser' @' localhost' ;
204
- ```
205
-
206
- 查询用户 ` tiuser ` 的权限:
207
-
208
- ``` sql
209
- SHOW GRANTS for tiuser@localhost;
210
- ```
211
-
212
- 删除用户 ` tiuser ` :
213
-
214
- ``` sql
215
- DROP USER ' tiuser' @' localhost' ;
216
- ```
217
-
218
- ## TiDB 集群监控
219
-
220
- 打开浏览器,访问以下监控平台:
221
-
222
- 地址:` http://172.16.10.3:3000 ` ,
223
- 默认帐户和密码为:` admin ` @` admin ` 。
224
-
225
- ### 重要监控指标详解
226
-
227
- + PD
228
- - Storage Capacity : TiDB 集群总可用数据库空间大小
229
- - Current Storage Size : TiDB 集群目前已用数据库空间大小
230
- - Store Status -- up store : TiKV 正常节点数量
231
- - Store Status -- down store : TiKV 异常节点数量
232
-
233
- 如果大于 0,证明有节点不正常
234
- - Store Status -- offline store : 手动执行下线操作 TiKV 节点数量
235
- - Store Status -- Tombstone store : 下线成功的 TiKV 节点数量
236
- - Current storage usage : TiKV 集群存储空间占用率
237
-
238
- 超过 80% 应考虑添加 TiKV 节点
239
- - 99% completed_cmds_duration_seconds : 99% pd-server 请求完成时间
240
-
241
- 小于 5ms
242
- - average completed_cmds_duration_seconds : pd-server 请求平均完成时间
243
-
244
- 小于 50ms
245
- - leader balance ratio : leader ratio 最大的节点与最小的节点的差
246
-
247
- 均衡状况下一般小于 5%,节点重启时会比较大
248
- - region balance ratio : region ratio 最大的节点与最小的节点的差
249
-
250
- 均衡状况下一般小于 5%,新增/下线节点时会比较大
251
-
252
- + TiDB
253
- - handle_requests_duration_seconds : 请求 PD 获取 TSO 响应时间
254
-
255
- 小于 100ms
256
- - tidb server QPS : 集群的请求量
257
-
258
- - connection count : 从业务服务器连接到数据库的连接数
259
-
260
- 和业务相关。但是如果连接数发生跳变,需要查明原因。比如突然掉为 0,可以检查网络是否中断;
261
- 如果突然上涨,需要检查业务。
262
- - statement count : 单位时间内不同类型语句执行的数目
263
- - Query Duration 99th percentile : 99% 的 query 时间
264
-
265
- + TiKV
266
- - 99% & 99.99% scheduler command duration : 99% & 99.99% 命令执行的时间
267
-
268
- 99% 小于 50ms;99.99% 小于 100ms
269
- - 95% & 99% storage async_request duration : 95% & 99% Raft 命令执行时间
270
-
271
- 95% 小于 50ms;99% 小于 100ms
272
- - server report failure message : 发送失败或者收到了错误的 message
273
-
274
- 如果出现了大量的 unreachadble 的消息,表明系统网络出现了问题。如果有 store not match 这样的错误,
275
- 表明收到了不属于这个集群发过来的消息
276
- - Vote : Raft vote 的频率
277
-
278
- 通常这个值只会在发生 split 的时候有变动,如果长时间出现了 vote 偏高的情况,证明系统出现了严重的问题,
279
- 有一些节点无法工作了
280
- - 95% & 99% coprocessor request duration : 95% & 99% coprocessor 执行时间
281
-
282
- 和业务相关,但通常不会出现持续高位的值
283
- - Pending task : 累积的任务数量
284
-
285
- 除了 pd worker,其他任何偏高都属于异常
286
- - stall : RocksDB Stall 时间
287
-
288
- 大于 0,表明 RocksDB 忙不过来,需要注意 IO 和 CPU 了
289
- - channel full : channel 满了,表明线程太忙无法处理
290
-
291
- 如果大于 0,表明线程已经没法处理了
292
- - 95% send_message_duration_seconds : 95% 发送消息的时间
293
-
294
- 小于 50ms
295
- - leader/region : 每个 TiKV 的 leader/region 数量
23
+ - [ TiDB] ( https://github.com/pingcap/tidb )
24
+ - [ TiKV] ( https://github.com/tikv/tikv )
25
+ - [ PD] ( https://github.com/pingcap/pd )
26
+ - [ TiSpark] ( https://github.com/pingcap/tispark )
27
+ - [ TiDB Operator] ( https://github.com/pingcap/tidb-operator )
0 commit comments