启动集群
此操作会按顺序启动整个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 来重启服务
2.1数据库操作
Tidb日常操作跟MySQL非常相似,如果没有用到大数据比如spark等,日常就如操作MySQL一般简单.如下简单操作,与MySQL的相关查询操作一致
查看tidb 版本信息
selecttidb_version();

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

查看数据库
show databases;

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

2.2 权限操作
授权操作
授予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,进行授权后,则会创建用户

收回权限
收回权限使用revoke操作,与grant对应
(Tidb下revoke操作只匹配精确权限,而grant可使用模糊授权)
REVOKE ALLPRIVILEGES ON `mydb`.* FROM 'max'@'%';
查看权限
命令showgrants,查看当前用户权限

查看指定用户权限
Show grant for max;

角色
角色是一系列权限的集合。用户可以创建角色、删除角色、将权限赋予角色;也可以将角色授予给其他用户,被授予的用户在启用角色后,可以得到角色所包含的权限。
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 权限。
mysql> DROP ROLE `r_1`@`%`, `r_2`@`%`; Query OK, 0 rows affected (0.06 sec) 这个操作会清除角色在 mysql.user 表里面的记录项,并且清除在授权表里面的相关记录,解除和其相关的授权关系。 执行删除角色的用户需要拥有 DROP ROLE 或 DROP USER 权限。
mysql> grant 'r_1' to 'max'@'%'; Query OK, 0 rows affected (0.05 sec)
mysql> show grants for max; +------------------------------------------+ | Grants for max@% | +------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'max'@'%' | | GRANT 'r_1'@'%' TO 'max'@'%' | +------------------------------------------+ 可以看到当前max有角色r_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;




