TiDB実践入門
── RDBMSのスケール課題を解消するNewSQL

[表紙]TiDB実践入門 ── RDBMSのスケール課題を解消するNewSQL

紙版発売

B5変形判/384ページ

定価3,740円(本体3,400円+税10%)

ISBN 978-4-297-14832-4

電子版
  • 電子化の予定があります

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

本書はTiDBの基本的なアーキテクチャをはじめ,様々な環境へのTiDBのインストール手順について解説します。インストールが終われば,次に必要なことはTiDBに対する各種操作方法を理解することです。各環境におけるTiDBに対する操作方法をインストール手順の後に詳細に解説していきます。加えて,MySQLを運用していく上でよくある課題を具体的に挙げながらTiDBがどのように課題を解決するのかを解説します。最後に付録としてよく使うコマンド操作や逆引きコマンドリファレンスを記述していますので,読者の皆様の参考になることを願っています。

この本を通じて,現代の多様なインフラニーズに対応するTiDBを使用したモダンなデータベース運用の実践方法を理解し,ご自身のシステムに応用できる知識を習得することができます。

こんな方におすすめ

  • 本書はMySQLをはじめとする従来のRDBMSの運用面や性能面の限界に直面しているエンジニアや,スケーラブルで高可用なデータベースソリューションを求めているシステム管理者,開発者に最適です
  • また,クラウドネイティブな環境でのデータベース運用に興味がある方や,最新のデータベース技術を学びたいと考えている技術者にも役立つ内容となっています
著者プロフィール

長谷川誠(はせがわまこと)

インフラエンジニアとして豊富な経験を持ち,これまでに大規模なクラウド移行プロジェクトやオンプレミスとパブリッククラウドのハイブリッド環境構築など,さまざまなインフラ構築,運用を経験。特に可用性とスケーラビリティの高いシステム設計に注力し,多くの信頼性の高いインフラ環境を実現してきた。その豊富な経験を基に,クラウドネイティブ技術やモダナイゼーションにも精通し,さまざまなコミュニティ活動およびオープンソースへの貢献に積極的に取り組んでいる。また,国内外でのカンファレンス登壇も積極的に行っている。

2021年よりPingCAP日本法人において技術顧問を務め,TiDBユーザーコミュニティを立ち上げ,多くの技術情報を発信している。

共著書として『Kubernetesの知識地図』(技術評論社刊)を執筆。

趣味はベースの演奏であり,技術と音楽の双方に情熱を持つエンジニアとして活動中。

監修者プロフィール

本多康夫(ほんだやすお)

データベース製品のコンサルタント,DBA,Webアプリケーションエンジニア,BI製品のテクニカルサポートエンジニアなど,開発から運用まで幅広い業務に携わる経験を持つ。2020年に始まったDatabase Internals輪読会をきっかけにTiDBを知り,その後2021年にPingCAP株式会社に入社,現在はTechnical Support EngineerとしてTiDBユーザーのサポートや資格試験,トレーニング資料の準備にあたる。また,データベースに関連する深い知識やこれまでの経験を生かし,国内におけるTiDBの普及活動を積極的に行っている。

この書籍に関連する記事があります!

著者の一言

本書のサンプル

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

サンプル画像6

目次

第1章 TiDBが必要とされるデータベースのいま
── データベースの変遷とTiDBの特徴

1-1 TiDBとは

    • Column:OSS Insightを支えるTiDB
  • TiDBのリリースおよびバージョン表記
  • TiDBの歴史
    • Column:Spannerを参考に生まれてきた他のソフトウェア
  • PingCAPについて

1-2 NewSQLとは

  • RDBMSの特徴
    • Column:シャーディングとは
  • NoSQLの特徴
  • なぜNewSQLが必要とされているのか
  • NewSQLの特徴
    • Column:ACID特性とは
    • Distributed SQL(分散SQL)

