1、多云環境下的云數據庫管理-bilibili DBA 李邦國自我介紹自我介紹姓名:李邦國bilibili DBA;負責B站數據庫服務支撐,包括MySQL、TiDB、MongoDB、Redis,MySQL運維及開發Owner;負責數據庫管理平臺開發及維護,是公司MongoDB容器混合數據庫管理平臺、混合云數據庫管理平臺、表結構變更版本管理等獨立開發者;熟悉多種業務場景架構,對維護高并發和海量數據業務有豐富經驗。B站的數據庫業務選型IDC自建和云DB在B站的業務場景在B站各自的優勢引入多云以后帶來的問題管理困難多種云廠商多種云廠商、多個可用區多個可用區沒有統一的平臺進行管理沒有統一的平臺進行管理流程
2、、審批不完善流程、審批不完善用戶使用姿勢不規范用戶使用姿勢不規范權限管控不嚴格權限管控不嚴格成本增加網絡問題導致部分操作需要人工網絡問題導致部分操作需要人工 IDC服務器沒辦法直連,需要通過控制臺或者中控機來執行 涉及多個區服的游戲沒辦法通過統一腳本批量執行短期成本低于自建短期成本低于自建IDC,長期成本卻更高長期成本卻更高 自建IDC可以混部 云DB的需要持續消費交付更慢,自動化不完善交付更慢,自動化不完善 因為自動化不完善,導致交付很快的云DB反而比自建IDC的DB交付更慢 流程繁瑣用戶訴求用戶訴求統一的元數據管理統一的元數據管理完善的審批和變更流程完善的審批和變更流程自動化的審核和執行自
3、動化的審核和執行游戲的批量導入需求游戲的批量導入需求自動化的實例初始化自動化的實例初始化集中化的操作平臺集中化的操作平臺總體架構整體架構主要的功能和組件功能功能 元數據管理 數據管理 批量導入 表結構變更版本管理 告警管理組件組件 批量導入 Agent Executor批量導入Agent文件格式專門的腳本機 防止文件太大 下載、解析等不占用中控機負載并發執行 相同步驟下SQL并發執行,提高效率 不同步驟按順序串行執行文件分發 根據路由表,將SQL文件分發到對用的proxy機器 每個任務執行信息更新到任務表SQL文件導入 調用executor,導入文件Executor業務治理表結構變更版本管理表
4、版本表結構變更版本管理主要功能:主要功能:表結構變更版本管理生命周期管理告警管理存在的問題告警規則固定告警規則固定 規則調整會影響到所有集群 用戶沒辦法單獨對自己的DB集群定制告警規則告警通過服務樹發送告警通過服務樹發送 服務樹綁定DB有些只是為了平臺訪問 服務樹跟業務應用強綁定 服務樹內的部分成員不想接收告警告警噪音較多告警噪音較多 電話告警會發送給全體dba 用戶收到的告警較多告警管理治理告警組告警組 告警組成員設置 可以設置值班人員 支持告警升級告警模版告警模版 總的告警模版 集群根據告警模版創建告警規則遷移遷移 存量集群向前兼容,根據服務樹自動創建告警組 增量集群默認不綁定業務的告警組
5、 所有集群默認都會綁定DBA的告警組告警管理治理后告警自定制告警自定制 用戶可以根據自己的需求定制自己業務集群的告警規則 用戶可以通過添加/變更告警組及成員信息告警告警分級分級 緊急、警告、事件告警收斂告警收斂 用戶收到的告警種類從11種減少到5種 DBA告警噪音減少降本增效部分業務下云部分業務下云 uat、fat環境的云db實例 部分非核心業務 游戲部門非游戲業務利用率低的利用率低的db實例優化及降配實例優化及降配 本身利用率低 磁盤利用率高,但是內存和CPU使用率很低。主庫負載很高,但是只讀實例負載很低DB實例清退實例清退 已下線業務高成本云高成本云-低成本云的遷移低成本云的遷移用戶及權限
6、收斂root用戶回收用戶回收業務用戶權限收斂業務用戶權限收斂只保留insert、update、select,如果需要delete額外申請權限管控到庫級別業務用戶控制到只有兩個,不再根據業務區分用戶第三方業務專門用戶,便于區分業務以及排查問題變更規范完善數據庫開發規范并開展培訓完善數據庫開發規范并開展培訓數據庫設計規范,包括庫表創建規則等語句書寫規范,各種操作語法的事例數據庫變更規范,分批執行等平臺變更審核規范,建表、修改表規范等禁止觸發器、函數、存儲過程等完善審批流程完善審批流程表結構變更必須走工單審批審批流程為 leader+DBA審批,數據導出會加安全額外審批平臺沒辦法自動執行的特殊需求,提通用工單后續規劃配置脫敏密碼占位符密碼占位符地址占位符地址占位符API封裝用戶透明用戶透明 不需要關注對應云廠API及賬號信息 內部統一的接口以及詳細的文檔權限管控及分級權限管控及分級 根據操作危險性分級 鑒權通過內部鑒權平臺來做管控 不同平臺通過不同的密鑰給予不同的級別及權限規范及審計規范及審計 定制使用規范 所有平臺調用進行操作記錄異地容災同城雙活異地雙活