TiUP:TiDBAerの必須ツール

TiUPはTiDBerにとって日常的に不可欠なツールであるため、この記事は一連の「古いものを確認し、新しいものを知る」に分類されます。TiDBを初めて使用する場合は、最初にこの記事を参照してください。 TiDBデプロイメントツールのメタモルフォシス」

環境の説明

この記事に含まれる環境とコンポーネントのバージョン情報は次のとおりです。

TiDB v5.4.0

TiUP v1.9.3(2022-03-24リリース)

CentOS 7.9

TiUPの紹介

さまざまなシステムソフトウェアやアプリケーションソフトウェアのインストール管理において、パッケージマネージャーは幅広いアプリケーションを備えており、パッケージ管理ツールの外観により、ソフトウェアのインストール、アップグレード、およびメンテナンスが大幅に簡素化されます。たとえば、RPMを使用するほとんどすべてのLinuxはパッケージ管理にYumを使用し、AnacondaはPython環境と関連パッケージを管理するのに非常に便利です。

TiDB 4.0以降、新しいツールとしてのTiUPは、パッケージマネージャーの役​​割を引き受け、TiDB、PD、TiKVなどのTiDBエコシステムの多くのコンポーネントを管理します。ユーザーがTiDBエコシステムでコンポーネントを実行する場合、TiUPコマンドを1行実行するだけで済み、以前に比べて管理の難しさが大幅に軽減されます。

1.jpg

図1 -tiupソースコードの貢献者

2.jpg

図2-tiupソース行番号の統計(2022-03-24)

TiUPは2年以上リリースされています。バージョンは数回繰り返され、コードの総量は2倍になりました。上の図から、コードの更新が遅くなり、TiDBerを安全に使用できることがわかります。実稼働環境。

再びTiUPコンポーネントで

Tiの武器として、TiUPは日常業務に欠かせません。TiUPの古典的なコンポーネントと一般的なコマンドについてもう一度説明しましょう。まず、tiupの重要なコマンドを以下に示します。次に、議論に焦点を当てます。

  • 吹く
    • main / cmd / root
      • tiup env
      • ブローステータス
      • tiupミラー
      • tiupリスト--all--verbose
      • tiup install hello
      • ブローアップデート
      • tiup遊び場
      • tiupクライアント
      • tiupクラスター
      • tiup bench ch(CH-benCHmark)/TPCC(TPC-C)/TPCH(TPC-H)/YCSB(Yahoo! Cloud Serving Benchmark)
      • tiup dm
      • tiup clean

tiup mirror

不是每个公司都会把数据库部在公有云上的,即便是在公有云,为了便于版本统一管理,大都会选择自建一个仓库,是为生产库基准版本管理。而对于金融业务更不用多说,那么,如何在内网快速、简洁、有效地搭建和维护仓库,下面做个简单的示例。

首先需要在能连接外网的机器安装 tiup,并克隆官方 tiup 仓库:

  • 下载 tiup 文件,并添加环境变量
mkdir -pv ~/.tiup/bin
wget https://tiup-mirrors.pingcap.com/tiup-linux-amd64.tar.gz
tar zxf tiup-linux-amd64.tar.gz -C ~/.tiup/bin/
echo 'export PATH=~/.tiup/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
tiup -v
复制代码

输出的 tiup 版本信息:

1.9.3 tiup
Go Version: go1.17.7
Git Ref: v1.9.3
GitHash: f523cd5e051d0001e25d5a8b2c0d5d3ff058a5d5
复制代码
  • 克隆官方库

先将仓库镜像指向官方库:

tiup mirror set https://tiup-mirrors.pingcap.com
# 屏幕输出日志> Successfully set mirror to https://tiup-mirrors.pingcap.com
复制代码

只克隆适合当前操作系统的最新版本,这里只需指定TiDB v5.4.0版本,其他组件会自动识别最新版本,并下载。

tiup mirror clone ~/.tiup/package -a amd64 -o linux v5.4.0
复制代码
  • 将 package 文件夹打包复制到内网机器:
# current server
tar zcf package.tgz package/
# new server
cd ~/.tiup
tar zxvf package.tgz
./package/local_install.sh
source ~/.bash_profile
tiup list
复制代码