1-3 TiDBの特徴

  • コマンドラインツールTiUPによるオペレーションが強力
  • 書き込み用のエンドポイントの冗長化が容易
  • シャーディングが不要
  • バージョンアップが容易
  • 効率の良いスケールが可能
  • データ反映の遅延を気にしなくて良い
  • タイムトラベルクエリが可能
    • Column:MVCCとは
  • モニタリング環境および組み込みダッシュボードが提供されている
  • レイテンシーの増加傾向を抑える機能が提供されている
  • HTAPをサポートしている
  • リクエストユニットによるリソース制御が可能
  • TTLによるデータの自動削除が可能
  • MySQLと高い互換性がある

1-4 TiDBの提供形態

  • TiDB Cloud
  • TiDB Self-Managed
  • TiDB Community
    • Column:エンタープライズ版とオープンソース版の機能の違い
  • 利用目的での比較

1-5 まとめ

第2章 TiDBを構成するコンポーネント
── 可用性と拡張性が高い分散システム

2-1 TiDBの構成

2-2 TiDBクラスター

  • TiKVにアクセスする際のSQLの変換
  • TiFlashへの振り分け
    • Column:EXPLAIN時に表示されるtaskの意味

2-3 PDクラスター

  • データの配置管理
  • TSOの発行
    • Column:TiDBにおける分散トランザクションを支える技術
    • TiDBクラスターからのTSO発行リクエストの並列化
    • TSOを時刻へ変換
    • 時刻からTSOを生成
  • PDクラスターの死活監視
    • Column:スプリットブレインとは
  • ストレージクラスターの死活監視
  • PDクラスターのパフォーマンス
    • PDマイクロサービスモード
    • Active PD Follower機能

2-4 ストレージクラスター

  • TiKV
    • Column:CNCFについて
    • リージョンとRocksDB
    • RocksDBのTitanプラグイン
  • TiFlash
    • Column:TiFlashで採用されている技術
    • TiFlashを有効にした場合はディスク容量に注意
  • プッシュダウンとコプロセッサー
    • TiKVのコプロセッサー

2-5 TiProxyコンポーネント

  • TiProxyの仕組み
  • 効果的にTiProxyを使用するために必要なこと
    • graceful-wait-before-shutdownの設定
    • systemdのTimeoutStopSecの設定
    • TiUP操作時の待機時間の設定
    • Kubernetes環境におけるterminationGracePeriodSecondsの設定
    • 自己証明書の作成
    • TiDB全体のバージョンアップ時にTiProxyを除外しておく
  • TiProxyのパフォーマンス
  • TiProxyの制約事項

2-6 まとめ

第3章 仮想/物理サーバーへのTiDBの構築
── TiUPを使った構築と操作

3-1 TiUPの基本

  • TiUPをインストールする
    • Column:インストール手順で使用したコマンドの説明
  • シェルの補完機能を使用する
  • TiUPをバージョンアップする
  • 使用するTiUPのバージョンを管理する
  • TiUPのデータ保存先を変更する
  • TiUPが使用する環境変数を確認する

3-2 TiDB Playgroundの使い方

  • TiDB Playgroundを起動する
  • 起動するTiDBバージョンを指定する
  • タグを指定してTiDB Playgroundを起動する
    • タグを利用したデータの永続化
    • タグを使用しても前回起動時に指定した構成情報は引き継がれない
    • Column:自動生成されるタグはどのように生成されているのか
  • 特定の設定を読み込ませてTiDB Playgroundを起動する
  • TiDB Playgroundで起動するコンポーネントを調整する
    • モニタリングコンポーネントの起動の抑制
    • 各種コンポーネントのスケールアウトとスケールイン
    • 各種コンポーネントの起動数の指定
    • TiProxyを使用した接続
  • TiDB Playgroundのデータをクリーンアップする
  • TiKVのPlaygroundを起動する

