ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

TiDB 集群部署与 MySQL 兼容性适配实战

TiDB 集群部署与 MySQL 兼容性适配实战 文章目录TiDB 集群部署与 MySQL初始化内核参数优化文件句柄限制时间同步配置免密中控机 163 安装 TiUP创建拓扑文件集群环境预检 自动修复执行 TiDB 集群部署启动集群查看集群状态连通性验证TiDB 适配 Zabbix 参数校验TiDB 集群部署与 MySQL​ TiDB 是一款由 PingCAP 公司设计的开源分布式关系型数据库。它的定位很明确解决传统单机数据库如 MySQL在海量数据和高并发场景下遇到的瓶颈。​ 可以把它看作一个为“大数据”时代而生的 MySQL 增强版它不仅兼容 MySQL 的协议和生态还具备了分布式系统的弹性伸缩和高可用能力。它的核心特性可以总结为以下几点兼容 MySQL迁移平滑TiDB 完全兼容 MySQL 5.7 的协议和语法。这意味着你现有的 MySQL 应用程序基本可以无缝迁移到 TiDB无需修改代码原有的 MySQL 生态工具也都能继续使用。水平弹性扩展告别分库分表这是 TiDB 作为分布式数据库最核心的优势。传统的 MySQL 在数据量大到一定程度后往往需要人工进行复杂的分库分表。而 TiDB 采用了存储与计算分离的架构你可以通过简单地增加节点来实现计算能力或存储容量的在线扩容整个过程对业务完全透明无需停机。HTAP 能力一份数据两种用途TiDB 是典型的HTAP混合事务/分析处理数据库。它内置了两种存储引擎面向在线交易OLTP的行存引擎TiKV以及面向实时分析OLAP的列存引擎TiFlash。这意味着你可以直接对最新的业务数据进行实时分析无需像传统架构那样将数据通过 ETL 工具导入到另一个分析型数据库大大降低了复杂度和延迟。金融级高可用与强一致性数据通过 Multi-Raft 协议在多个节点间同步复制保证了强一致性和高可用性。当少数节点发生故障时系统可以自动恢复能做到 RPO 0数据零丢失和 RTO ≤ 30s恢复时间在30秒内满足金融级场景的严苛要求。初始化IP运行组件192.168.117.163PD1、TiKV1、TiDB-Server1对外访问入口 4000 端口192.168.117.164PD2、TiKV2192.168.117.165PD3、TiKV3192.168.117.162源 MySQL只做数据来源不部署 TiDB 组件实验开始前所有主机需做好域名解析关闭SELinux、防火墙、Swap分区。内核参数优化三台主机部署# vim /etc/sysctl.conffs.file-max1000000vm.swappiness1net.ipv4.tcp_syncookies0# sysctl -p文件句柄限制三台主机部署#vim /etc/security/limits.conf* soft nofile1048576* hard nofile1048576时间同步三台主机部署Rocky9系统时间同步一般会自动配置好如果timedatectl命令发现没有就手动执行设置注意时区选择Aisa/shanghai# dnf install -y chrony# systemctl enable --now chronyd# chronyc sources# timedatectl set-timezone Asia/Shanghai配置免密# 生成密钥一路回车[rootserver3 ~]# ssh-keygen# 推送公钥到所有节点包含自己[rootserver3 ~]# ssh-copy-id root192.168.117.163[rootserver3 ~]# ssh-copy-id root192.168.117.164[rootserver3 ~]# ssh-copy-id root192.168.117.165# 测试免密不需要输入密码即成功[rootserver3 ~]# ssh root192.168.117.164中控机 163 安装 TiUP[rootserver3 ~]# yum install -y tar #这个三台主机都要安装# 在线安装TiUP[rootserver3 ~]# curl --proto https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh# 加载环境变量[rootserver3 ~]# source ~/.bash_profile# 验证安装[rootserver3 ~]# tiup cluster --version这个错误no trusted root in the local manifests表示TIUP 的本地元数据文件损坏或不完整导致无法验证组件的签名。解决方案# 删除 TIUP 的元数据目录[rootserver3 ~]# rm -rf ~/.tiup/manifests# 删除 TIUP 的缓存目录[rootserver3 ~]# rm -rf ~/.tiup/cache# 更新 TIUP 本身[rootserver3 ~]# tiup update --self# 强制重新安装 cluster 组件[rootserver3 ~]# tiup install cluster --force#验证版本[rootserver3 ~]# tiup cluster --version创建拓扑文件[rootserver3 ~]# vim topo-mini.yamlglobal: user: tidb group: tidb ssh_port:22deploy_dir: /tidb-deploy data_dir: /tidb-data arch: amd64 pd_servers: - host:192.168.117.163 - host:192.168.117.164 - host:192.168.117.165 tikv_servers: - host:192.168.117.163 - host:192.168.117.164 - host:192.168.117.165 tidb_servers: - host:192.168.117.163集群环境预检 自动修复# 环境检查先看输出有没有ERROR,一般会有很多报错[rootserver3 ~]# tiup cluster check ./topo-mini.yaml --user root# 执行以下命令自动修复检测到的基础配置问题[rootserver3 ~]# tiup cluster check ./topo-mini.yaml --user root --apply大概到这个程度报错numactl: command not found三台机器都缺少 numactl 工具 → Check Fail问题解决消除Fail错误#三台节点163、164、165统一安装 numactl[rootserver3 ~]# dnf install -y numactl#有正常输出即代表修复成功[rootserver3 ~]# numactl --show消除 disk 警告#修改[rootserver3 ~]# vim /etc/fstab/dev/mapper/rl-root / xfs defaults,noatime00#生效挂载参数[rootserver3 ~]# mount -o remount /[rootserver3 ~]# systemctl daemon-reloadcpu-governor 警告虚拟机环境基本都会出现云主机 / KVM 无法调节 CPU 调频不用处理不影响 TiDB 运行。问题解决后重新检查环境成功[rootserver3 ~]# tiup cluster check ./topo-mini.yaml --user root执行 TiDB 集群部署集群名称tidb-mini稳定版本选择 v6.5.7高度兼容 Zabbix[rootserver3 ~]# tiup cluster deploy tidb-mini v6.5.7 ./topo-mini.yaml --user root -y等待下载组件、远程推送文件、创建 tidb 用户、创建目录。关键信息 Cluster ‘tidb-mini’ deployed successfully 集群已经全部部署完成。启动集群执行初始化启动集群--init参数作用初始化集群生成 root 初始密码控制台会打印出来保存好[rootserver3 ~]# tiup cluster start tidb-mini --init密码8t7i-NG^5s6*ac24E查看集群状态[rootserver3 ~]# tiup cluster display tidb-mini连通性验证[rootserver3 ~]# dnf install mysql -y[rootserver3 ~]# mysql -h 192.168.117.163 -P 4000 -uroot -pmysqlSET PASSWORDwestos;#修改密码mysqlquit;能进入 MySQL 交互界面 TiDB 部署完成访问http://192.168.117.163:2379/dashboard/可以浏览器打开查看集群监控TiDB 适配 Zabbix 参数#关闭快速在线 DDL适配 Zabbix 导入表结构避免创建索引时长时间后台回填、超时卡住mysqlSET GLOBAL tidb_ddl_enable_fast_reorgOFF;#开启事务自动重试缓解 Zabbix 高频短事务遇到写冲突报错mysqlSET GLOBAL tidb_disable_txn_auto_retry0;#sql_mode 对齐 MySQL5.7 标准这条非常关键不修改导入 zabbix.sql 大概率报语法错误mysqlSET GLOBAL sql_modeONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO;mysqlquit;全部执行成功后 退出 mysql 会话重新登录 TiDB全局参数才在新连接生效 之后再执行创建 zabbix 库、创建账号、导入 zabbix 初始化 SQL校验[rootserver3 ~]# mysql -h 192.168.117.163 -P 4000 -uroot -pmysqlSHOW VARIABLES LIKEtidb_ddl_enable_fast_reorg;mysqlSHOW VARIABLES LIKEtidb_disable_txn_auto_retry;mysqlSHOW VARIABLES LIKEsql_mode;
返回列表