前言

本文分为3个章节进行介绍:

第1章 如何实现高可用

第2章 性能优化

第3章 各行业解决方案介绍

希望通过本文能够让你了解行业痛点和数据库技术参数和功能,对了解数据库各项技术参数,云数据库运维能力有所帮助,并且能根据具体场景给出综合解决方案

1、 数据库技术参数解读和设置

1. 什么是RDS MySQL的高可用

通过监控软件实时监控HA集群主备库的状态,发现主库宕机后,由高可用组件实现主备角色的自动切换,并能否保证数据的一致性,有效降低服务不可用时间具备这样能力的集群就是高可用集群,如RDS MySQL的HA集群

2. RDS MySQL高可用的级别

• 同AZ:跨物理机的HA集群(部署在独立电源的不同机柜中的物理机)

• 跨AZ:跨机房的HA集群

• 跨region:跨区域的HA集群

3. RDS MySQL高可用的切换机制

• MySQLHA集群状态是通过Monitor组件实时监控的,VIP绑定在主机上,主备之间通过主从复制进行数据同步

• 当主机故障时,Monitor会自动发起3次对主机的连接

• 如果3次都失败,Monitor会发起主备切换,先将VIP解绑,待备机重放

• 完所有relaylog追上主机后,备机升主,VIP绑定到新主机上(原备机)

• 新主机诞生后,如果原主机已恢复,重新建立主备关系

• 如果原主机不可恢复,需要人工解决原主机故障,手工重复主备关系

2、 性能优化

1. 性能压测

1. 压测目的

首先我们要明白为什么要压测?

压测之前要明确压测的目的压测的目的不同时,需要我们有针对性的设计不同的压测方案常见的压测目的有:

• 测试数据库新版本的性能

• 验证某些DB/OS层面的参数

• 测试不同存储对数据库性能的影响

• 测试不同场景下数据库的性能表现

2. 影响因素

影响数据库性能的因素

性能压测前,因对影响数据库性能的因素有一个大致的了解大致分为:数据库层面、系统层面、存储层面、网络层面等

各层面常见指标如下:

3. 关注指标

压测关注的性能指标

压测过程中要随时关注数据库的常用性能指标,从而发现可能存在的性能瓶颈

数据库常见的性能指标主要分为以下几类:

4. 工具方法

我们如何选择压测工具和压测方法?

针对MySQL而言,压测工具有很多,如:sysbeno th、Tpcc-mysql、mysqlslap、tcpcopy等在没有特定要求的场景下,一般选取业内使用最广泛的sysbench作为压测工具具体的压测流程如下:

2. 索引优化

1. 索引简介

Heap

什么是heap

heap就是一个没有clusteredindex的一个table一个table如果没有clustered index,那这个table的数据就保存在heap上,我们也可以说这个table是一个heap

heap的特点

(1) Heap在逻辑上是一种扁平结构,它没有intermediate/root pages

(2) 仅通过heap本身无法做lookup操作,只能在heap上做scan操作

(3) Heap中的page之间没有previouspage或者nextpage这种链接

(4) Heap上可以创建一个或多个nonclustered index

Clustered index

什么是clustered index

在heap上创建了一个clusteredindex,这个table就变成了一个clustered index

Clustered index的特点

Clusteredindex逻辑上采用树形结构

Clustered index的leaflevel node保存着这个table中所有column的数据

Nonclustered index

什么是nonclustered index

Nonclusterd index是在heap或者clusteredindex之外的另一种独立的结构,它里面保存着nonclusteredindexkey到与之对应的heap或者clusteredindex中的数据存储位置

Nonclustered index的特点

(1) 一个table上可以创建一个或者多个nonclustered index

(2) Nonclustered index会提升select操作的性能,但是会在一定程度上降低 update、delete的性能

(3) Nonclustered index并不是越多越好

(4) 创建什么样的index,取决于应用程序的workload是什么样的

2. 索引相关DMV

sys.indexes

(1) 每个index(clustered或者nonclustered)以及每个heap在sysindexes中都有一行对应的数据

(2) Heap的indexid是0

(3) Clustered index的indexid是1

(4) Nonclustered index的indexid大于1

sys.dm_db_index_physical_stats

(1) 可以查询index的fragmentation信息

(2) 可以查看index的不同level有多少个page

(3) 可以查看page中百分之多少的空间已经被使用

3. 慢查询优化

1. 慢查询的影响

为什么要关注慢查询?

(1) 之所以关注慢查询,是因为慢查询会导致以下影响:

(2) 数据库cpu负载高

(3) IO负载高导致服务器卡住,拖慢数据库性能 Sql执行计划不合适,执行耗时过长

(4) 数据库锁的增多,影响正常的DDL和DML操作

2. 查看慢查询日志

如何查看慢查询日志?

(1) 查看my.cnf文件,通过slow_query_log_file参数定位慢查询日志的位置

(2) 通过vim直接打开慢查询日志对其进行单条慢sq1分析

(3) 通过mysqldumpslow或pt-query-digest工具对慢查询日志进行汇总分析如下图所示

3. 慢查询优化步骤

针对一个特定的慢sql如何优化?

针对特定的慢sql,主要要经过以下几步分析:

(1) 查看SQL执行计划:explain sql

(2) 查看表的索引:show index from tb_name;查看表结构:show create table tb_name;

(3) 通过profiling看看sql耗时主要花在哪里?

(4) 通过Optimizer Trace观察sql的执行过程,观察sql执行计划选取的依据

3、 各行业解决方案介绍

