[TOC]
# 一主多從問題
常見的服務器架構有一主多從,但是中間沒有主從復制的高可用的組件

一旦主服務器出現故障,從服務很難自動切換成主的或者中間有可能出現問題,這時候需要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卡

## 固態存儲
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)
- 異步確保型
- 最大努力通知型
- 總結