DBA 是數(shù)據(jù)可用性、性能和安全性的重要組成部分。獲得優(yōu)秀的 DBA 是任何公司可以做的最重要的事情之一,以確保他們的數(shù)據(jù)庫操作繼續(xù)正常工作。那么如何找到優(yōu)秀的 DBA 呢?
在這篇文章中,我將向您展示我在面試 DBA 候選人時(shí)喜歡問的一些問題。
性能至關(guān)重要,那么這位候選人是否知道MySQL如何調(diào)整和優(yōu)化?
1、首先:您會(huì)推薦哪些最常見的性能優(yōu)化?
這是關(guān)于概念性知識(shí)的,通常是一個(gè)開放式問題。他們是否正在考慮扔硬件和增加資源?這是最簡單的解決方案,但通常不是正確的解決方案。如果數(shù)據(jù)庫設(shè)計(jì)不佳,性能通常會(huì)受到限制。他們會(huì)談?wù)撨@個(gè)嗎?我希望人們討論最佳選擇,并決定哪些變量或修復(fù)最有意義。我在客戶那里看到的簡單答案是調(diào)整像“innodb_dedicated_server”這樣的單個(gè)變量,這當(dāng)然有幫助,因?yàn)樗菐追N配置的快捷方式,但如果你不正確理解它可能會(huì)導(dǎo)致一些不希望的傷害(比如很多不需要的重做日志文件)。我正在尋找人們了解快速問題和長期問題之間的區(qū)別。
2、在 IO 綁定的系統(tǒng)中,為了更好地利用 IO,您需要哪些主要調(diào)優(yōu)參數(shù)?
磁盤 IO 是任何數(shù)據(jù)庫中最慢的部分,任何 DBA 都必須了解這個(gè)概念。簡單的答案總是添加更多內(nèi)存,但這不僅僅是關(guān)于緩沖池。候選人是否了解影響 IO 的其他變量和數(shù)據(jù)庫內(nèi)部結(jié)構(gòu)?例如,他們是否了解重做日志、刷新、io_capacity 等,他們可以了解他們所做的事情嗎?這些變量的組合將減少 IO 依賴,同時(shí)延長 SSD 壽命。
3、你會(huì)接到電話說數(shù)據(jù)庫速度很慢。你是做什么的?你如何識(shí)別一個(gè)慢查詢?優(yōu)化查詢的最佳策略是什么?
查詢優(yōu)化是每個(gè) DBA 都必須知道的活動(dòng)。即使數(shù)據(jù)庫在 99% 的情況下看似快速且高性能,一個(gè)惡意或慢查詢也可能導(dǎo)致整個(gè)應(yīng)用程序癱瘓。在這里,我們正在尋找不僅找到慢查詢而且調(diào)整和修復(fù)它的過程。我們需要了解導(dǎo)致查詢速度慢的原因是什么,例如索引、SQL 編寫技巧不佳等。幸運(yùn)的是,我們有工具可以識(shí)別壞人并幫助優(yōu)化過程。候選人決定使用的工具沒有他們經(jīng)歷的過程那么重要。我們正在尋找諸如識(shí)別缺失索引、錯(cuò)誤主鍵、超大表問題、模式設(shè)計(jì)等的能力。
4、假設(shè)您需要將 MySQL 服務(wù)器的流量增加 10 倍。您的可擴(kuò)展性策略是什么?讀取的縮放比例與寫入的縮放比例相同嗎?
這里有許多可擴(kuò)展性策略。您不僅要尋找具體的技術(shù)或流程,還要尋找它們背后的原因。需要討論和深入研究的關(guān)鍵事項(xiàng):添加副本以卸載流量、設(shè)置負(fù)載均衡器、增加可用硬件、分片等。所有這些都是有效的策略。真正的問題是候選人是否理解它們以及何時(shí)應(yīng)該使用和不應(yīng)該使用它們?
每個(gè) DBA 都必須構(gòu)建并確保他們的數(shù)據(jù)庫系統(tǒng)在需要時(shí)可用。因此,了解數(shù)據(jù)庫可用性策略至關(guān)重要。必須提出問題來衡量他們的理解:
5、您如何解釋異步復(fù)制滯后?為什么會(huì)有問題呢?你會(huì)如何解決它呢?
異步復(fù)制仍然是一個(gè)非常重要的話題,雖然性能隨著 MySQL 的每個(gè)版本和修改而不斷提高,但我仍然在幫助很多客戶解決復(fù)制設(shè)置和延遲的問題。許多公司使用副本進(jìn)行報(bào)告、備份和高可用性,因?yàn)槲覀兿M覀兊母北颈M可能保持最新。好消息是,這也為候選人提供了另一個(gè)跳出框框思考的機(jī)會(huì),因?yàn)楫惒綇?fù)制延遲可能會(huì)受到數(shù)據(jù)庫設(shè)計(jì)問題的顯著影響,例如沒有主鍵、長時(shí)間運(yùn)行的查詢、選擇更新等。
6、他們能解釋異步復(fù)制和同步復(fù)制之間的區(qū)別嗎?他們什么時(shí)候會(huì)選擇一個(gè)而不是另一個(gè)?
當(dāng)然,您可以在 MySQL 中使用幾種不同類型的異步復(fù)制(MySQL GTID、MariaDB GTID、Tungsten Replicator)和同步復(fù)制(Percona XtraDB Cluster、MySQL Group Replication),因此了解他們的一般知識(shí)有助于評估他們的技能。雖然這里沒有 100% 正確的答案,但重要的是要了解選擇一種解決方案而不是另一種解決方案的決策驅(qū)動(dòng)因素是什么,例如性能、一致性、可用性等。
7、基于 Galera 的解決方案最少需要多少個(gè)節(jié)點(diǎn)?添加更多節(jié)點(diǎn)的利弊是什么?
MySQL 領(lǐng)域有兩種主要的集群解決方案。基于 Galera 的復(fù)制,如 Percona XtraDB 集群和基于組復(fù)制的集群,如 InnoDB 集群。這個(gè)問題的關(guān)鍵是要知道 Galera 是為一致性和可用性而設(shè)計(jì)的,而不是為編寫可伸縮性而設(shè)計(jì)的。理解這些差異非常重要,因?yàn)?ldquo;更多的寫入器就更多的寫入”的想法是很常見的,就好像添加更多寫入器節(jié)點(diǎn)可能會(huì)增加集群的寫入容量。
當(dāng)然,您需要確保候選人不僅知道如何排除性能故障和設(shè)置高可用性,還需要了解一些基本的數(shù)據(jù)庫操作和技術(shù)。至少詢問一個(gè)關(guān)于安全、備份和主機(jī)(云或非云)的問題,是確保您了解基本知識(shí)的好方法。
8、請描述您推薦的備份策略。你會(huì)使用什么工具以及如何使用?
了解備份的重要性很重要。我正在尋找能夠引導(dǎo)我了解他們的經(jīng)歷并告訴我他們認(rèn)為什么是好的和安全的備份策略的人。當(dāng)他們說話時(shí),我會(huì)問一些問題,看看他們是否了解他們所運(yùn)行的設(shè)置的限制或好處。我希望他們能夠掌握不同的備份選項(xiàng)(物理的、邏輯的)以及可以推薦的備份策略(每日、每周、每月、完整、增量等)。當(dāng)然,我對人們?nèi)绾未_保他們的備份“良好”非常感興趣。不是每個(gè)人都認(rèn)為恢復(fù)測試應(yīng)該被視為備份策略的一部分。
9、部署 MySQL 時(shí)您會(huì)遵循哪些基本安全策略?
這一次也還是沒有標(biāo)準(zhǔn)的答案,但毫無疑問,DBA 必須保護(hù)公司的數(shù)據(jù)。需要注意的一些事項(xiàng):強(qiáng)密碼、只能從 localhost 進(jìn)行 root 訪問、刪除沒有密碼的用戶、將 SUPER priv 刪除給非管理員用戶、限制用戶訪問他們自己的數(shù)據(jù)庫/表、加密數(shù)據(jù)等。
10、請解釋 RDS MySQL 和 Aurora 之間的主要區(qū)別。您何時(shí)會(huì)推薦一種解決方案而不是另一種?
毫無疑問,云已經(jīng)改變了我們運(yùn)行數(shù)據(jù)庫的方式。候選人是否對 AWS 的前兩個(gè) MySQL 選項(xiàng)之間的差異有基本的了解?他們是不同的,他們知道嗎?了解優(yōu)點(diǎn)和缺點(diǎn)是至關(guān)重要的。雖然 RDS 提供了一種簡單的方法來設(shè)置開箱即用的異步復(fù)制,但它需要一些操作活動(dòng)來確保環(huán)境健康,即數(shù)據(jù)一致性檢查、在主故障時(shí)處理故障轉(zhuǎn)移等。另一方面, Aurora 通過以更高的成本和一些額外的寫入開銷確保一致性和可用性來解決操作部分,因此它可能無法在高流量環(huán)境中很好地?cái)U(kuò)展。
原文地址:https://mp.weixin.qq.com/s/8QLpTfunWNFw57OmNq-_hA