3-3 TiUPを使用した仮想サーバーまたは物理サーバーへのTiDBの構築

  • サーバー環境を準備する
  • サーバー環境を元にトポロジーファイルを作成する
  • TiUP実行時のsshログイン方法を指定する
  • トポロジーファイルを元に構成のチェックをする
  • トポロジーファイルを元にTiDBを構築する
    • データベースのrootパスワードを紛失した場合
    • TiDB構築時における特定の設定の反映
  • 現在のトポロジー状態をファイルに保存する
  • TiUPの同時実行数を変更する

3-4 各種コンポーネントのスケールアウトとスケールイン

  • 各種コンポーネントをスケールアウトする
  • 各種コンポーネントをスケールインする

3-5 TiDB Dashboardの構築

  • TiDB Dashboardに接続する
  • TiDB Dashboardを無効化する
    • 稼働しているTiDBおよびTiDB Playground
    • TiDB構築時およびTiDB Playground起動時
  • TiDB Dashboardを担当しているPDサーバーを切り替える

3-6 モニタリング環境の構築

  • PrometheusおよびGrafanaのバージョンを確認する
  • TiDB Playgroundでモニタリング環境の起動を抑制する

3-7 TiDBのライフサイクル操作

  • TiDBを停止する
  • TiDBを再起動する
  • TiDBを削除する
    • 削除時のデータやログの保持
  • OS起動時のプロセス自動起動の有効/無効を切り替える
  • コンポーネントやノードを指定して操作する
  • 操作の履歴および操作内容の詳細を確認する
    • 操作履歴の内容を再現する
    • 操作履歴を削除する

3-8 TiDBのバージョンアップ

  • バージョンアップ前に確認するべきこと
  • オンラインでバージョンアップする
  • オフラインでバージョンアップする

3-9 クラスターメタ情報のバックアップ

3-10 デモ用データセットの作成

3-11 まとめ

第4章 Kubernetes環境へのTiDBの構築
── TiDB Operatorを使った構築と操作

4-1 Kubernetes環境の準備

  • kubectlをインストールする
  • kindを使用してKubernetes環境を準備する
  • minikubeを使用してKubernetes環境を準備する

4-2 TiDB Operatorのインストール

  • カスタムリソース定義をインストールする
    • Column:TiDBクラスターオートスケーラーについて
  • Helmを使用してTiDB Operatorをインストールする
    • TiDB Operatorのインストール時に設定可能なオプション

4-3 TiDB Operatorを使用したTiDBの構築

  • マニフェストファイルを作成して適用する
  • 構築したTiDBへ接続する
    • Kubernetesクラスター内からの接続
    • Kubernetesクラスター外からの接続
    • ポートフォワーディングを使用した接続
  • 各種コンポーネントをスケールアウト,スケールインする
  • 各種コンポーネントをスケールアップ,スケールダウンする
  • TiProxyを構築する
  • TiFlashを構築する
  • TiDB Dashboardを構築する
  • モニタリング環境を構築する
  • NgMonitoringを有効化する
  • バージョンアップする
    • TiDBのバージョンアップ
    • TiDB Operatorのバージョンアップ

4-4 ログの確認

  • コンポーネントのログを確認する
  • スローログを確認する

4-5 初期パスワードとイニシャライズ

4-6 TiDBの削除

4-7 TiDB Operatorのアンインストール

4-8 まとめ

第5章 TiDB Cloudの利用
── TiDBのマネージドサービスを利用して運用負荷を軽減

5-1 TiDB Cloud Serverless

  • 高可用性を選択する
    • Column:パブリッククラウドのリージョンとアベイラビリティゾーン
  • TiDB Cloud Serverless Branchingを使用して
  • データやスキーマを別々に管理する
  • ベクトル検索機能を使用する
  • TiDB Cloud Serverlessのアーキテクチャーを理解する

5-2 TiDB Cloud Dedicated

  • ビルトインアラート機能
  • ノードグループ機能

