暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

还在用Mysql?快来使用开源分布式关系型数据库TIDB吧

devops运维先行者 2021-10-11
377

1 TIDB 简介

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

TIDB 的五大核心特性:

  • 一键水平扩容或者缩容

得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。

  • 金融级高可用

数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。

  • 实时 HTAP

提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。

  • 云原生的分布式数据库

专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。

  • 兼容 MySQL 5.7 协议和 MySQL 生态

兼容 MySQL 5.7 协议、MySQL 常用的功能、MySQL 生态,应用无需或者修改少量代码即可从 MySQL 迁移到 TiDB。提供丰富的数据迁移工具帮助应用便捷完成数据迁移。

2 环境说明

本期文章主要记录TIDB的部署运维,本篇幅主要是裸金属主机TIUP部署方式,下篇将进行k8s TiDB Operator的部署方式。

主机列表

IP主机名配置角色
172.16.5.105tidb-01centos 7.9 4c + 8G + 80G(sys) + 500G(data)pd_servers、tidb_servers、monitoring_servers、grafana_servers、alertmanager_servers
172.16.5.106tidb-024c + 8G + 80G(sys) + 500G(data)pd_servers、tidb_servers
172.16.5.107tidb-034c + 8G + 80G(sys) + 500G(data)pd_servers、tidb_servers
172.16.5.108tidb-0416c + 32G + 80G(sys) + 500G(data)tikv_servers、cdc_servers
172.16.5.109tidb-0516c + 32G + 80G(sys) + 500G(data)tikv_servers、cdc_servers
172.16.5.110tidb-0616c + 32G + 80G(sys) + 500G(data)tikv_servers、cdc_servers
172.16.5.111tidb-0732c + 64G + 80G(sys) + 500G(data)tiflash_servers

TIDB的软硬件环境需求可以查看官方文档,这里参考的是开发及测试环境配置,如果是生产环境,配置能高就高一点。

3 系统初始化

3.1 数据盘格式化

建议使用 EXT4 类型文件系统的 NVME 类型的 SSD 磁盘存储 TiKV 数据文件。

1.查看数据盘

#fdisk -l

Disk dev/vdb: 536.9 GB

2.创建分区

#parted -s -a optimal /dev/vdb mklabel gpt -- mkpart primary ext4 1 -1

3.格式化文件系统

#mkfs.ext4 /dev/vdb1

4.查看数据盘分区 UUID

