[TOC]
# 一主多从问题
常见的服务器架构有一主多从,但是中间没有主从复制的高可用的组件
![](https://box.kancloud.cn/ba7b2b71515c95a094df7721c6892d19_397x157.jpg)
一旦主服务器出现故障,从服务很难自动切换成主的或者中间有可能出现问题,这时候需要DBA来手动的切换,切换完再和新的主同步,这样是很耗时的
# 备份
最好不要在主库上数据库备份
大型活动前取消这类计划
# 效率底下的sql
mysql不支持多核运算,就是一个sql只能分给一个cpu
大多数sql能通过慢查询优化sql来解决
# 连接数
大量的并发:数据库连接被占满 (max_connections默认100)
超高CPU使用率,因CPU资源耗尽而宕机
# IO
磁盘IO性能下降,要定期维护,活动的时候调整备份计划等一系列的定时任务
网卡流量 网卡IO被占满
如何避免无法连接数据库的情况:
1. 减少从服务器的数量
2. 进行分级缓存
3. 避免使用select *查询
4. 分离业务网络和服务器网络
# 大表带来的影响
一般会带来慢查询产生
对DDL操作影响
修改表结构很难,如果被从库复制过去简直灾难
风险:
会造成很长时间的主从延迟,因为现在的mysql主从复制一般使用的是单线程,mysql5.6支持多线程复制
影响正常的数据操作
建立索引需要很长时间
风险:
mysql版本<5.5 建立索引会锁表
mysql版本>=5.5 虽然不会锁表但会引起主从延迟
分库分表
把一个大表分成多个小表
难点:
分表主键的选择
分表后跨分区数据的查询和统计
可以历史数据归档,减少对前后端业务的影响
难点:
归档的时间点的选择
如何进行归档操作,归档的话对一些现有的数据进行删除.如果表有上亿行,那...
# 大事务带来的影响
事务是数据库系统区别于其他一切文件系统的重要特征之一
事务是一组具有原子性的sql语句,或是一个独立的工作单元
# 内存大点好
内存不仅对查询有帮助,对写入也有帮助
CPU --写入--> 内存 --写入--> 磁盘
写入可以像读一样,可以写入内存,最终虽然是需要到磁盘,但是速度会快,而且可以多次写入内存一次写到磁盘
# 硬件选择
## 磁盘RAID卡
![](https://box.kancloud.cn/720fe134b2127e3e0bc91ae82601befe_554x162.jpg)
## 固态存储
SSD
PCI-E SSD
更好读写性能,更好支持并发
缺点:写入的时候要对写的进行擦除操作,相比机械更容易损坏
SSD特点:
1. 使用SATA接口,可以替换传统磁盘不需任何改变
但是把SATA3.0(6G) -->SATA2.0(3G) 性能会浪费
2. SATA接口的SSD支持RAID技术
PCIe卡特点
1. 无法使用SATA接口,需要独特的驱动和配置
2. 价格比SSD贵,性能要好(他会占用服务器的一些内存)
使用场景
1. 适用于存在大量随机I/O的场景
2. 使用于解决单线程负载的I/O瓶颈
# 网络存储SAN和NAS
SAN和NAS是2种外部文件存储设备加载到服务器上的方法
SAN --光仟-->服务器 --硬盘--> SAN
SAN设备通过光仟连接到服务器,设备通过块访问接口访问,可以把他当做硬盘使用
大量顺序读写,读写I/O,缓存,I/O合并,随机读写,不如本地RAID磁盘
NAS 设备通过网络连接,通过基于文件的协议如NFS或SMB来访问
适用场景
数据库备份
# CPU
对于并发比较高的场景CPU的数量比频率重要
对于CPU密集性场景和复杂SQL频率越高越好
- SQL
- 名词
- mysql
- 初识mysql
- 备份和恢复
- 存储引擎
- 数据表损坏和修复
- mysql工具
- 数据库操作
- 增
- 删
- 改
- 查
- 数据类型
- 整数类型
- 小数类型
- 日期时间类型
- 字符和文本型
- enum类型
- set类型
- 时间类型
- null与not null和null与空值''的区别
- 数据表操作
- 创建
- 索引
- 约束
- 表选项列表
- 表的其他语句
- 视图
- sql增删改查
- sql增
- sql删
- sql改
- sql查
- sql语句练习
- 连接查询和更新
- 常用sql语句集锦
- 函数
- 字符函数
- 数值运算符
- 比较运算符与函数
- 日期时间函数
- 信息函数
- 聚合函数
- 加密函数
- null函数
- 用户权限管理
- 用户管理
- 权限管理
- pdo
- 与pdo相关的几个类
- 连接数据库
- 使用
- pdo的错误处理
- pdo结果集对象
- pdo结果集对象常用方法
- pdo预处理
- 常用属性
- mysql编程
- 事务
- 语句块
- mysql中的变量
- 存储函数
- 存储过程
- 触发器
- mysql优化
- 存储引擎
- 字段类型
- 三范式和逆范式
- 索引
- 查询缓存
- limit分页优化
- 分区
- 介绍
- 分区算法
- list分区
- range范围
- Hash哈希
- key键值
- 分区管理
- 特别注意
- 分表
- 数据碎片与维护
- innodb表压缩
- 慢查询
- explain执行计划
- count和max,groupby优化
- 子查询优化
- mysql锁机制
- 介绍
- 演示
- 总结
- 乐观锁和悲观锁
- 扛得住的mysql
- 实例和故事
- 系统参数优化
- mysql体系结构
- mysql基准测试
- 索引
- mysql的复制
- win配置MySQL主从
- mysql5.7新特性
- 常见问题
- general log
- 忘记密码
- uodo log与redo log
- 事务隔离级别
- mysql8密码登录
- explain
- 高效的Tree表
- on delete cascade 总结
- mongod
- 简介
- 集合文档操作语句
- 增删改查
- 索引
- 数据导入和导出
- 主从复制
- php7操作mongod
- 权限管理
- redis
- redis简介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件总结
- 外网连接
- 持久化
- RDB备份方式保存数据
- AOF备份方式保存数据
- 总结
- win安装redis和sentinel部署
- 事务
- Sentinel模式配置
- 分布式锁
- 管道
- php中redis代码
- 发布订阅
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置说明
- 启动
- kibana
- kibana下载
- kibana配置文件
- kibana常用功能
- 常用术语
- Beats
- Beats简介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架构
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 单模式下API增删改查
- mget获取多个文档
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查询
- Filter过滤
- 组合查询
- es配置文件
- es集群优化和管理
- logstash
- kibana
- es5.2
- 安装
- 冲突处理
- 数据备份
- 缺陷不足
- 集群管理api
- 分布式事务
- CAP理论
- BASE模型
- 两阶段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 异步确保型
- 最大努力通知型
- 总结