5-3 TiDB Cloudの始め方

  • サインインして初期クラスターを確認する
  • 組織とプロジェクトを確認する
    • タイムゾーンの設定
    • ユーザーとロールの設定
    • 請求情報の設定
  • アカウントを設定する
  • クラスター概要画面を表示する
  • SQL Editorを使用する
  • ブランチを使用してデータとスキーマを別々に管理する
    • Column:コピーオンライトとは
  • データをバックアップおよび復元する
    • TiDB Cloud Serverlessの場合
    • TiDB Cloud Dedicatedの場合
  • ビルトインアラート機能を使用する
  • サードパーティメトリクスと連携する
  • クラスターを削除する

5-4 TiDB Cloudの稼働状況の確認

5-5 TiDB Cloud CLIの使い方

  • インストールする
    • インストールスクリプトを使用してインストール
    • TiUPを使用してインストール
  • プロファイルを作成する
  • プロファイルを直接編集する
  • OAuthによる認証を使用する
  • APIキーによる認証を使用する
  • プロファイルを切り替える
  • プロファイルを更新する
  • プロファイルを削除する
  • TiDB Cloud Serverlessのクラスターを操作する
    • 作成
    • 削除
    • クラスターへの接続
    • ブランチの操作
    • SQLユーザーの操作
    • 月額限度額の設定
  • GitHub ActionsでTiDB Cloud CLIを使用する

5-6 まとめ

第6章 TiDBのデータ運用ツール
── バックアップとリストア,同期,移行

6-1 バックアップとリストア

  • BRを使用する
    • BR実行時のパフォーマンスへの影響
    • BRによるバックアップの仕組み
    • BRのインストール
    • スナップショットバックアップ
    • Column:SSTファイル名について
    • ログバックアップ
    • スナップショットからのリストア
    • ポイントインタイムリストア
  • Kubernetes環境でBRを使用してバックアップとリストアをする
    • Backupリソースの定義
    • BackupScheduleリソースの定義
    • Restoreリソースの定義
  • Dumplingを使用してデータをエクスポートする
    • Dumplingのインストール
    • TiDBまたはMySQLからのエクスポート
    • 外部ストレージにエクスポートする
  • TiDB Lightningを使用してデータをインポートする
    • TiDB Lightningのインストール
    • IMPORT INTO構文とTiDB Lightning
    • 物理インポートモード
    • 論理インポートモード
    • 設定ファイルを使用した実行
    • Webインターフェース経由での実行

6-2 TiCDCによるTiDB外へのデータ同期

  • TiCDCクライアントをインストールする
  • TiDB PlaygroundでTiCDCを起動する
  • TiUPを使用してTiCDCを構築する
  • 外部ストレージへデータを同期する
  • Apache Kafka,Apache Pulsarへデータを同期する
  • 設定ファイルを使用してチェンジフィードを作成する
  • 双方向レプリケーションを有効にして
  • 複数台アクティブなTiDBを構築する
    • BDRモードを有効にしたチェンジフィードの作成
    • BDRロールの操作
    • Column:DDLとDML
    • データ同期の確認
    • 3台環境でのBDRモード
  • TiDB Cloudでチェンジフィードを作成する
  • Kubernetes環境へTiCDCをデプロイする

6-3 DMによるデータ移行

  • dmctlをインストールする
  • MySQLを起動して移行用データを用意する
  • TiDB PlaygroundでDMクラスターを作成する
  • DMクラスターにデータソースを追加する
    • TiDB PlaygroundのDMクラスターで
    • パスワードの暗号化を使用する場合
  • DMクラスターに移行タスクを作成する
  • データの移行を確認する
  • Webコンソールを使用してDMクラスターを操作する
  • TiDB Operatorを使用したDMクラスターの構築

