Slide 1

Slide 1 text

© SAKURA internet Inc. tiupによるTiDBの構築 2024-10-25 @ TiUG Meetup #3 さくらインターネット 技術推進統括担当 執行役員 / CIO / CISO 江草 陽太

Slide 2

Slide 2 text

2 自己紹介 @chibiegg 江草 陽太 【所属】 • さくらインターネット (株) 2014年新卒入社 執行役員 技術推進統括担当 兼 CISO 兼 CIO • BBSakura Networks (株) 取締役 【経歴】 • ヴィアトール学園 洛星中学・高等学校 • 大阪大学工学部電子情報工学科情報通信工学専攻 • 個人事業主 (大学生時代に開業) • 大阪大学大学院工学研究科中退 【外部】 • U-22プログラミングコンテスト実行委員長 • HomeNOC (AS59105) など 【趣味】 旅行/温泉/写真/電子工作/プログラミング/かわいい服

Slide 3

Slide 3 text

© SAKURA internet Inc. 今日の内容 •さくらインターネットでのTiDBの利用 •TiUPの紹介 •さくらのクラウドでのTiDB構築 •スケールアウト • マルチリージョンクラスタの構築

Slide 4

Slide 4 text

© SAKURA internet Inc. 4 TiDBの運用経歴 2021年 4月 石狩リージョンに構築 (v5.0.0) 6月 v5.1.0 にアップデート 7月 v5.1.1 にアップデート (EDB提供開始) 2022年 1月 v5.3.0 にアップデート 5月 v5.4.1 にアップデート 10月 v6.1.1 にアップデート 2023年 3月 v6.5.1 にアップデート 4月 東京リージョンでの提供開始 6月 v7.1.0 にアップデート 7月 TiFlashノードを構築 (自社利用目的) 10月 v7.1.1 にアップデート 10月 v7.1.2 にアップデート 2024年 1月 v7.5.0 にアップデート 9月 v8.1.1 にアップデート LTSでのアップデートを実施

Slide 5

Slide 5 text

© SAKURA internet Inc. さくらインターネットでのTiDBの活用

Slide 6

Slide 6 text

© SAKURA internet Inc. 6 TiKV/TIDB の さくらインターネットでの導入 • sakura.io (LTEによるIoTプラットフォーム) 2020年より「データストア(V2)」でTiKVを採用 端末 (モジュール) からのデータを蓄積し検索に利用 NewSQL TiDBを支える分散KVS "TiKV"入門 / @kamijin_fanta https://blog.kamijin-fanta.info/2022/09/tikv-get-started/ • さくらのクラウド 2021年より「エンハンスドデータベース(TiDB)」を提供開始 各種機能やSaaSサービス、社内システムでも利用 これまでならMariaDBやPostgreSQLを利用していた場面に導入

Slide 7

Slide 7 text

© SAKURA internet Inc. さくらのクラウド エンハンスドデータベース (TiDB)

Slide 8

Slide 8 text

© SAKURA internet Inc. 8 エンハンスドデータベース (TiDB) 石狩と東京で運用されているTiDBクラスタを共用で提供 データベース名とパスワードを指定するだけで作成可能 数秒で利用可能 独自のMySQLプロキシ等を開発することにより実現

Slide 9

Slide 9 text

© SAKURA internet Inc. 1. 「さくらのクラウド」にログイン 2. 作成したいデータベース名とパスワードを入力 3. 即時に利用可能 自分でクラスタを作らなくても 利便性を感じて欲しい

Slide 10

Slide 10 text

© SAKURA internet Inc. データベースの作成

Slide 11

Slide 11 text

© SAKURA internet Inc. 情報の確認

Slide 12

Slide 12 text

© SAKURA internet Inc. 接続 SSL対応! --ssl-mode=VERIFY_IDENTITY も使えます

Slide 13

Slide 13 text