#lsblk -f

    NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
    vda
    └─vda1 ext4 c98d22a0-1a27-418e-91aa-d6181612a8be /
    vdb
    └─vdb1 ext4 24b4edf5-ad74-4f43-ac79-31fec6539b0f
    复制

    5.编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数

    #vi /etc/fstab

      UUID=24b4edf5-ad74-4f43-ac79-31fec6539b0f /data1 ext4 defaults,nodelalloc,noatime 0 2
      复制

      6.挂载数据盘

      #mkdir /data1 && mount -a

      7.执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc,则表示已生效

      #mount -t ext4

        /dev/vdb1 on /data1 type ext4 (rw,noatime,nodelalloc,data=ordered)
        复制

        由于使用的是阿里云ECS主机,无需关闭swap、防火墙及安装NTP服务。

        3.2 系统参数调整

          #关闭透明大页
          echo never > /sys/kernel/mm/transparent_hugepage/enabled
          echo never > /sys/kernel/mm/transparent_hugepage/defrag
          echo 'if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
          echo never > /sys/kernel/mm/transparent_hugepage/enabled
          fi
          if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
          echo never > /sys/kernel/mm/transparent_hugepage/defrag
          fi' >> /etc/rc.d/rc.local
          复制
            #系统参数调整
            echo "fs.file-max = 1000000">> /etc/sysctl.conf
            echo "net.core.somaxconn = 32768">> /etc/sysctl.conf
            echo "net.ipv4.tcp_tw_recycle = 0">> /etc/sysctl.conf
            echo "net.ipv4.tcp_syncookies = 0">> /etc/sysctl.conf
            echo "vm.overcommit_memory = 1">> /etc/sysctl.conf
            sysctl -p
            复制
              #执行以下命令配置用户的 limits.conf 文件
              cat << EOF >>/etc/security/limits.conf
              tidb soft nofile 1000000
              tidb hard nofile 1000000
              tidb soft stack 32768
              tidb hard stack 32768
              EOF
              复制

              3.3 手动配置 SSH 互信及 sudo 免密码

              1.以 root 用户依次登录到部署目标机器创建 tidb 用户并设置登录密码

              useradd tidb && passwd tidb

              2.执行以下命令,将 tidb ALL=(ALL) NOPASSWD: ALL 添加到文件末尾,即配置好 sudo 免密码

              #visudo

                tidb ALL=(ALL) NOPASSWD: ALL
                复制

                3.免密配置

                TIUP主机tidb用户操作,这里使用172.16.5.105主机作为后续TIUP的部署主机

                #su - tidb

                  ssh-keygen -t rsa
                  ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.5.105
                  ssh-copy-id -i ~/.ssh/id_rsa.pub 其余主机XXX
                  复制

                  3.4 安装 numactl 工具

                  NUMA 绑核是用来隔离 CPU 资源的一种方法,适合高配置物理机环境部署多实例使用。

                  通过 tiup cluster deploy 完成部署操作,就可以通过 exec 命令来进行集群级别管理工作。

                  yum -y install numactl

                  3.5 启动irqbalance服务

                    systemctl start irqbalance
                    systemctl enable irqbalance
                    复制

                    3.6 创建数据文件路径

                    mkdir -p /data1/tidb-deploy /data1/tidb-data

                    4 TIUP部署

                    TIDB主机172.16.5.105

                    4.1 安装TIUP

                    #su - tidb

                      curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
                      source .bash_profile
                      tiup cluster
                      tiup --binary cluster
                      复制

                      4.2 配置集群拓扑文件

                      #vi topology.yaml

                        global:
                        user: "tidb"
                        ssh_port: 22
                        deploy_dir: "/data1/tidb-deploy"
                        data_dir: "/data1/tidb-data"
                        server_configs: {}
                        pd_servers:
                        - host: 172.16.5.105
                        - host: 172.16.5.106
                        - host: 172.16.5.107
                        tidb_servers:
                        - host: 172.16.5.105
                        - host: 172.16.5.106
                        - host: 172.16.5.107
                        tikv_servers:
                        - host: 172.16.5.108
                        - host: 172.16.5.109
                        - host: 172.16.5.110
                        cdc_servers:
                        - host: 172.16.5.108
                        - host: 172.16.5.109
                        - host: 172.16.5.110
                        tiflash_servers:
                        - host: 172.16.5.110
                        monitoring_servers:
                        - host: 172.16.5.105
                        grafana_servers:
                        - host: 172.16.5.105
                        alertmanager_servers:
                        - host: 172.16.5.105
                        复制

                        4.3 TIDB部署

                        1.检查和自动修复集群存在的潜在风险

                          tiup cluster check ./topology.yaml --user tidb
                          tiup cluster check ./topology.yaml --apply --user tidb
                          复制

                          2.deploy部署TIDB集群

                            tiup cluster deploy tidb-test v5.2.1 ./topology.yaml --user tidb
                            复制

                            日志结尾输出会有 Deployed cluster tidb-test
                            successfully 关键词,表示部署成功

                            3.查看集群情况:tiup cluster list

                            4.检查集群情况:tiup cluster display tidb-test
                            (默认集群名为tidb-test)

                            5.启动集群:tiup cluster start tidb-test

                            6.再次检查集群情况:tiup cluster display tidb-test
                            ,正常的话应该都是UP状态

                            7.查看dashboard地址:tiup cluster display tidb-test --dashboard

                            本次环境的dashboard为http://172.16.5.107:2379/dashboard/,默认账户密码为root,无密码直接登录,为保证安全,需配置root密码

                            4.4 配置TIDB root密码

                            1.通过mysql客户端登录tidb

                            没有mysql客户端的可以安装,yum install mysql -y

                            #mysql -P 4000 -h172.16.5.105 -uroot -p

                              SET PASSWORD FOR 'root'@'%' = '123456'
                              复制

                              root密码就是123456


                              下期将研究k8s TiDB Operator的部署方式,欢迎关注转发~~

                              参考文献

                              1. https://docs.pingcap.com/zh/tidb/stable/overview

                              文章转载自devops运维先行者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论