TiDB 学习第 2 天:使用 Docker Compose 快速构建 TiDB 测试集群

x33g5p2x  于2021-12-19 转载在 其他  
字(2.8k)|赞(0)|评价(0)|浏览(391)

本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群。Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止。
注:对于生产环境,不要使用 Docker Compose 进行部署,而应使用 Ansible 部署 TiDB 集群。

准备环境

确保你的机器上已安装:

  • Docker(17.06.0 及以上版本)
  • Docker Compose
  • Git
    Docker和docker-compose安装详见一键部署脚本
1. 下载 tidb-docker-compose
git clone https://github.com/pingcap/tidb-docker-compose.git   /tmp/docker/tidb/
2. 创建并启动集群
cd tidb-docker-compose && docker-compose pull # Get the latest Docker images
docker-compose up -d
3. 访问集群
mysql -h 127.0.0.1 -uroot  -P 4000

访问集群 Grafana 监控页面:http://cdh01:3000 默认用户名和密码均为 admin。

集群数据可视化:http://cdh01:8010

访问 Spark shell 并加载 TiSpark

1、向 TiDB 集群中插入样本数据:
$ docker-compose exec tispark-master bash
  $ cd /opt/spark/data/tispark-sample-data
  $ mysql -h tidb -P 4000 -u root < dss.ddl
2、当样本数据加载到 TiDB 集群之后,访问 Spark shell
docker-compose exec tispark-master /opt/spark/bin/spark-shell
3 、导入Ti相关包
import org.apache.spark.sql.TiContext   ##导入TiContext包
val ti1 = new TiContext(spark)        ##使用什么语言(这里是spark)
 ti1.tidbMapDatabase("TPCH_001")     ##使用TiDB中的哪个数据库

如上图所示:样例数据测试成功!

4、执行复杂的sql
spark.sql(
     |       """select | | l_returnflag, | | l_linestatus, | | sum(l_quantity) as sum_qty, | | sum(l_extendedprice) as sum_base_price, | | sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, | | sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, | | avg(l_quantity) as avg_qty, | | avg(l_extendedprice) as avg_price, | | avg(l_discount) as avg_disc, | | count(*) as count_order | |from | | lineitem | |where | | l_shipdate <= date '1998-12-01' - interval '90' day | |group by | | l_returnflag, | | l_linestatus | |order by | | l_returnflag, | | l_linestatus | """.stripMargin).show

测试结果如下:

TiDB账号密码管理

1. 用户名和密码

TiDB 将用户账户存储在 mysql.user 系统表里面。每个账户由用户名和 host 作为标识。每个账户可以设置一个密码。
通过 MySQL 客户端连接到 TiDB 服务器,通过指定的账户和密码登陆:

shell> mysql --port 4000 --user xxx --password

使用缩写的命令行参数则是:

shell> mysql -P 4000 -u xxx -p
2.添加用户

添加用户有两种方式:

  • 通过标准的用户管理的 SQL 语句创建用户以及授予权限,比如 CREATE USER 和 GRANT 。
  • 直接通过 INSERT , UPDATE 和 DELETE 操作授权表。
    推荐的方式是使用第一种。第二种方式修改容易导致一些不完整的修改,因此不推荐。还有另一种可选方式是使用第三方工具的图形化界面工具。

下面的例子用 CREATE USER 和 GRANT 语句创建了四个账户:

mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost' WITH GRANT OPTION; mysql> CREATE USER 'finley'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'%' WITH GRANT OPTION; mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin_pass'; mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost'; mysql> CREATE USER 'dummy'@'localhost';
3. 删除用户
mysql> DROP USER 'jeffrey'@'localhost';
4. 修改密码
SET PASSWORD FOR 'root'@'%' = 'r!o@o#t$>?.123';

在 CREATE USER 创建用户时可以通过 IDENTIFIED BY 指定密码:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

为一个已存在的账户修改密码,可以通过 SET PASSWORD FOR 或者 ALTER USER 语句完成:

SET PASSWORD FOR 'root'@'%' = 'xxx';

或者

ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

如果授权表已被直接修改,运行如下命令可使改动立即生效:

FLUSH PRIVILEGES;
5. 修改 sql_mode

TiDB 修改 sql_mode 在 TIDB 安装路径下的 config 下面的 tidb.toml 中添加如下语句即可

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

相关文章