分布式数据库TiDB在商业银行的设计与实践
TiDB作为开源软件,其产品迭代速度快,常使用补丁式更新,一旦发现错误可马上更新,这与银行业要求的稳定性存在一定差异,且不符合监管要求的变更流程。因此,我们目前的升级策略是待其新发布的大版本稳定后再安排变更升级,对于补丁式小版本,在不影响业务的情况下,暂缓升级。 (2)集群日常巡检 除了24小时实时监控外,我行要求每日对数据库进行定时巡检。这部分我们编写了自动巡检脚本,通过邮件方式推送数据库运行状态。 (3)集群扩容缩容方案 TiDB 集群可以在不影响线上服务的情况下动态进行扩容和缩容,实现在线灵活可扩展特性。扩容缩容也分为TiDB、TiKV、PD三种情况,具体操作在PingCAP官网都有清晰地描述,这里不再赘述。 需要特别说明的是扩容PD时,需滚动升级集群,升级过程中会导致TiDB连接断开,影响业务,待升级完成即可恢复,因此,最好选择业务量少的时段进行。 6、灾备方案 除了生产主集群,我行的TiDB集群还增加了从集群的设计,目的是为了实现异地灾备。因此,我们也制定了完善的主从集群灾备切换方案。 下图是一个简单的主从集群部署示意图,主从集群通过binlog进行数据同步: 切换时,主从集群架构不变,仅仅是主从同步数据流改变方向。切换流程如下: 1)停业务,等待主从同步完成; 2)关闭主集群 Drainer, 停止主从同步; 3)关闭主集群,记录当前时间戳; 4)将业务数据库连接切换到从集群; 5)启动主集群; 6)从集群运行 Drainer,向主机群同步。 7、应用适配和优化 (1)检查和优化库/表/索引等内部对象 TiDB 优化器会根据统计信息来选择最优的SQL执行计划。 统计信息收集了表级别和列级别的信息,存储在stats_meta、tats_histograms、stats_buckets这三个表里。除了系统自动更新外,我们还编写了手动更新统计信息的脚本,每日定期执行ANALYZE语句来收集统计信息。 SQL执行计划由一系列的 operator 构成,TiDB提供了EXPLAIN语句,可以查看SQL语句的执行详细信息。 当数据库中的对象需要优化时,我们会综合分析统计信息、执行计划,然后给出优化方案。 (2)性能检查和判断 应用连接 TiDB 数据库后,需要着重检查几个指标:QPS、TPS、响应时间、业务库大小、业务表增长率、数据库连接会话数、热点盘等。目前我们会通过监控、巡检、日志三方面综合进行指标分析,从而判断数据库的性能。 五、结语(编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |