數(shù)據(jù)庫運(yùn)維人員DBA工作總結(jié)
創(chuàng)業(yè)公司或者小中型公司中沒有專職的數(shù)據(jù)庫運(yùn)維人員,一般由技術(shù)leader或者運(yùn)維人員來維護(hù),中大型公司都會(huì)有一些專攻數(shù)據(jù)庫方面的牛人,專門的職位叫做DBA,對于公司的DBA他們的價(jià)值不可小覷,公司只要稍具規(guī)模,就必須做好數(shù)據(jù)庫的建設(shè)和維護(hù)工作,這也體現(xiàn)了DBA的重要性,也意味著DBA責(zé)任重大。
一個(gè)公司的數(shù)據(jù)庫如果從來不出問題,那一定是因?yàn)榱髁啃?,或者沒有業(yè)務(wù)量,出問題也是學(xué)習(xí)的最好機(jī)會(huì),如何在出現(xiàn)問題時(shí)候用最快的速度修復(fù),這些都至關(guān)重要。
1、關(guān)于數(shù)據(jù)庫最常見的問題
1.1、數(shù)據(jù)庫選型
對于大部分技術(shù)人員來說,公司使用哪一個(gè)數(shù)據(jù)庫,基本上無須你來決定,在加入一個(gè)公司的時(shí)候,大部分的技術(shù)選型早已經(jīng)確定,除非是剛創(chuàng)業(yè)公司你是公司的技術(shù)負(fù)責(zé)人或者總監(jiān),可能會(huì)確定技術(shù)選型。尤其是數(shù)據(jù)庫,一旦選型再遷移的成本(學(xué)習(xí)、試錯(cuò))非常大。因此除非是技術(shù)有顛覆性的有事或者目前有難以攻克的技術(shù)問題,否則很少有公司會(huì)費(fèi)時(shí)費(fèi)力的做大的遷移。
其實(shí)無論是技術(shù)選型還是技術(shù)轉(zhuǎn)型,有一個(gè)不能忽視的因素就是,技術(shù)人員能否駕馭這種技術(shù),或者說是技術(shù)人員和技術(shù)領(lǐng)導(dǎo)熟悉這種技術(shù)。
因?yàn)槊總€(gè)公司的業(yè)務(wù)不同,數(shù)據(jù)庫系統(tǒng)的應(yīng)用場景也不一樣,每個(gè)公司針對不同的業(yè)務(wù)場景可能會(huì)使用多種數(shù)據(jù)庫,所以選型也不相同,但是可以肯定的是,沒有那個(gè)系統(tǒng)一定是最好的。
例如:
支付相關(guān)的業(yè)務(wù)需要強(qiáng)事務(wù),強(qiáng)一致性支持的:開源的Mysql、PostgreSQL、新的分布式TiDB
,付費(fèi)的oracle等
日志分析業(yè)務(wù)搜索相關(guān)的:Elasticsearch
緩存、秒殺相關(guān):Redis、Cuchbase、Memcached
大數(shù)據(jù)分析:Hive、Cassandra、clickhouse
文檔型數(shù)據(jù)庫:Mongodb
圖數(shù)據(jù)庫:TigerGraph、Neo4j、Amazon Neptune、JanusGraph
這也就是為什么很多公司選擇多個(gè)數(shù)據(jù)庫并存,并通過不同的技術(shù)和架構(gòu)給予相關(guān)的業(yè)務(wù)場景最優(yōu)的支持了,一旦選型失誤,就會(huì)有頻繁的問題出現(xiàn),直接影響到用戶體驗(yàn)。
所有的技術(shù)選型和設(shè)計(jì),都有它的應(yīng)用場景,這也就是為什么很多公司選擇多個(gè)數(shù)據(jù)庫并存,并通過不同的技術(shù)和架構(gòu)給予相關(guān)的業(yè)務(wù)場景最優(yōu)的支持了,一旦選型失誤,就會(huì)有頻繁的問題出現(xiàn),直接影響到用戶體驗(yàn)。
1.2、數(shù)據(jù)庫相關(guān)架構(gòu)
一說到架構(gòu)大家一般會(huì)想到:
單實(shí)例:很容易理解,單庫概念.
垂直分組:單實(shí)例添加副本,如Mysql主從同步,讀寫分離,Mongodb的副本集、讀寫分離.
水平分片:比如寫一本書,非常厚上萬頁,為了方便閱,讀作者分成冊(10小本)如Tidb分布式關(guān)系型數(shù)據(jù),redis的cluster,Mongodb的分片等.
架構(gòu)還包括數(shù)據(jù)庫上層的緩存系統(tǒng)設(shè)計(jì)、程序語言對數(shù)據(jù)庫連接的處理、代理層功能,以及和二級(jí)制日志相關(guān)的數(shù)據(jù)管道的搭建,其中包括數(shù)據(jù)系統(tǒng)的分區(qū)、備份等設(shè)計(jì)。
像以前,很多公司把所有的數(shù)據(jù)都放在一個(gè)數(shù)據(jù)庫里面,(我們最早也是這樣,全部放在oracle數(shù)據(jù)庫,oracle數(shù)據(jù)達(dá)到8TB,數(shù)據(jù)庫最大連接數(shù)3000),隨著業(yè)務(wù)不斷增長,開始出現(xiàn)各種各樣的問題,因?yàn)楦鞣N連接池和吞吐量的限制,基本沒有辦法進(jìn)行擴(kuò)展。開始設(shè)計(jì)數(shù)據(jù)標(biāo)的拆分,將相關(guān)的數(shù)據(jù)放在一起,不那么相關(guān)聯(lián)的放在另一個(gè)庫,甚至放在了文檔型數(shù)據(jù)庫Mongodb中,逐漸緩解了可擴(kuò)展性的問題。
隨著微服務(wù)的流行,數(shù)據(jù)庫也要進(jìn)行拆分,無業(yè)務(wù)關(guān)聯(lián)的可以拆成不同的盡可能小的數(shù)據(jù)庫,程序可以通過dubbo接口去調(diào)用,相互獨(dú)立,相互不影響
1.3、數(shù)據(jù)庫瓶頸
配置過Nginx服務(wù)的小伙伴們都知道,當(dāng)前端web服務(wù)流量增大時(shí),只需要增加nginx的實(shí)例修改配置即可,但是數(shù)據(jù)庫出現(xiàn)瓶頸時(shí)可不一定直接添加實(shí)例就能解決的。
只要是數(shù)據(jù)庫,就有吞吐量的限制,數(shù)據(jù)庫訪問瓶頸便是自然流量增長或者流量突增造成的,只要業(yè)務(wù)增長,總有一天數(shù)據(jù)庫訪問會(huì)達(dá)到一個(gè)上線。在這個(gè)問題到來之前,你需要進(jìn)行各種垂直拆分或者水平擴(kuò)展來提升整個(gè)上限(要做的工作很多的),或者你可以通過緩存如(CDN、nginx、redis)或者其他機(jī)制進(jìn)行分流。
例如流量突然暴增:可能是攻擊,也可能是進(jìn)行了推廣活動(dòng),比如限時(shí)搶購、秒殺這樣的
攻擊我們需要提前做一些壓測或者訪問方面的緩存能降低數(shù)據(jù)庫的壓力。
推廣活動(dòng)我們需要和業(yè)務(wù)產(chǎn)品運(yùn)營溝通提前預(yù)案。
索引:不要過度依賴索引,無效的索引可能會(huì)更糟糕
事務(wù):關(guān)聯(lián)事務(wù)、分布式事務(wù),盡量拆成小的事務(wù)執(zhí)行
1.4、遇到的人為錯(cuò)誤
再好的系統(tǒng),操作方式不對也是枉然,更何況并不是所有額工程師都是數(shù)據(jù)庫專家,所有人為的錯(cuò)誤是最常出現(xiàn)的問題。
1.4.1、人為錯(cuò)誤可以分為兩種:
操作數(shù)據(jù)庫時(shí)候犯的錯(cuò)
執(zhí)行程序或者腳本犯的錯(cuò)
操作數(shù)據(jù)庫時(shí)犯錯(cuò)的概率比較低,但是影響卻很大,幾乎所有公司都會(huì)有類似的傳奇事件,可以歸納這幾類;
1.4.1.1、 有意無意的刪除數(shù)據(jù)庫核心數(shù)據(jù):
文章開始的例子也寫了,故意刪除公司數(shù)據(jù),對公司會(huì)造成不可估量經(jīng)濟(jì)損失,而且也會(huì)斷送自己的工程師職業(yè)生涯,也會(huì)面臨牢獄之災(zāi)。
操作數(shù)據(jù)庫時(shí)候失誤操作,要盡快恢復(fù)數(shù)據(jù),盡可能挽回?fù)p失。很久之前,凌晨12點(diǎn)多操作數(shù)據(jù)庫(IT行業(yè)加班很普遍),進(jìn)行刪除測試數(shù)據(jù)庫時(shí)候,不了心連上了線上數(shù)據(jù)庫,進(jìn)行了刪除操作,執(zhí)行完成就收到報(bào)警信息,瞬間頭腦清晰。慶幸的是恢復(fù)的及時(shí),損失不太大,之后操作都改為早上5點(diǎn)執(zhí)行,有異常能及時(shí)發(fā)現(xiàn),(晚上操作完了有可能就去睡覺 了)。
1.4.1.2、 修改表結(jié)構(gòu)誤操作:
工程師上線新版本,代碼中添加修改表結(jié)構(gòu)操作,導(dǎo)致數(shù)據(jù)庫被鎖長達(dá)幾個(gè)小時(shí),該業(yè)務(wù)線業(yè)務(wù)幾個(gè)小時(shí)出現(xiàn)服務(wù)異常。
工程師修改表結(jié)構(gòu)不加where條件等操作,導(dǎo)致該表中數(shù)據(jù)被覆蓋掉。
1.4.1.3、索引問題誤操作:
在java的某個(gè)底層框架中,在初始化時(shí)候,默認(rèn)有添加索引的操作,再一次預(yù)發(fā)布,上線測試中,導(dǎo)致線上數(shù)據(jù)庫直接被鎖數(shù)小時(shí)(環(huán)境隔離的重要性)。
某一個(gè)程序或者腳本中查詢沒有索引的數(shù)據(jù),導(dǎo)致全表掃描,加上一些接口相互調(diào)用訪問,經(jīng)常會(huì)出現(xiàn)數(shù)據(jù)庫的所有連接被占用的情況,導(dǎo)致查詢沒有辦法執(zhí)行。
1.4.1.4、物理誤操作:
機(jī)房斷電、斷網(wǎng),記得第一份工作時(shí)候,在公司機(jī)房上架、下架服務(wù)器,拔錯(cuò)電源插頭,導(dǎo)致測試環(huán)境服務(wù)不可用(辦公室機(jī)房放測試開發(fā)環(huán)境,正式環(huán)境在運(yùn)營商機(jī)房托管),雖然沒有影響線上業(yè)務(wù),但是這件事時(shí)刻銘記在心。
1.5、數(shù)據(jù)安全
數(shù)據(jù)安全包括三個(gè)方面也就是:CIA(Confidentiality, Integrity, Availability)
(1)保密性:不允許未經(jīng)授權(quán)的用戶存取信息;
(2)完整性:只允許被授權(quán)的用戶修改數(shù)據(jù);
(3)可用性:已授權(quán)的用戶可以對數(shù)據(jù)進(jìn)行存取。
物理安全:確保存儲(chǔ)物理設(shè)備安全,別被雷擊、盜竊了
防火墻:對數(shù)據(jù)庫訪問進(jìn)行限制,例如允許那個(gè)路由訪問數(shù)據(jù)庫的端口
運(yùn)維安全:對運(yùn)維行為進(jìn)行流程化管理,提供事前審批、事中控制、事后審計(jì)、定期報(bào)表等功能,將審批、控制和追責(zé)有效結(jié)合,避免內(nèi)部運(yùn)維人員的惡意操作和誤操作行為
數(shù)據(jù)庫審計(jì):實(shí)時(shí)記錄網(wǎng)絡(luò)上的數(shù)據(jù)庫活動(dòng),對數(shù)據(jù)庫操作進(jìn)行細(xì)粒度審計(jì)
數(shù)據(jù)加密:從技術(shù)角度對數(shù)據(jù)進(jìn)行加密,通過數(shù)據(jù)加密能夠有效防止明文存儲(chǔ)引起的數(shù)據(jù)內(nèi)部泄密、高權(quán)限用戶的數(shù)據(jù)竊取,從根源上防止敏感數(shù)據(jù)泄漏
漏洞掃描:通過數(shù)據(jù)庫和代碼進(jìn)行漏洞掃描能夠有效的評(píng)估數(shù)據(jù)庫系統(tǒng)的安全漏洞和威脅并提供修復(fù)建議
數(shù)據(jù)備份:在數(shù)據(jù)庫出現(xiàn)異常情況,可以及時(shí)恢復(fù),誤刪除,機(jī)房斷電導(dǎo)致數(shù)據(jù)損壞
2、新手入行應(yīng)該先學(xué)習(xí)哪個(gè)數(shù)據(jù)庫?
推薦以開源MySQL為開始(80%~90%互聯(lián)網(wǎng)企業(yè)都在用,薪資相較OracleDBA要高一些(資本集中),上手相對容易),mysql熟悉以后,任何的關(guān)系型數(shù)據(jù)庫系統(tǒng)都是相通的,掌握了MySQL,其他的關(guān)系型數(shù)據(jù)庫都不在話下 ,非關(guān)系型數(shù)據(jù)庫相對關(guān)系型都比較簡單,而且部分理念也相通。
3、持續(xù)學(xué)習(xí)
其實(shí)不止是DBA,整個(gè)運(yùn)維體系都在做轉(zhuǎn)變,傳統(tǒng)的玩法效率低、重復(fù)工作多,已經(jīng)不適用互聯(lián)網(wǎng)公司高速度、快節(jié)奏的發(fā)展了,所以說DBA工作內(nèi)容需要轉(zhuǎn)變,思想也需要轉(zhuǎn)變,應(yīng)該向著如何快速交付、提高數(shù)據(jù)庫整體穩(wěn)定性、高效率運(yùn)維 、打造適合更多適合業(yè)務(wù)需要的數(shù)據(jù)庫產(chǎn)品方案,甚至給研發(fā)輸出數(shù)據(jù)架構(gòu)方案等這些方面發(fā)展。
4、數(shù)據(jù)庫前沿技術(shù)
例如DB自動(dòng)化管理平臺(tái)
主機(jī)管理:主機(jī)增刪改、主機(jī)資源(cpu、disk、men)
實(shí)例管理:實(shí)例增刪改、實(shí)例主從切換
審計(jì)管理:sql審核、sql回滾
日志管理:binlog、慢查詢
任務(wù)管理:定時(shí)任務(wù)
日常維護(hù):批量sql執(zhí)行、配置修改、自動(dòng)擴(kuò)容
到此這篇關(guān)于數(shù)據(jù)庫運(yùn)維人員DBA工作總結(jié)的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫運(yùn)維工作總結(jié)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Access和SQL Server里面的SQL語句的不同之處
做了一個(gè)Winform的營養(yǎng)測量軟件,來回的搗騰著Access數(shù)據(jù)庫,還是那幾句增刪改查,不過用多了,發(fā)現(xiàn)Access數(shù)據(jù)庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。2009-12-12Sql Server、Access數(shù)據(jù)排名的實(shí)現(xiàn)方法(例如:成績排名)
在很多時(shí)候,我們需要統(tǒng)計(jì)數(shù)據(jù)的排名情況,最常見的是成績、投票數(shù)等等的。2009-06-06TinkerPop框架查詢Gremlin圖實(shí)現(xiàn)過程詳解
這篇文章主要為大家介紹了TinkerPop框架查詢Gremlin圖實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11只有兩個(gè)字段用一個(gè)sql語句查詢出某個(gè)學(xué)生的姓名、成績以及在表中的排名
這篇文章主要介紹了只有兩個(gè)字段用一個(gè)sql語句查詢出某個(gè)學(xué)生的姓名、成績以及在表中的排名,需要的朋友可以參考下2014-08-08將sqlite3中數(shù)據(jù)導(dǎo)入到mysql中的實(shí)戰(zhàn)教程
最近因?yàn)楣ぷ鞯男枨螅枰獙qlite3中的數(shù)據(jù)導(dǎo)入到mysql中去,發(fā)現(xiàn)網(wǎng)上的一些教程都不夠詳細(xì),索性自己寫一篇,下面這篇文章主要給大家介紹了關(guān)于將sqlite3數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到mysql數(shù)據(jù)庫中的相關(guān)資料,需要的朋友可以參考下。2017-07-07利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法
這篇文章主要介紹了利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)的方法,需要的朋友可以參考下2014-08-08