© SAKURA internet Inc. エンハンスドDB のメリット • すぐに使える • 5秒で作れる • 容量を気にせず利用できる • 使っている容量に応じて課金される • 最初から大きなディスクを用意しなくて良い • スペックを意識せずに利用できる • 同時接続数を後から増減できる • アップグレードやノード障害を意識しなくて良い • コネクションが切れてもすぐに再接続ができる

Slide 14

Slide 14 text

© SAKURA internet Inc. 14 EDBの構築と運用の流れ • Terraform + SacloudProvider でサーバ等のリソース作成 • Ansibleで基本的なOSのセットアップ • tiup でクラスタの構築やメンテナンス • 日常的には tiup のみを利用すればよい • tiproxyをtidbの前に挟むことで、 tidbのアップデート時の既存の接続は維持される • 新しいTLS証明書はDB内にINSERT (現時点では手動)

Slide 15

Slide 15 text

© SAKURA internet Inc. Slack BotのDBとして (Golang + ent) • Golang + go-sql-driver/mysql + ent で実装 • Slack/Discord内のユーザー間で立て替えの管理を支援するBot

Slide 16

Slide 16 text

© SAKURA internet Inc. ウェブアプリケーションのDBとして (Python + Django) • Python + Django で実装 • ウェブフレームワークのORMをそのまま利用できる • ひなたん写真館 「フィルムデジタル化サービス」 https://service.hinatan.net/

Slide 17

Slide 17 text

© SAKURA internet Inc. https://www.sakura.ad.jp/taqbin/

Slide 18

Slide 18 text

集荷と持ち込み

Slide 19

Slide 19 text

管理機能

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

ライブ・録画・イベント記録

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

© SAKURA internet Inc. TiUP の紹介

Slide 24

Slide 24 text

© SAKURA internet Inc. TiUPとは • 公式のメンテナンスツール • 構築・検査・スケール・アップデートなどが可能 • tiup cluster プラグインにより、TiDBクラスタの管理ができる

Slide 25

Slide 25 text

© SAKURA internet Inc. さくらのクラウドでTiDBを構築する

Slide 26

Slide 26 text

© SAKURA internet Inc. 必要なノード https://docs.pingcap.com/tidb/stable/hardware-and-software-requirements Component CPU Memory Local Storage Network Number of Instances TiDB 8 core+ 16 GB+ Disk space requirements (脚注 30GB) Gigabit network card 1 (can be deployed on the same machine with PD) PD 4 core+ 8 GB+ SAS, 200 GB+ Gigabit network card 1 (can be deployed on the same machine with TiDB) TiKV 8 core+ 32 GB+ SAS, 200 GB+ Gigabit network card 3 TiFlash 32 core+ 64 GB+ SSD, 200 GB+ Gigabit network card 1 TiCDC 8 core+ 16 GB+ SAS, 200 GB+ Gigabit network card 1

Slide 27

Slide 27 text

© SAKURA internet Inc. 今回の構成 インターネット PD/TiDB TiKV メンテ用 VPNルータ ローカル 192.168.100.0/24 .11 .23 .22 .21 .1

Slide 28

Slide 28 text

© SAKURA internet Inc. サーバの作成 • Terraform + SakuraCloud-Provider によりサーバ作成をする • Ansibleにより、OSの設定を行う • Ubuntu 24.04 LTS をセットアップ • adminユーザーで公開鍵認証によりSSH接続できる状態にしておく • sudoがパスワードなしで実行できる状態にしておく

Slide 29

Slide 29 text

© SAKURA internet Inc. TiUPによる新規構築 • SSHでサーバに入れる環境において • YAMLファイルに設定を書いて tiup を実行 • セットアップが終わったらクラスタを開始 • PrometheusやTiDB Dashboardも入る pd_servers: - host: 192.168.100.11 name: pd-01 tidb_servers: - host: 192.168.100.11 tikv_servers: - host: 192.168.100.21 - host: 192.168.100.22 - host: 192.168.100.23 grafana_servers: [] monitoring_servers: [] $ tiup cluster start prod-cluster --init $ export TIUP_COMPONENT_DATA_DIR=./cluster-state/ (※) $ tiup cluster check topology.yaml $ tiup cluster deploy -p prod-cluster v8.1.1 topology.yaml \ --ssh=system --user admin SystemのSSHを利用すると 1Password のSSH Agentなども使える ProxyJumpでの多段SSHも動くはず ※) この環境変数により、git でのリポジトリ管理ができるようになる ProxyJumpは使えるが、 --init が動作しない

