这一章主要讲了一些概念和一些Mysql Cluster变种,略。
高可用概念
5个9: 99.999%,每年允许5分钟宕机时间。
宕机原因
- 运行环境: 磁盘耗尽;
- 性能问题:糟糕sql,schema索引设计;
- 复制问题:主备不一致;
- 数据丢失:如误操作。
tips
- 禁用查询缓存
- 禁用复制过滤器、触发器。
高性能mysql第13章-笔记-云端mysql
IaaS:基础设施虚拟化;
DaaS:数据库虚拟化。
Iaas:
mysql需要的4种资源:
- cpu: 云cpu一般较慢;
- 内存: 最好能到512GB~1TB;
- IO: ms级,虚拟化后一般慢100倍;
- 网络: 一般不成为瓶颈。
Daas:
稍微讲了一下亚马逊RDS,略过。
高性能mysql第14章-笔记-应用层优化
思考的角度
- 应用和数据库正确分工;
- ORM的循环SQL和嵌套查询的性能优劣;
- 缓存(redis);
- 连接池。
web服务器问题
静态资源: 用nginx代替apache
移除无用的apache模块
缓存问题
不同等级层次的缓存:
- 进程缓存;
- 本地共享内存缓存;
- 分布式内存缓存;(memcached)
- 磁盘缓存。
缓存失效策略
- TTL;
- 显式失效:更新数据时候更新缓存或者标记缓存为脏数据;
- 读时失效:读的时候再判断缓存是否已经过期; (加快写,减慢了读)
高性能mysql第15章-笔记-备份与恢复
备份建议:
- 使用Percona XtraBackup、Mysql Enterprise Backup;
- 生产服务器和备份服务器分开,以免同时挂掉。
- 定期进行恢复测试。
逻辑备份
(SQL,mysqldump)
缺点:
- 恢复起来慢
物理备份
(文件)
缺点:
- 受版本、兼容性影响,bug概率高。
- 文件很大。
建议:
0. 全局使用utf-8
;
- 逻辑:使用
mysqldump
备份结构; - 物理: 使用
select into outfile
导出数据为分隔符文件。 - 恢复结构:执行1中的sql;
- 恢复数据:
load data infile
。
其中2,4两步对字符集有要求。(不能单独设置某列字符集)
增量备份和全量备份
尽量做全备,增量bug多;
数据一致性
mysqldump --single-transaction
可能会导致非常长的事务,从而失败。
binlog清理
1 | purge master logs before current_date - Interval N day |
或者设置expire_logs_days
。
innodb损坏恢复
1. 二级索引损坏
3种办法:
optimize table
语句;- 删除重建表;
- 表引擎改为
myisam
,再改回来。
2. 聚簇索引损坏
优先使用备份还原
否则:
(大概率只能修复未受损坏影响的行。)
通过innodb_force_recover
选项导出表,如果导出过程崩溃,需要跳过受损行。
3. 损坏系统结构
损坏: innodb事务日志(redo log),表空间撤销日志(undo log),数据字典。
优先使用备份还原
否则:
可能需要做整个数据库的导出和还原。
innodb内部绝大部分工作可能受影响。
上述2,3两种损坏最好从备份还原数据。
高性能mysql第16章-笔记-用户工具
这章主要介绍一些工具:
UI工具:
- MysqlWorkbench;
- SQLyog: 同workbench,windows专用;
命令行工具:
- Percona Toolkit: 管理员必备;
- The openark kit:一些管理任务的python脚本。
监控工具
- Nagios;
2-6等其余很多略过。