鵝廠資深DBA是怎麼做數據梳理的?

  • 2020 年 3 月 12 日
  • 筆記

契機

最近到了新的部門任職,開展工作的時候,由於對資料庫相關的工作非常熟悉,因此切入點就選擇了先從資料庫開始,在短短2周的時間裡,讓線上DB的成本下降80%,並且業務穩定運行。這裡把我的經驗整理出來分享給大家,大家如果到了一家新環境也可以用類似的方法來做資料庫相關的梳理和優化工作,在此次的整理中,我從下面幾個部分來做梳理。

1

如何梳理

一、資料庫實例梳理

資料庫梳理部分,可以詳細梳理各個環境的資料庫的資源使用情況,包括資料庫的規格,實例的數量等等,一般包含如下幾個環境的梳理,有的公司環境會有多套,建議分類梳理:

1、DEV環境資料庫梳理

2、QA環境資料庫梳理

3、模擬環境資料庫梳理

4、線上環境資料庫梳理

通過這個資料庫實例的梳理,你能夠從宏觀上了解線上資料庫的部署情況,根據後面的梳理結果,可以評估數據使用是否合理以及哪些地方需要做改造和優化。

二、DB部署情況梳理

這部分主要是要了解線上數據的部署情況,一般包含如下幾個方面:

1、資料庫部署的路徑(程式路徑、數據目錄、日誌目錄等)

2、資料庫使用字符集

3、使用的引擎

4、資料庫的版本

5、實例高可用

6、資料庫的核心參數:

核心參數一般包含性能、數據一致性等相關參數,一般關注如下幾個(下面參數僅僅適用於MySQL資料庫):

  • innodb_buffer_pool_size
  • innodb_flush_log_at_trx_commit
  • sync_binlog
  • binlog_format
  • character_set_server
  • character_set_database
  • max_connections

這裡僅僅列出了少量比較重要的參數,大家可以根據自身的情況做參數的梳理。

三、DB運營情況梳理

這部分涉及的內容比較多,大致概括如下:

1、容量使用情況

2、QPS訪問量

3、TPS訪問量

4、慢查詢

5、CPU使用量

6、活動執行緒數

7、備份方案

8、許可權方案

通過這些資訊可以看出一個實例的健康度以及實例資源使用是否合理。

四、DB相關需求調研

調研相關的需求,比如對高可用的需求、對數據一致性的需求、分庫分表、數據回滾等需求,通過這些需求能知道現在線上的部署模式是否符合要求。

舉個簡單的例子,比如業務有數據強一致性的需求,而線上同步方式是非同步,以及innodb_flush_log_at_trx_commit和sync_binlog參數並不是雙1,那麼這裡就存在風險,需要做相應的改造。

1

思考和分析

在完成資料的收集以後,下一步就是根據自己的專業度進行分析和思考,下面列舉幾個思考的維度,大家在工作中可以經常這麼去反問自己,然後思考出答案。

1、資源使用合理嗎?

一般根據存儲容量、QPS、TPS以及CPU的使用情況就可以很清楚的確認實例的運行狀態,是過於空閑、負載適中還是高負載?然後根據具體的情況對資料庫做實例縮容或者擴容。

2、資料庫參數設置合理嗎?

3、實例負載是否在正常範圍?

4、實例的許可權是否設置合理?

許可權這部分比較好評估,是否存在業務許可權過大的情況?root的許可權是否有限定訪問IP?這裡一般的原則是:

  • 業務許可權一般只給select/insert/update三個許可權就OK;
  • 禁止針對帳號做%的授權;
  • root用戶只由DBA控制。

5、是否存在低版本,以及低版本是否需要升級?

線上一般需要保持版本的統一,特殊情況除外。

6、數據一致性需求能滿足嗎?

7、實例是否需要高可用?

8、慢查詢是否正常?

9、索引設計是否合理?

索引這裡一般根據慢查詢來判斷,還有一個維度,大家可以通過pt的pt-duplicate-key-checker工具來看線上是否存在重複的索引。

10、資料庫的變更流程是否合理?

11、實例監控是否合理?

12、實例的備份策略是否合理?

上面列出了我自己常用的一些主要的維度,大家可以根據自身的情況酌情添加或者刪除。

1

改造

根據上面的分析,就可以進一步對DB做優化,這裡需要根據具體的情況來進行推進,就我們現在的DB存在的問題,我做了如下的優化:

1、實例降級和升級改造

僅僅這一步就為公司每個月節約成本20多萬!但是需要注意:實例降級需要準確評估實例的負載情況,並對線上留有比較大的餘量的情況下進行,把控好風險。

2、版本升級

3、監控告警優化

4、許可權改造

5、SQL和索引優化

6、變更流程規範化

1

總結

做了前面的工作,你可以把前面你做的事情整理成一封非常好的郵件,你的優化成果、思考以及項目推進的詳細過程,還有別忘記記錄其中遇到的問題和經驗教訓。總結的時候可以用思維導圖來展現,這一點非常重要,公司中不僅要積極主動幹事情,也要積極主動的總結和回報,曾經自己因為只知道埋頭幹事情吃了不少虧,大家一定要謹記。

直播預告

1

特惠體驗雲資料庫 

↓↓更多驚喜優惠請點這兒~