资讯专栏INFORMATION COLUMN

Tidb日常运维操作

IT那活儿 / 3722人阅读
Tidb日常运维操作
1、集群操作


启动集群

此操作会按顺序启动整个TiDB 集群所有组件(包括PD、TiDB、TiKV等组件和监控组件)。

ansible-playbookstart.yml (-tags=tidb/tikv/pd标记tags可选)


关闭集群

此操作会按顺序关闭整个TiDB 集群所有组件(包括PD、TiDB、TiKV等组件和监控组件)。

ansible-playbookstop.yml (-tags=tidb/tikv/pd标记tags可选)


停止单个tidb-server / tikv-server

ansible-playbookstop.yml --tags=tidb/tikv/pd -l IP

-l 后面接inventory.ini 配置的IP或别名


清除集群数据

此操作会关闭TiDB、Pump、TiKV、PD服务,并清空Pump、TiKV、PD数据目录。

ansible-playbookunsafe_cleanup_data.yml


销毁集群

此操作会关闭集群,并清空部署目录,若部署目录为挂载点,会报错,可忽略。

ansible-playbookunsafe_cleanup.yml


TiDB 兼容MySQL 协议,所有连接MySQL 的方式都适用于TiDB,使用如下MySQL登录方式也可登录入tidb数据库中.

mysql -uroot-h127.0.0.1 -P4000 –p


修改集群参数

当集群参数需要定制化时,可以通过修改tidb-ansible/conf/tidb.yml 配置文件,然后执行

ansible-playbookrolling_update.yml (--tags=tidb/tikvtags可选)

也可以直接登录服务器,找到deploy_dir/conf/tidb.toml,直接编辑文件,然后pkill tidb-server 来重启服务

二、数据库操作与TIDB权限管理


2.1数据库操作

Tidb日常操作跟MySQL非常相似,如果没有用到大数据比如spark等,日常就如操作MySQL一般简单.如下简单操作,与MySQL的相关查询操作一致


查看tidb 版本信息

selecttidb_version();


查看安装的tidb下MySQL的数据库版本信息


查看数据库

show databases;

与正常MySQL数据库并没什么不同,只是系统mysql数据库下多了tidb的表


2.2 权限操作


  1. 授权操作

授予xxx 用户对数据库mydb的读权限:

GRANT SELECT ONmydb.* TO xxx@%;


为xxx 用户授予所有数据库,全部权限:

GRANT ALL PRIVILEGESON *.* TO xxx@%;


GRANT为一个不存在的用户授予权限时,默认并不会自动创建用户。该行为受SQL Mode 中的NO_AUTO_CREATE_USER 控制。如果从 SQL Mode 中去掉NO_AUTO_CREATE_USER,当GRANT 的目标用户不存在时,TiDB会自动创建用户。


查看当前sql_mode

修改sql_mode,进行授权后,则会创建用户


  1. 收回权限

收回权限使用revoke操作,与grant对应

(Tidb下revoke操作只匹配精确权限,而grant可使用模糊授权)


REVOKE ALLPRIVILEGES ON `mydb`.* FROM max@%;


  1. 查看权限

命令showgrants,查看当前用户权限


查看指定用户权限

Show grant for max;


  1. 角色

角色是一系列权限的集合。用户可以创建角色、删除角色、将权限赋予角色;也可以将角色授予给其他用户,被授予的用户在启用角色后,可以得到角色所包含的权限。

1.创建角色

创建角色 r_1 和 r_2:

mysql> CREATE ROLE `r_1`@`%`, `r_2`@`%`;

Query OK, 0 rows affected (0.04 sec)


角色会被保存在 mysql.user 表中,如果表中有同名角色或用户,角色会创建失败并报错。 创建角色的用户需要拥有 CREATE ROLE 或 CREATE USER 权限。


  1. 删除角色

mysql> DROP ROLE `r_1`@`%`, `r_2`@`%`;

Query OK, 0 rows affected (0.06 sec)

这个操作会清除角色在 mysql.user 表里面的记录项,并且清除在授权表里面的相关记录,解除和其相关的授权关系。 执行删除角色的用户需要拥有 DROP ROLE 或 DROP USER 权限。


  1. 授予用户角色

mysql> grant r_1 to max@%;

Query OK, 0 rows affected (0.05 sec)


  1. 查看用户角色权限

mysql> show grants for max;

+------------------------------------------+

| Grants for max@%                         |

+------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO max@% |

| GRANT r_1@% TO max@%             |

+------------------------------------------+


可以看到当前max有角色r_1存在


  1. 查看角色对应的权限

mysql> show grants for max@% using r_1;

+------------------------------------------+

| Grants for max@%                         |

+------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO max@% |

| GRANT r_1@% TO max@%             |

+------------------------------------------+



三、日程运维中容易遇到的问题


3.1 GC life time 问题

有时候执行一个长事务,还没读到想要的数据,就被清理了,应用就要跳出来了,可根据应用修改gc时间长度

update mysql.tidbset variable_value=30m where variable_name=tikv_gc_life_time;


3.2 tidb内存溢出问题

tidb可通过在配置文件中写oom-action= "log"来捕获内存溢出的SQL语句,超过内存阈值(tidb_mem_quota_query控制)的SQL语句会被捕获到


3.3收集统计信息,提升数据查询效率问题

set@@tidb_build_stats_concurrency=20;

set@@tidb_distsql_scan_concurrency=100;

set@@tidb_index_serial_scan_concurrency=20;

修改上面三个参数可以提升scan 效率。


tidb依然使用analyze来收集表的统计信息

analyze table xxxindex xxx;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130123.html

相关文章

  • 雷神 Thor —— TiDB 自动化运维平台

    摘要:相当于分布式数据库的大脑,一方面负责收集和维护数据在各个节点的分布情况,另一方面承担调度器的角色,根据数据分布状况以及各个存储节点的负载来采取合适的调度策略,维持整个系统的平衡与稳定。原文链接雷神自动化运维平台 作者:瞿锴,同程艺龙资深 DBA 背景介绍 随着互联网的飞速发展,业务量可能在短短的时间内爆发式地增长,对应的数据量可能快速地从几百 GB 涨到几百个 TB,传统的单机数据库提...

    RayKr 评论0 收藏0
  • TiDB 助力东南亚领先电商 Shopee 业务升级

    摘要:作者介绍刘春辉,洪超,一业务场景是东南亚和台湾地区领先的电子商务平台,覆盖新加坡马来西亚菲律宾印度尼西亚泰国越南和台湾等七个市场。母公司为首家在纽约证券交易所上市的东南亚互联网企业。 作者介绍刘春辉,Shopee DBA洪超,Shopee DBA 一、业务场景 Shopee(https://shopee.com/)是东南亚和台湾地区领先的电子商务平台,覆盖新加坡、马来西亚、菲律宾、印...

    hoohack 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<