如何優化Linux操作系統用於MySQL環境?
一、初級玩法
1. 在BIOS及內核層面關閉NUMA
2. 在BIOS層面將CPU、內存均設置最大性能模式
3. 在BIOS層面關閉CPU節能模式
4. 修改IO Scheduler爲deadline 或 noop
5. 使用xfs文件系統,掛載選項noatime、nodiratime、nobarrier
6. 在內核層面設置vm.swappiness<=5,vm.dirty_ratio<=10, vm.dirty_background_rati<=5
7. 在內核層面修改用戶可最大打開文件數和線程數爲65535
8. 禁用SWAP分區
二、高端玩法
1. 使用最新穩定Linux發行版
2. 升級各個硬件設備到最新穩定firmware版本
3. 使用SSD時,開啓TRIM功能,並且可以的話文件系統block size和SSD對齊
4. 當磁盤I/O存在瓶頸時,除了常規因素外,還需要關注中斷不均衡的可能性
2018年7月5日,週四
MySQL 8.0 InnoDB哪些新特性你最期待,爲什麼?
1. 數據字典全部採用InnoDB引擎存儲,支持DDL原子性、crash safe,metadata管理更完善
2. 快速在線加新列(騰訊互娛DBA團隊貢獻)
3. 並行redo log,並提升redo log的I/O性能
4. 新增倒序索引
5. 增強CBO特性
6. 消除了buffer pool mutex(Percona的貢獻)
7. 自增ID持久化
8. 行鎖增加SKIP LOCKED和NOWAIT特性選項
9. 新增事務CATS特性,大大提升事務性能(Michigan大學貢獻)
10. memcached plugin增強
11. 增強JSON性能、功能
12. 新增智能選項 innodb_dedicated_server
2018年7月10日,週二
MySQL hang的原因有哪些?
1. MySQL使用資源過高導致服務器太累扛不住。例如CPU、內存、 I/O等開銷。
2. 磁盤無可用空間。
3. MySQL頻繁的創建和銷燬連接。
4. MySQL使用的最大文件打開數和連接數,超過了操作系統的限制。
5. MySQL的鎖不能有效的釋放。例如持有行鎖或者表鎖,造成了MDL等待。
6. MySQL的bug導致的。
導致MySQL hang住的原因有很多,不侷限於上述因素,還需要機智的你來挖掘。
專訪王曉偉老師,MySQL數據導入數據倉庫(Hadoop)有哪幾種方式?
1. 傳統方式,採用mysqldump等工具將數據文件上傳至HDFS
2. 使用Sqoop Kettle等ETL工具,將數據表對應導入Hive的數據表
3. 使用kafka+flume方案,將mysql binlog通過流式採集的方式導入Hadoop
4. 設計實現Hive的快照表、增量表、全量表,實現MySQL到Hive數據的增量導入,並支持分庫分表等特性。