@(mysql调优)
目录
一、一些概念
1. 数据库的安全性、可用性、可靠性、可维护性、容错性
2. 异地备份、同步、半同步、异步
3. 两地三中心
两地三中心是指数据库的容灾方案。其中三中心分别是指生产数据中心、同城灾备中心以及异地灾备中心,在这种容灾方案下,两个城市的三个数据中心互联互通,如果一个数据中心发生故障或灾难,其他数据中心可以正常运行并对关键业务或全部业务实现接管。
4. 冷备、热备
热备: 数据中心间的数据采用实时同步的方式进行备份。比如ORacle的RAC模式就可以做到热备模式,就可以做到同时对两个库进行增删改查操作(有存在脏读脏写的情况)。采用热备的方式,可以确保其中一个数据中心出问题的情况下,数据不会丢失。
冷备: 数据1小时或1天备份一次,万一有问题,可以恢复对应时间段之前的数据。
ORacle可以做到真正的热备,mysql可以通过同步的方式将数据同步到两台不同的物理数据库,将查增删改查交易放到主库,从库主要做查询交易,主库和从库之间通过实时同步的方式进行数据的同步,当主库宕机的情况下,从库会主动变成主库,此时DBA修复好主库后,主库恢复职能,原来的从库继续扮演从库的角色。
作为测试人员,在测试过程中,需要对集群的高可用性,可靠性进行测试。例如:对于MySQL集群部署的容灾数据库,利用LR工具对并发的增加数据(加入10000笔数据),观察数据在新增过程中,将主库kill掉的情况下,从库切换到主库模式(以心跳方式(指切换速度快)切换),在此过程中查看数据是否丢失,成功率是否为99.9%。单词测试过程中,这种停掉主库再重启方式操作1----2次即可。
问题: 什么是虚拟IP漂移?
国家要求,一般银行重要系统,电力、电信等数据库系统在中原地区、上海、北京等地区需要有异地备份容灾机制,有时对于一个省区而言,需要在省区大型城市之间,要求至少两个城市之间会有数据备份容灾机制,防止战争、自然灾害等因素造成的损失。两个城市间数据中心的数据同步方式可以分为异步、同步、半同步以及异步的方式。
性能测试工程师发展道路:非功能性测试(在性能满足指标要求的情况下,往更深层次做,)(内容:高可靠性(案例: 在集群部署时,主机宕机时,DBA写的跳转机制,是否能用。)、高可用性(案例: 集群部署时,在宕机启动过程中,数据可以正常交互。)、安全性(案例: 数据库全权限控制、数据库对外端口保密(修改mysql默认端口,防止恶意攻击)、控制系统开放端口等。)、高维护性测试(案例: 断掉重启时等情况时,重启主机,是否能够确保数据恢复,数据是否丢失。))
二、数据库服务器的特点
2.1 数据库管理功能
包括系统配置与管理、数据存取与更新管理、数据完整性管理以及数据安全性管理。
2.2 数据库查询与操作功能
包括数据库检索和修改。
2.3 数据库管理功能
包括数据引入引出管理、数据库结构维护、数据恢复功能以及性能监测。
2.4 数据库管理功能
由于在同一时间内,访问数据库的用户不止一个,所以数据库服务器必须支持并行运行机制,处理多个事件同时发生。
三、数据库分类
3.1 关系型数据库
以二维表结构存储数据的数据库属于关系型数据库。
关系型数据库最大的特点是事务的一致性,传统的关系型数据库读写操作都是事务的。具有ACID的特点,这个特性使得关系型数据可以用于几乎所有对一致性有要求的系统中,如典型的银行系统。
主流的关系型数据库有:ORACLE、MySQL、Postgresql、DB2、SQL Server。
Postgresql推荐书籍: 威长松译,数据架构师的postgresql修炼、高效设计、开发与维护数据库应用[M]. 机械工程出版社, 2016.
3.1.1 电商系统使用的数据库类型
一号店、JD
使用Oracle+MySQL的混合体系,核心使用Oracle一体机(一台Oracle Exadata X5有24T内存,576核CPU,价格达几千万到上亿人民币)
苏宁易购
是IBM一手打造的技术团队和技术体系,使用的是DB2、MySQL和Oracle的混合体系。
携程旅行
.NET技术为主,所以是一般SQLServer为主,MySQL为辅的混合体系。
唯品会
也是MySQL和Oracle的混合体系。
3.2 非关系型数据库
以非二维表结构存储数据的数据库属于非关系型数据库。
非关系型数据库是传统关系型数据库功能的阉割版本,但其性能较高。严格来说,非关系性数据库并不是不一种数据库,而是一种数据结构化存储方式的集合。但需要注意的是对于数据的持久存储,尤其是海量数据的持久存储,还是需要一种关系型数据库。
在使用非关系性数据库的过程中,典型的应用场景是,把用户信息定期从关系型数据库中迁移到非关系性数据库中,以提高数据登录的速度。
主流的非关系型数据库有:ORACLE、MySQL、Postgresql、DB2、SQL Server,具体分类如下表所示。
数据库类型 | 数据库 |
键值存储数据库 | Redis |
Memcached | |
文档存储数据库 | MongoDB |
CouchDB | |
列存储数据库 | HBASE |
CASSNDRA |
一般的网站,用户请求到达Nginx后,在缓存数据库(Redis等)中捞取数据,若捞取到数据直接返回到前端,如果缓存数据库没有,通过Nginx将请求分发到Tomcat服务器,调用Tomcat服务器的应用实例,在MySQL中查询数据,将查询到的数据返回前端。一般而言,对于存储在缓存服务器中都是一些静态分析,以及用户信息等,缓存服务器可以定期将用户信息从MySQL中抽取到缓存服务器中,提高用户的登录速度。
3.3 关系型数据库和非关系型数据库之间比对
3.3.1 非关系型数据库的优势
① 性能
非关系性数据库(NoSQL)是基于键值对的,可以想象成表中主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
② 可扩展性
由于NoSQL性数据库是基于键值对的形式存储,数据之间没有耦合性,所以非常容易水平扩展。
3.3.2 关系型数据库的优势
① 复杂查询
非关系性数据库(NoSQL)是基于键值对的,可以想象成表中主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
② 事务支持
使得对于安全性能很高的数据访问他要求得以实现。
3.3.3 案例:Mongodb和MySQL之间比对
比对点 | Mongodb | MySQL |
---|---|---|
数据库模型 | 非关系性 | 关系型 |
存储方式 | 虚拟化+持久化 | 不同的引擎有不同的存储方式 |
查询语句 | 独特的 Mongodb 查询方式 | 传统的SQL语句 |
架构特点 | 可以通过副本集,以分片来实现可用 | 常见的有单点,M-S,MHA,MMM,cluster等架构方式 |
数据处理方式 | 基于内存,将热数据存在物理内存中,从而达到高速读写 | 不同的引擎有用其自己的特点 |
成熟度 | 新兴数据库,成熟度较低 | 拥有较为成熟的体系,成熟度高 |
广泛度 | NoSQL数据库中,Mongdb是较为完善的BD之一,使用人群在不断增加 | 开源数据库份额不断增加,MySQL的份额也在持续增长 |