暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Tidb日常运维操作

IT那活儿 2020-10-15
3605
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;

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论