6-4 sync-diff-inspectorによるデータ同期の差分確認

    • Column:sync-diff-inspectorとsync_diff_inspector
  • sync_diff_inspectorコマンドをインストールする
  • sync_diff_inspectorコマンドを使用してデータの差分を確認する

6-5 まとめ

第7章 TiDBを便利に使うためのテクニック
── リソース制御,ベクトル検索,監視,パフォーマンス測定

7-1 SQLによるバックアップとリストア

  • BACKUP
  • RESTORE
  • LOAD DATA
  • IMPORT INTO

7-2 ガベージコレクションの設定

  • 保持期間の変更
    • TiKV MVCC In-Memory Engine
  • ガベージコレクションの実行間隔の設定
  • ガベージコレクションの停止

7-3 リソース制御によるマルチテナント環境の構築

  • リソースグループの確認
  • リソースグループの管理
    • ランナウェイクエリの制御
    • バックグラウンドタスクの制御
    • Column:reorg DDLとは
  • リソースグループのバインド
    • ユーザーレベルで行う場合
    • セッションレベルで行う場合
    • クエリレベルで行う場合
  • リクエストユニットの計測
  • リソースグループ制御の無効化

7-4 メタデータロック

7-5 TTLを使用したデータの自動削除

  • TTLの設定
  • TTLのバックグラウンドジョブの設定

7-6 ホットスポットの回避

  • TiDBのAUTO_INCREMENT
    • 次に採番される値の確認
    • 再起動すると払い出される範囲が変更される
  • MySQLと同じ挙動のAUTO_INCREMENT
  • AUTO_RANDOMの使用
    • AUTO_RANDOMの値について
  • 非クラスター化テーブルにおけるSHARD_ROW_ID_BITSの使用

7-7 ベクトル検索機能

  • ベクトル検索が注目されている背景
  • TiDBにおけるベクトル検索

7-8 TerraformによるTiDB Cloudの管理

  • TiDB CloudのAPIキーの取得
  • Terraformの定義

7-9 Advanced StatefulSetを使用したTiDBの構築

  • Advanced StatefulSetの有効化
  • Advanced StatefulSetの使用
  • インデックスの操作

7-10 PrometheusやGrafanaのカスタマイズ

  • Prometheusのカスタマイズ
  • Grafanaのカスタマイズ
  • Alertmanagerのカスタマイズ

7-11 TiDB Dashboardの活用

  • TiDB Dashboardへのログインを制御する
  • SSOを使用したログイン
  • TiDB Dashboardのページ詳細
    • Overview
    • Cluster Info
    • Top SQL
    • SQL Statements
    • Slow Queries
    • Key Visualizer
    • Cluster Diagnostic
    • Monitoring
    • Search Logs
    • Resource Manager
    • Advanced Debugging

7-12 TiUPによるデータベースパフォーマンス測定

  • TPC-C
  • TPC-H
  • CH
  • YCSB
    • TiDBクラスターに対するベンチマーク
    • ストレージクラスターに対するベンチマーク
  • RawSQL
  • より詳細な使い方

7-13 TiDB AI Assistantによるナレッジの検索

7-14 まとめ

付録 逆引きコマンドリファレンス

TiUP

  • コンポーネントの操作
  • シェル補完の操作
  • 操作履歴の操作
  • TiDBの操作
    • 起動と停止
    • スケールアウトとスケールイン
    • 削除
    • バージョンアップ
    • 情報の表示
    • 監査ログの操作
    • メタデータのバックアップと復元
  • TiDB Playgroundの操作
  • デモ用データの操作
  • ベンチマークの実行
  • クライアントツールの実行

TiDB Cloud CLI

  • シェル補完の操作
  • プロファイル操作
  • OAuth認証
  • TiDB Cloud Serverlessの操作
    • ブランチの操作
    • SQLユーザーの操作
    • 月額限度額の操作
    • データインポートの操作
    • データエクスポートの操作
  • プロジェクトの確認
  • TiDB Botに問い合わせる