Slide 30

Slide 30 text

© SAKURA internet Inc. tiup cluster check Node Check Result Message ---- ----- ------ ------- 192.168.100.21 memory Pass memory size is 16384MB 192.168.100.21 sysctl Fail net.ipv4.tcp_syncookies = 1, should be 0 192.168.100.21 thp Pass THP is disabled 192.168.100.21 permission Pass /home/tidb/deploy/tikv-20160 is writable 192.168.100.21 permission Pass /home/tidb/deploy/tikv-20160/data is writable 192.168.100.21 os-version Warn OS is Ubuntu 20.04.6 LTS 20.04.6 (ubuntu support is not fully tested, be careful) 192.168.100.21 cpu-governor Warn Unable to determine current CPU frequency governor policy 192.168.100.21 selinux Pass SELinux is disabled 192.168.100.21 service Pass service firewalld not found, ignore 192.168.100.21 command Pass numactl: policy: default 192.168.100.21 timezone Pass time zone is the same as the first PD machine: Asia/Tokyo 192.168.100.21 cpu-cores Pass number of CPU cores / threads: 4 192.168.100.21 limits Fail soft limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.21 limits Fail hard limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.21 limits Fail soft limit of 'stack' for user 'tidb' is not set or too low 192.168.100.22 memory Pass memory size is 16384MB 192.168.100.22 limits Fail soft limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.22 limits Fail hard limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.22 limits Fail soft limit of 'stack' for user 'tidb' is not set or too low 192.168.100.22 command Pass numactl: policy: default 192.168.100.22 timezone Pass time zone is the same as the first PD machine: Asia/Tokyo 192.168.100.22 os-version Warn OS is Ubuntu 20.04.6 LTS 20.04.6 (ubuntu support is not fully tested, be careful) 192.168.100.22 cpu-governor Warn Unable to determine current CPU frequency governor policy 192.168.100.22 sysctl Fail net.ipv4.tcp_syncookies = 1, should be 0 192.168.100.22 selinux Pass SELinux is disabled 192.168.100.22 thp Pass THP is disabled 192.168.100.22 service Pass service firewalld not found, ignore 192.168.100.22 permission Pass /home/tidb/deploy/tikv-20160 is writable 192.168.100.22 permission Pass /home/tidb/deploy/tikv-20160/data is writable 192.168.100.22 cpu-cores Pass number of CPU cores / threads: 4 192.168.100.23 sysctl Fail net.ipv4.tcp_syncookies = 1, should be 0 192.168.100.23 selinux Pass SELinux is disabled 192.168.100.23 thp Pass THP is disabled 192.168.100.23 service Pass service firewalld not found, ignore 192.168.100.23 timezone Pass time zone is the same as the first PD machine: Asia/Tokyo 192.168.100.23 permission Pass /home/tidb/deploy/tikv-20160 is writable 192.168.100.23 permission Pass /home/tidb/deploy/tikv-20160/data is writable 192.168.100.23 cpu-governor Warn Unable to determine current CPU frequency governor policy 192.168.100.23 memory Pass memory size is 16384MB 192.168.100.23 os-version Warn OS is Ubuntu 20.04.6 LTS 20.04.6 (ubuntu support is not fully tested, be careful) 192.168.100.23 cpu-cores Pass number of CPU cores / threads: 4 192.168.100.23 limits Fail hard limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.23 limits Fail soft limit of 'stack' for user 'tidb' is not set or too low 192.168.100.23 limits Fail soft limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.23 command Pass numactl: policy: default 192.168.100.11 limits Fail soft limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.11 limits Fail hard limit of 'nofile' for user 'tidb' is not set or too low 192.168.100.11 limits Fail soft limit of 'stack' for user 'tidb' is not set or too low 192.168.100.11 sysctl Fail net.ipv4.tcp_syncookies = 1, should be 0 192.168.100.11 thp Pass THP is disabled 192.168.100.11 cpu-cores Pass number of CPU cores / threads: 4 192.168.100.11 memory Pass memory size is 8192MB 192.168.100.11 cpu-governor Warn Unable to determine current CPU frequency governor policy 192.168.100.11 selinux Pass SELinux is disabled 192.168.100.11 service Pass service firewalld not found, ignore 192.168.100.11 command Pass numactl: policy: default 192.168.100.11 permission Pass /home/tidb/deploy/pd-2379 is writable 192.168.100.11 permission Pass /home/tidb/deploy/pd-2379/data is writable 192.168.100.11 permission Pass /home/tidb/deploy/tidb-4000 is writable 192.168.100.11 os-version Warn OS is Ubuntu 20.04.6 LTS 20.04.6 (ubuntu support is not fully tested, be careful) Checking region status of the cluster prod-cluster... All regions are healthy.