1.华为云物流行业数据库解决方案

1.1华为云数据库服务产品介绍

华为云数据库服务全景图

GaussDB自研面向政企客户,满足高可靠、高高性能;开源面向中小企业,极致性价比

1.2物流行业发展概况

物流4.0,智能化升级是物流行业必然的发展趋势

物流行业主要场景

物流行业解决方案总体架构

1.3物流行业数据库最佳实践

智慧物流行业数据库解决方案

客户痛点:

• 路线运输范围跨度大,运输过程监控难,车辆健康状况不透明,路径无规划

• 地图服务瓦片数据加载性能较差,MongoDB里加载底图数据速度缓慢

• 信息量大、视频数据多,更新速度快,物流效率与准确性难以保证

华为云数据库解决方案:

• 华为云数据库GaussDB(forMongo)存储计算分离架构,无需主备同步,写入速度是线下 MongoDB(DDS)的2-4倍,无CPU100%问题

• 使用关系型数据库PostgreSQL,提供原生的基于地理位置支持

• 高频率非结构化监控状态数据使用influxDB或 MongoDB(DDS),适用于写入量大的非结构化数据保存

• 较小视频文件可使用MongoDB(DDS)非机构化数据库服务进行直接存储,使用自带 GridFS模块对文件进行存储

快递物流客户数据库案例

国内物流客户数据库使用情况:

• 物流公司专注于服务质量提升,在国内外建立了庞大的信息采集,市场开发,物流配送,快件收派等速运业务机构服务网络,核心业务系统众多,大型物流公司平均日订单量可达百万级,高峰期日订单量可达千万级别

• 国内物流公司核心业务系统对数据库的使用量巨大,以某物流公司速运业务上云项目为例,涉及系统100+,数据库实例套数300+,数据量20TB+

客户痛点:

• 耦合性:客户数据库架构是多个业务共享一套数据库,经常因为某一个业务负载较高,影响所有业务的性能稳定性

• 可靠性:客户使用第三方高可用组件,稳定性差,切换时间分钟级,且容易造成数据丢失,无法满足业务需求

• DBA不足:客户是运维兼数据库管理,缺乏专业技能以及平台对数据库进行有效的整体管理

数据库解决方案:

• 进行数据库水平拆分,减少业务之间的耦合性能影响;同时利用RDS proxy进行读写分离,提高整体数据库的性能承载

• 通过RDS 分布式HA系统,将数据库切换时间降低到秒级,且保证数据0丢失,同时可根据业务场景,提供可靠性优先以及可用性优先的灵活切换策略

• 使用专业的管控平台对200+实例进行全局管理,通过慢查询,锁监控等机制及时对数据库性能预警,保障业务系统的稳定性

即时物流数据库解决方案:业务复杂,数据库种类繁多

行业背景和业务特征:

• 高吞吐高并发:数据采集维度多,采集周期短骑手轨迹、状态等数据需

要实时上报,数据量的增长与骑手数量成指数式增长

• 业务流量变化大:数据并发写入量和车辆的在线数量紧密相关,

• 数据种类杂:即时物流需求复杂,所产生的数据种类也比较多,无一种数

• 据库能满足所有需求,需要多种数据库协同配合,如何使用好数据库将是业务成败关键

客户痛点:

• 数据类型多样,需要自己维护多种数据库系统,维护成本高

• 传统数据库部署存在安全隐患,数据泄露或被窜改风险极大

• 即时物流数据增量快,写入并发高,扩容成本与实施难度巨大以某即时

物流为例,假设100W个骑手,每日新增数据28TB,半年数据存量0.5PB;

• 故障数据结构不固定,写入并发大,业务查询场景复杂

数据库解决方案:

• 产品丰富:华为云数据库服务包含:MySQL、PostgreSQLDDS,满足客户多种数据库使用场景的使用

• 弹性伸缩:全系列数据库支持磁盘弹性扩容,业务无感知

• 超高性能(Gauss for MongoDB)

使用场景:骑手地理位置数据,地理围栏等非结构化数据

• 故障切换:全系列数据库服务支持跨AZ的高可用,并且支持秒级的高可用切换,应用配置无需改动

2.华为云汽车行业数据库解决方案

2.1. 数据库服务产品介绍

华为云数据库服务全景图

GaussDB自研面向政企客户,满足高口靠、高性能;开源面向中小企业,极致性价比

2.2. 车联网数据库最佳实践

车联网核心数据场景

数据是车企的核心资产,每个车企都有车联网的业务场景

2.3. 移动出行数据库最佳实践

移动出行业务场景

传统车型在移动出行细分领域具有先天性优势

华为云为江淮汽车提供了云主机、云数据库服务等160多种丰富的云服务,让江淮汽车的新一代平台功能越来越壮大,运维难度得到大幅降低,系统性能得以大幅提升

移动出行数据库解决方案

行业痛点:

• 方案设计难度大:传统车厂在该领域涉足少,经验不足,无法合理的组合使用数据库

• 数据库读写压力大:弹性与分布式是客户的核心诉求,传统方案较难满足要求

• 数据可靠性要求高:移动出行涉及到核心交易数据对数据库的可靠性要求更高

华为云数据库解决方案

• 极致的弹性能力:GaussDB(for Mongo)存储系统的消息数据,位点数据,满足大批量数据的写入场景分钟级弹性拓展能力极大的满足了业务的横向拓展

• 金融级数据高可靠:GaussDB(for MySQL)存储支付数据、订单数据等一致性要求比较高的数据,解决数据的一致性和弹性扩展难题

Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