此时,新的本地仓已建好,创建一个hello组件进行测试:

# test mirror
CMP_TMP_DIR=`mktemp -d -p ~/.tiup`
cat > $CMP_TMP_DIR/hello.sh << EOF
#! /bin/sh
echo -e "\033[0;36m<<< Hello, TiDB! >>>\033[0m"
EOF
chmod 755 $CMP_TMP_DIR/hello.sh
tar -C $CMP_TMP_DIR -czf $CMP_TMP_DIR/hello.tar.gz hello.sh
复制代码
  • hello组件发布到本地仓:
tiup mirror genkey
tiup mirror grant admin
tiup mirror publish hello v0.0.1 $CMP_TMP_DIR/hello.tar.gz hello.sh --desc 'Hello, TiDB'
复制代码

查看已发布的组件,并运行组件:

tiup list hello
tiup hello
复制代码

3.jpg

图 3-hello 组件运行输出

此时的本地仓以可以管理自发布组件,但仍无法对外提供服务,下面用tiup server一键搭建私有库:

# 运行tiup server
tiup server ~/.tiup/package --addr 0.0.0.0:8000 --upstream=""
# 修改镜像指向
tiup mirror set 'http://127.0.0.1:8000'
复制代码

注:由于版本差异,当前版本已不建议使用环境变量TIUP_MIRRORS,而是建议使用命令tiup mirror set <mirror-addr>

tiup playground

对于分布式数据库来说,如何在本地快速搭建原型,以进行基本功能验证、测试,这是作为 DBA 的基本能力。于是,tiup playground应运而生,一键搭建最小可用集群,并可以指定初始 TiDB 每个组件启动的个数,以及扩缩容。

例如,启动一个标签为mydb1的集群,包含一个 TiDB 实例,一个 TiKV 实例,一个 PD 实例,一个 TiFlash 实例,不启动监控组件:

$ tiup playground v5.4.0 --host 127.0.0.1 --tag mydb1 --db 1 --kv 1 --pd 1 --tiflash 1 --without-monitor
127.0.0.1:4000 ... Done
127.0.0.1:3930 ... Done
CLUSTER START SUCCESSFULLY, Enjoy it ^-^
To connect TiDB: mysql --comments --host 127.0.0.1 --port 4000 -u root -p (no password)
To view the dashboard: http://127.0.0.1:2379/dashboard
PD client endpoints: [127.0.0.1:2379]
复制代码

查看各组件进程 id:

$ tiup playground display
Pid   Role     Uptime
---   ----     ------
4321  pd       10m39.092616075s
4322  tikv     10m39.087748551s
4353  tidb     10m37.765844216s
4527  tiflash  9m50.16054123s
复制代码

连接 tidb server,并查询版本:

$ mysql -uroot -h127.1 -P4000 -e 'select version()\G'
*************************** 1. row ***************************
version(): 5.7.25-TiDB-v5.4.0
复制代码

再例如,启动一个标签为mydb2的集群,只启动 TiKV 实例,和 3 个 PD 实例:

$ tiup playground v5.4.0 --host 127.0.0.1 --tag mydb2 --mode tikv-slim --pd 3 --without-monitor
Playground Bootstrapping...
Start pd instance:v5.4.0
Start pd instance:v5.4.0
Start pd instance:v5.4.0
Start tikv instance:v5.4.0
PD client endpoints: [127.0.0.1:2379 127.0.0.1:2382 127.0.0.1:2384]
复制代码

通过 PD API 查看当前 PD 有几个成员,以及 TiKV 实例信息:

$ curl -s http://127.0.0.1:2379/pd/api/v1/members | jq .members[].name
"pd-1"
"pd-0"
"pd-2"

$ curl -s http://127.0.0.1:2379/pd/api/v1/stores | jq .stores[].store
{
  "id": 1,
  "address": "127.0.0.1:20160",
  "version": "5.4.0",
  "status_address": "127.0.0.1:20180",
  "git_hash": "b5262299604df88711d9ed4b84d43e9c507749a2",
  "start_timestamp": 1648110516,
  "deploy_path": "/data/tiup/components/tikv/v5.4.0",
  "last_heartbeat": 1648112496884914000,
  "state_name": "Up"
}
复制代码

Misc

性能测试也是必要环节,所以看到 tiup 已经集成了 tpcc,tpch,ycsh,ch 四种测试工具集。可通过下面命令进行一键测试。

tiup bench ch/tpcc/tpch/ycsb
复制代码

一键清理数据的命令如下:

tiup clean --all
复制代码

这里需要强调的是,在生产环境需要慎重执行下面的指令,除非你知道你在做什么:

tiup cluster clean mydb3 --all
tiup cluster destroy mydb3
tiup cluster prune mydb3
复制代码

4.jpg

图 4-查看所有可用组件

其他组件另行讨论,或请先参阅官方文档。

TiUP v1.9.3 Release

2022-03-24,TiUP 发布了 v1.9.3 版本,从变更日志中我们可以清晰地了解到,本次更新修复了 5 个 bug,做了 2 点改进。

修复:

  • 修复了主机名存在-时,tiup-clusterexec子命令无法使用的错误。 (#1794, @nexustar)
  • 修复了使用tiup-cluster命令时,TiFlash 实例的端口(服务端口、代理端口、代理状态端口)冲突检测问题。 (#1805, @AstroProfundis)
  • 修复了下一代监控(ng-monitor)在 Prometheus 不可用的问题。 (#1806, @nexustar)
  • 修复了在主机只部署 Prometheus 的情况下,node_exporter 度量指标无法收集的问题。(与上个问题一同修复。) (#1806, @nexustar)
  • 修复了tiup-playground在指定--host 0.0.0.0时,无法工作的问题。 (#1811, @nexustar)

改进:

  • 支持tiup-clustertiup-dm命令清理审计日志。(#1780, @srstack)
tiup cluster audit cleanup
tiup dm audit cleanup
复制代码
  • 在 Grafana 配置模板中增加匿名登陆示例。(这里需要确保 DM 组件版本在 v1.9.0 之上 => tiup dm -v) (#1785@sunzhaoyang)

引申思考

クラウドデータベースの時代、または分散データベースの時代では、DBAの役割はどのように調整する必要がありますか?db2、oracle、mysql、postgresqlなどの従来のリレーショナルデータベースなどの特定のデータベースのみを操作および保守できるDBA、または高度な一般的なDBAが必要ですか?ビジネスを理解し、開発スキル?実際、これらは現在時代遅れではなく、放棄されるべきではありませんが、DBA知識構造の基礎となるモジュールになるための基本的なスキルとして使用する必要があります。DBAは、これを基礎として使用して、次のように上位段階に進化する必要があります。前任者の経験、書き込みデータベースのソースコードを取得し、フロントエンドの顧客が本当に必要としているものを理解した後、ビジネスシナリオに適した高性能データベース、および使いやすい一連のデータベースを開発および調整できます。管理しやすいデータベースの生態学的ツール。

言うまでもなく、tiupはこのプロファイルに適合するツールです。ワンクリックでプライベートライブラリを構築し、ワンクリックで最小のクラスターを実行し、ワンクリックでTiDBクラスター全体を管理し、ワンクリックでTiDBクラスターの拡張と縮小を行います。ただし、一見単純に見えることの背後には機能的なトレードオフがあります。たとえばtiup mirror、コマンドラインでのみ操作でき、ブラウザでパッケージを公開および削除できるNexusのようなインターフェイスツールはありません。別の例として、tiupの最も一般的に使用されるシナリオは、通常のマシンで実行されていTiDB Operatorます。k8s環境用のツールはありますが、ECSのバッチ操作の機能やケースはほとんどありません。つまり、実用性を維持することを前提に、tiupがより強力になることを願っています。

この記事では、最新バージョンのtiupをデモンストレーションとして使用しています。この記事を書く際に、私はtiupの公開情報を収集し、読者に最新の有用な記事を提供することを期待して、コンテンツの重複排除と削除を試みました。

本のオープニングが有益でありますように、ありがとう!

おすすめ

転載: juejin.im/post/7086655450027917325