Slide 31

Slide 31 text

© SAKURA internet Inc. tiup cluster deploy

Slide 32

Slide 32 text

© SAKURA internet Inc. tiup cluster deploy

Slide 33

Slide 33 text

© SAKURA internet Inc. tiup cluster deploy

Slide 34

Slide 34 text

© SAKURA internet Inc. tiup cluster start

Slide 35

Slide 35 text

© SAKURA internet Inc. TiUPによる行われること • tidb ユーザーの作成 • /home/tidb/deploy 以下にデプロイ • /home/tidb/deploy/tidb-4000/bin • /home/tidb/deploy/tidb-4000/data • etc. • systemd へのサービス登録

Slide 36

Slide 36 text

© SAKURA internet Inc. TiUPによるバージョンのアップデート • tiup update コマンドでOK $ tiup cluster update prod-cluster v8.1.1

Slide 37

Slide 37 text

© SAKURA internet Inc. TiUPによるスケールアウト (ノードの追加) • 追加するノードの情報をYAMLに書く • tiup scale-out コマンドを実行する $ tiup cluster scale-out prod-cluster nodeinfo.yaml \ --user admin --ssh system tidb_servers: - host: 192.168.100.12 tikv_servers: - host: 192.168.100.24

Slide 38

Slide 38 text

© SAKURA internet Inc. tiup cluster scale-out

Slide 39

Slide 39 text

© SAKURA internet Inc. 40 Dashboard http://192.168.100.11:2379/dashboard

Slide 40

Slide 40 text

© SAKURA internet Inc. マルチリージョンクラスタ

Slide 41

Slide 41 text

© SAKURA internet Inc. TiDBのコンポーネント https://docs.pingcap.com/tidb/stable/tidb-architecture から改変 • 3要素が基本 • PD (Placement Driver) • クラスタの頭脳 • データ配置の決定 • トランザクションの管理 etc. • TiDB (SQL Layer) • SQLを解釈し処理を行う • TiKV (Storage Layer) • レコードやインデックスを Key-Valueとして保存する • トランザクションに対応

Slide 42

Slide 42 text

© SAKURA internet Inc. マルチリージョンの設計 •石狩第一/東京第一/東京第二 •それぞれのゾーンに • PD x 3 • TiDB x 3 • TiKV x 3 https://docs.pingcap.com/ja/tidb/stable/three-data-centers-in-two-cities-deployment

Slide 43

Slide 43 text

© SAKURA internet Inc. マルチリージョンの設計 https://docs.pingcap.com/ja/tidb/stable/three-data-centers-in-two-cities-deployment

Slide 44

Slide 44 text

© SAKURA internet Inc. マルチリージョンの設計 https://docs.pingcap.com/ja/tidb/stable/three-data-centers-in-two-cities-deployment

Slide 45

Slide 45 text

© SAKURA internet Inc. マルチリージョンのダッシュボード (ちょっとドキュメントと違う状態)