《商業(yè)銀行數(shù)據(jù)庫管理實踐》共12 章,第1~3 章講解在金融科技大潮下,商業(yè)銀行數(shù)據(jù)庫架構(gòu)轉(zhuǎn)型的新思路,隨后闡述集中式 到分布式數(shù)據(jù)庫實踐,以及從小型機遷移到x86 平臺的實踐;第4~6 章講述商業(yè)銀行Db2、MySQL、GoldenDB 等數(shù)據(jù)庫新系統(tǒng)上線以及數(shù)據(jù)庫版本升級等重要內(nèi)容;第7~9 章講述Db2、MySQL、GoldenDB 等數(shù)據(jù)庫故 障診斷理論及實戰(zhàn)案例;第10、11 章分別講述Db2 和MySQL 數(shù)據(jù)庫的性能優(yōu)化;第12 章主要講述筆者對 商業(yè)銀行數(shù)據(jù)庫管理方面的思考。 《商業(yè)銀行數(shù)據(jù)庫管理實 踐》主要面向企業(yè)(尤其是商業(yè)銀行)的數(shù)據(jù)庫架構(gòu)師、數(shù)據(jù)庫管理員、應(yīng)用開發(fā)人員和數(shù)據(jù)庫技術(shù)決 策人員,也適合大學生學習數(shù)據(jù)庫使用。
提出商業(yè)銀行數(shù)據(jù)庫管理的新思路和新方法
分享金融級數(shù)據(jù)庫的建設(shè)和運維實戰(zhàn)案例
提升商業(yè)銀行數(shù)據(jù)庫的自主掌控能力
感悟和反思商業(yè)銀行數(shù)據(jù)庫管理實踐
一路走來,心懷感恩
西風烈,
長空雁叫霜晨月。
霜晨月,
馬蹄聲碎,
喇叭聲咽。
雄關(guān)漫道真如鐵,
而今邁步從頭越。
從頭越,
蒼山如海,
殘陽如血。
這首《憶秦娥·婁山關(guān)》是主席的經(jīng)典之作,寫于紅軍取得婁山關(guān)戰(zhàn)斗勝利之后。婁山關(guān)戰(zhàn)斗是紅軍長征以來打的個大勝仗,這場勝利徹底粉碎了敵人圍堵紅軍的企圖,極大地鼓舞了全軍的士氣,抒寫了人民的勝利信心。這首詞是我喜歡的,所以和廣大讀者首先通過這首詞重溫崢嶸歲月,感悟初心力量。
回想起10年前,我還在IBM中國實驗室從事數(shù)據(jù)庫研發(fā)工作,當時出于為廣大讀者獻上數(shù)據(jù)庫著作的情懷,出版了本數(shù)據(jù)庫著作《DB2設(shè)計、管理與性能優(yōu)化藝術(shù)》(2019年,IBM公司將DB2改名為Db2,故本書正文中統(tǒng)一用Db2),接下來的3年間又陸續(xù)出版了《從Oracle到DB2開發(fā)從容轉(zhuǎn)身》《運籌帷幄DB2從Oracle運維轉(zhuǎn)型》《DB2設(shè)計、管理與性能優(yōu)化藝術(shù)》,這就是舞動DB2系列,這個系列在中國內(nèi)地和臺灣省獲得了很多讀者的喜愛。
完成舞動DB2序列后,我于2014年4月加入中信銀行,開始帶領(lǐng)技術(shù)團隊負責全行的數(shù)據(jù)庫運維管理工作。在繁忙的日常工作之余,我和同事王寧、張聰、馬學濤共同完成了《商業(yè)銀行數(shù)據(jù)庫管理實踐》的寫作。
談起這本書的寫作初衷,還有個故事。在2019年五一勞動節(jié)期間,我閱讀了《大唐西域記》一書,整本書文筆簡潔流暢,記述主次分明、詳略得當,記錄了玄奘法師西行的所見所聞?赐赀@本書后,我查閱相關(guān)資料得知玄奘法師西行五萬余里,歷時近19年,行經(jīng)當時138個國家,魯迅稱贊他為民族的脊梁,梁啟超稱他為千古一人,我也被他九死一生舍身求法的精神所感動、所激勵。回想起自己從2002年開始接觸數(shù)據(jù)庫到今年也有19年了,隨著理論的積累和實踐的深入,對商業(yè)銀行如何做好數(shù)據(jù)庫管理有了更加深入的理解。在玄奘精神的驅(qū)使下,我們從2019年5月1日開始動筆到2021年5月1日封筆,期間批閱9遍、增刪10次,花費了兩年時間終完成本書的寫作。
在向廣大讀者介紹本書之前,首先講講我的數(shù)據(jù)庫研發(fā)和運維經(jīng)歷,期間也會帶有我自己的學業(yè)和職業(yè)規(guī)劃,希望能啟發(fā)廣大讀者。
學業(yè)規(guī)劃進入信息技術(shù)的黃埔軍校
人生是一趟心靈的偉大旅程,擇高處立,向?qū)捥幮,那就要順勢而為;叵胱约旱某砷L經(jīng)歷,生長于一個傳統(tǒng)文化發(fā)祥地早叫中國的地方,那里有巍巍的高山,滔滔的大河。唐朝宰相李吉甫曾經(jīng)如此評價:河中之地,左右王都;黃河北來,太華南依;總水陸之形勢,壯關(guān)河之氣色。在這片具有濃厚歷史文化底蘊的地方,我將知識就是力量知識改變命運當作的人生信念,這就需要走出去證明自己的價值。
出于成為一名電廠工人的目標,我在1997年成功考取了中國電力行業(yè)的學府華北電力大學,我是多年以來,我所在家鄉(xiāng)小鎮(zhèn)上的個大學生。但入學以后,我曾經(jīng)過相當長時間的迷茫,失去過奮斗的方向。2001年,在即將畢業(yè)的大四,我注意到電力行業(yè)早就進入了穩(wěn)定期,這個時候如果繼續(xù)堅持并不是選擇,于是我對自己將來要走的路進行了再次規(guī)劃。
2001年,中國信息技術(shù)的發(fā)展正處于技術(shù)爆發(fā)的前夜,我預(yù)感到這個行業(yè)即將快速發(fā)展;但自身所掌握的計算機知識和技術(shù)還很有限,還需要進一步學習。經(jīng)過思考后,我對自己的學業(yè)和職業(yè)進行了規(guī)劃:首先考取計算機方向的研究生,畢業(yè)后進入大型研發(fā)企業(yè)進行鍛煉以提升自己的能力。
有了規(guī)劃后,我進行了不打折扣的執(zhí)行,每天堅持學習12小時,過著苦行僧一般的生活,暑去寒來,終在2002年考取了信息技術(shù)的黃埔軍校北京郵電大學計算機學院國家重點實驗室。在國家重點實驗室,我系統(tǒng)地學習了計算機經(jīng)典理論,參與了各種項目,開闊了眼界,積累了軟件開發(fā)經(jīng)驗,C/C 和Java語言的運用已非常嫻熟。也是從那時起開始接觸Oracle、MySQL等數(shù)據(jù)庫。
從研究生開始,我正式建立了自己計算機科班出身的優(yōu)勢,至此完成了學業(yè)規(guī)劃的步。一路走來,感謝師友,在北郵讀書的時候幸運地遇到了孔祥澤、薛海強、趙文峰、李興才等同學,感恩遇到的每個人和每件事。
必然選擇加入IBM軟件開發(fā)實驗室
畢業(yè)以后,我通過校園招聘于2005年進入了信息技術(shù)的搖籃IBM中國開發(fā)實驗室(IBM CDL),這些都是自己職業(yè)規(guī)劃的必然選擇。
那時候的IBM中國開發(fā)實驗室高手云集,清一色的高學歷,一個部門畢業(yè)于清華、北大的同事占到了三分之一,平時溝通郵件都是英文,和硅谷等海外實驗室的電話會議也都是英文,這些對當時的我來說都是非常新奇的。
剛加入的時候,從事過較短時間的語音產(chǎn)品(IBM Via Voice)開發(fā),這個技術(shù)現(xiàn)在看起來仍然高深,但在2005年的時候IBM就已經(jīng)做出產(chǎn)品了。后來換到了信息管理產(chǎn)品研發(fā)部門,機緣巧合進入了Db2數(shù)據(jù)庫研發(fā)和客戶支持領(lǐng)域,從此確立了自己的專業(yè)方向。在實驗室的那些年,自己如饑似渴地鉆研,并不斷向周圍優(yōu)秀的同事學習,建立了自己的數(shù)據(jù)庫開發(fā)和支持所需知識體系。印象中深的一次,在Db2里面獨立設(shè)計開發(fā)了一個新功能,并發(fā)布給某日本客戶使用,解決了困擾這個客戶長期以來的難題。這個經(jīng)歷讓我獲得了成就感,那就是用技術(shù)和產(chǎn)品幫助客戶解決問題,這就是技術(shù)人員的價值。
在IBM從事Db2數(shù)據(jù)庫開發(fā)和客戶支持期間,收獲是沉甸甸的:深刻理解和學習了國際化大公司數(shù)據(jù)庫研發(fā)體系;獲得了堅實的數(shù)據(jù)庫理論、開發(fā)和支持經(jīng)驗;作為作者,出版舞動DB2系列專著四部;發(fā)表技術(shù)專利,獲得了對知識產(chǎn)權(quán)的保護意識;提升了英文水平,通過工作體驗了西方企業(yè)的工作文化,等等。
在IBM期間,感謝干毅民、孫冰江兄長般的關(guān)懷和支持;感謝Claire洪給予我的指導(dǎo),讓我理解了IBM的全球研發(fā)和支持體系。再次感謝張建鑫、朱志輝、朱彬、彭曉強、李越、李玉明、王富國、楊小華、陳詩然、郭銳、李海峰、馬鐳、孫岳等實驗室同事,我們有一段十分愉快的共事時光。
回想起來,IBM中國實驗室的Db2開發(fā)人員很可能是中國早從事數(shù)據(jù)庫引擎研發(fā)的,這些人員目前已經(jīng)在互聯(lián)網(wǎng)以及各大商業(yè)銀行承擔數(shù)據(jù)庫開發(fā)或者運維重任。
機緣巧合加入中信銀行數(shù)據(jù)中心
如果說考取北郵計算機學院和進入IBM中國實驗室是自己有意識的規(guī)劃,那么2014年加入中信銀行卻是機緣巧合,這個機緣還是在Db2數(shù)據(jù)庫上。
剛加入中信銀行時,我進入了Db2的海洋,生產(chǎn)環(huán)境所用數(shù)據(jù)庫幾乎全是Db2。我也從一名多年從事Db2開發(fā)的人員逐漸轉(zhuǎn)型到了數(shù)據(jù)庫運維上,后來成為團隊負責人,開始帶領(lǐng)團隊承擔全行數(shù)據(jù)庫、中間件以及集中備份相關(guān)工作,所運維的數(shù)據(jù)庫種類也從單純的Db2擴展到了中信銀行自研的GoldenDB分布式數(shù)據(jù)庫。
談起GoldenDB分布式數(shù)據(jù)庫,其實中信銀行早在2014年就正式啟動了研發(fā)工作,當時可謂大勢所趨,生逢其時。首先,安全可控的國家戰(zhàn)略要求銀行IT從傳統(tǒng)封閉式架構(gòu)向開源、開放、自主可控的架構(gòu)轉(zhuǎn)型;其次,高并發(fā)交易的出現(xiàn)要求銀行IT架構(gòu)支持縱向擴展;后,銀行經(jīng)營環(huán)境的變化要求銀行IT基礎(chǔ)設(shè)施從昂貴的IOE設(shè)施向x86服務(wù)器、本地磁盤等低成本設(shè)施轉(zhuǎn)型。
在中信銀行工作時,我作為數(shù)據(jù)中心分布式數(shù)據(jù)庫技術(shù)牽頭人,在上線前使用高可用測試場景進行了充分測試,協(xié)助開發(fā)中心修訂了數(shù)據(jù)庫產(chǎn)品缺陷;作為牽頭人設(shè)計了中信銀行分布式數(shù)據(jù)庫技術(shù)規(guī)范、應(yīng)急手冊、切換演練方案、自動化巡檢方案等,這些技術(shù)規(guī)范發(fā)揮了指南針的作用,真正使得分布式數(shù)據(jù)庫運維做到了有據(jù)可憑,從而和其他銀行同業(yè)技術(shù)對標提供了基礎(chǔ)。
我非常榮幸地深度參與了凌云工程,實現(xiàn)了中信銀行總行核心系統(tǒng)從AS400下移到x86平臺,已于2020年5月3日成功實施;深度參與長征項目,實現(xiàn)了網(wǎng)上銀行系統(tǒng)從小型機Db2下移到x86平臺GoldenDB分布式數(shù)據(jù)庫,該項目已于2019年9月10日成功 實施。
這些工作提升了我的技術(shù)深度和廣度,也為本書的寫作奠定了堅實基礎(chǔ)。
感謝數(shù)據(jù)中心領(lǐng)導(dǎo)遲鯤對我工作的精心指導(dǎo),以及班孝明、黃湘武、陳讓寬等領(lǐng)導(dǎo)對我工作上的幫助;感謝王湛、劉小娜、李永忠、胡彥魁、劉明、劉文濤、衛(wèi)東、鄧瓊等的關(guān)懷和鼓勵,他們使我充滿前進的力量;很高興認識了周渤、周海鵬、王培發(fā)、劉鵬飛、馬超、陳建鋒、張興強、張占越等同事,和他們的交流讓我受益匪淺,真心感恩遇到的每個人和每件事。
學業(yè)再規(guī)劃進入管理學的黃埔軍校
從2016年2月開始負責數(shù)據(jù)庫團隊開始,我主要從實踐上不斷摸索管理經(jīng)驗,從剛開始的彷徨到2018年逐漸進入角色,團隊多次獲得優(yōu)秀團隊稱號。但是,管理實踐的摸索到了一定階段會遇到瓶頸,還需要對管理學進行系統(tǒng)化的學習。
經(jīng)過認真準備,我在2018年考取了中國人民大學工商管理研究生,系統(tǒng)學習了管理學理論,并向多位教授學習,積極和同學交流,不斷提升自己,終于2020年12月20日獲得管理學碩士學位。通過學習和總結(jié),我現(xiàn)在有信心有能力帶好團隊并創(chuàng)造佳績。
難忘的是在論文開題階段,我選擇了《商業(yè)銀行IT基礎(chǔ)設(shè)施數(shù)字化轉(zhuǎn)型研究》,這是一個很大的挑戰(zhàn)。寫作過程是充實并快樂的。我通過調(diào)研以及各種交流,終完成了論文的寫作并通過答辯,也讓我對金融科技有了更深入的理解。
在中國人民大學,遇到了好老師、好同學,建立了管理學思維。我經(jīng)常反思一個人的價值不是用名利來衡量的,而是取決于對社會的貢獻。知識創(chuàng)造財富,更讓社會進步。知識,既讓我們擁有科技創(chuàng)新的能力,也讓我們擁有文化傳承的自信。
在中國人民大學讀書期間,我想把我真摯的感謝獻給我的導(dǎo)師王刊良教授,他把他的管理學理論以潛移默化的方式傳授給我,讓我從一名計算機科學畢業(yè)的學生開始踏入工商管理學的大門。在我寫作遇到迷茫時,他給予我思路上的啟發(fā),使我茅塞頓開。他的博學和平易近人更是讓我如沐春風,也是我做人和做學問的榜樣。感謝我的同學藍雪松、武曉燕和劉文龍,在平時的學習中他們的指點讓我受益匪淺。
數(shù)據(jù)庫學習之路致商業(yè)銀行數(shù)據(jù)庫從業(yè)人員
目前,各大商業(yè)銀行都在不斷加大科技人員投入,對于當下銀行業(yè)而言已經(jīng)成為標配,金融科技也進一步推動了銀行業(yè)務(wù)的進一步發(fā)展。對各大商業(yè)銀行數(shù)據(jù)庫從業(yè)人員來說,在傳統(tǒng)數(shù)據(jù)庫向分布式數(shù)據(jù)庫轉(zhuǎn)型階段,應(yīng)抓住機遇順勢而為,正所謂站在臺風口,豬都能飛上天。
從數(shù)據(jù)庫運維的發(fā)展趨勢來看,將來必然是走向自動化和智能化,這對廣大數(shù)據(jù)庫從業(yè)者來說,機遇遠大于挑戰(zhàn)。在智能化時代,數(shù)據(jù)庫從業(yè)者絕大部分工作是開發(fā)平臺化工具,通過平臺化工具將DBA從事務(wù)性工作中完全解脫出來,這樣DBA能將部分精力放在數(shù)據(jù)庫架構(gòu)、數(shù)據(jù)模型設(shè)計、應(yīng)用開發(fā)指導(dǎo)、運維規(guī)范、優(yōu)化指南等更需要智慧的地方。
在這個時代,廣大數(shù)據(jù)庫從業(yè)人員需要身體力行去證明,人生重要的不是事后的榮譽或財富,而是過程中獲得的歷練和成長。不在榮譽面前停留,不為失敗辯解,一直在路上,風雨兼程。三分天注定七分靠打拼,愛拼才會贏。
只有數(shù)據(jù)庫從業(yè)人員保持對學習、鍛煉和工作的熱情,心態(tài)才能永遠年輕;只有擁有旺盛的精力和強大的內(nèi)心,才能經(jīng)得起世事的磨練。那些未能打敗你的,都將使你更強大。哪有什么優(yōu)秀,不過是更專注、更勤奮、更熱愛。所謂的偉大,不過是簡單、正直、目標遠大和堅忍不拔。
我們很幸運趕上金融科技時代發(fā)展的大潮,只有為社會、為他人創(chuàng)造價值,才能實現(xiàn)自身價值。帶著夢想去奮斗,感恩時代,貢獻社會!
本書內(nèi)容
本書內(nèi)容嚴謹精細、生動活潑,全書共12章。第1~3章提出在金融科技大潮下,商業(yè)銀行數(shù)據(jù)庫架構(gòu)轉(zhuǎn)型新思路,隨后深入闡述從集中式到分布式數(shù)據(jù)庫實踐,以及從小型機遷移到x86平臺實踐;第4~6章講述商業(yè)銀行Db2、MySQL、GoldenDB等數(shù)據(jù)庫新系統(tǒng)上線以及數(shù)據(jù)庫版本升級等重要內(nèi)容;第7~9章講述Db2、MySQL、GoldenDB等數(shù)據(jù)庫故障診斷理論,并分享實戰(zhàn)案例;第10、11章分別講述Db2和MySQL數(shù)據(jù)庫性能優(yōu)化;第12章分享筆者對商業(yè)銀行數(shù)據(jù)庫管理方面的思考,這是全書的總結(jié)部分,以啟發(fā)讀者管理好所在銀行的生產(chǎn)數(shù)據(jù)庫。
為了方便讀者,在書中加入了注意小技巧和比較這樣的提示性文字。其中,注意的內(nèi)容是需要讀者在工作中重點留意的;小技巧的內(nèi)容是重點向讀者分享的實戰(zhàn)技巧;比較的內(nèi)容是一些容易混淆的概念,是向讀者解釋和澄清的。
后,在文中的一些腳本片段采用灰底形式,這樣就非常明顯地和正文區(qū)別開了,同時加黑處理了腳本中的一些重點內(nèi)容以示強調(diào)。
本書讀者
本書主要面向企業(yè)(尤其是商業(yè)銀行)的數(shù)據(jù)庫架構(gòu)師、數(shù)據(jù)庫管理員、應(yīng)用開發(fā)人員和數(shù)據(jù)庫技術(shù)決策人員,可為他們提供業(yè)內(nèi)先進、富有技術(shù)深度和實踐意義的重要技術(shù)參考。
致謝
首先感謝清華大學出版社在本書的出版過程中給予的大力支持和幫助!感謝中信銀行數(shù)據(jù)庫專家駱曉瑞,他審核了大部分章節(jié)并提出了很多寶貴建議;感謝IBM中國實驗室資深工程師李越,他仔細審核了部分章節(jié)并給出了修訂建議;感謝民生銀行資深DBA朱彬,我和他在商業(yè)銀行數(shù)據(jù)庫運維實踐上有充分的交流,讓我獲益良多;感謝阿里云數(shù)據(jù)庫研發(fā)總監(jiān)彭曉強,他在數(shù)據(jù)庫研發(fā)上技術(shù)深厚,在和他的經(jīng)常性探討中頗受啟迪;感謝螞蟻集團OceanBase數(shù)據(jù)庫專家李玉明,他在分布式數(shù)據(jù)庫理論和實踐方面具有很深的造詣,幫助我審核了分布式數(shù)據(jù)庫相關(guān)章節(jié)。
王飛鵬
2021年7月18日
于北京
第1章 商業(yè)銀行數(shù)據(jù)庫架構(gòu)轉(zhuǎn)型 1
1.1 商業(yè)銀行信息科技發(fā)展環(huán)境 1
1.1.1 十四五規(guī)劃 2
1.1.2 金融科技發(fā)展規(guī)劃 2
1.1.3 銀保監(jiān)會監(jiān)管新趨勢 3
1.2 商業(yè)銀行信息科技體系 3
1.2.1 組織架構(gòu) 4
1.2.2 制度流程 4
1.2.3 IT基礎(chǔ)設(shè)施 5
1.2.4 運維支撐 6
1.2.5 容災(zāi)體系 7
1.2.6 信息安全 8
1.3 基于ITIL規(guī)范的運維體系 9
1.3.1 事件處理 9
1.3.2 問題處理 9
1.3.3 變更實施 9
1.3.4 應(yīng)急處置 9
1.3.5 安全配置基線 10
1.4 數(shù)據(jù)庫架構(gòu)轉(zhuǎn)型 10
1.4.1 關(guān)系數(shù)據(jù)庫起源 11
1.4.2 從商業(yè)數(shù)據(jù)庫到開源數(shù)據(jù)庫轉(zhuǎn)型 11
1.4.3 從集中式到分布式數(shù)據(jù)庫轉(zhuǎn)型 12
1.4.4 國產(chǎn)數(shù)據(jù)庫發(fā)展 13
1.4.5 數(shù)據(jù)庫選型策略 15
1.5 轉(zhuǎn)型對DBA團隊的挑戰(zhàn) 15
1.5.1 組織結(jié)構(gòu) 16
1.5.2 文化建設(shè) 16
1.5.3 人才梯隊建設(shè) 16
1.6 新技術(shù)運用和輸出 17
1.6.1 NoSQL數(shù)據(jù)庫 17
1.6.2 NewSQL數(shù)據(jù)庫 18
1.6.3 數(shù)據(jù)庫網(wǎng)格 19
1.6.4 新技術(shù)運用建議 20
1.6.5 新技術(shù)輸出建議 21
小結(jié) 21
第2章 從集中式到分布式數(shù)據(jù)庫 23
2.1 從某商業(yè)銀行電商管家系統(tǒng)談起 24
2.1.1 物理部署架構(gòu) 24
2.1.2 應(yīng)用服務(wù)器性能瓶頸及解決方案 25
2.2 從集中式到分布式數(shù)據(jù)庫電商管家系統(tǒng)演進之路 25
2.2.1 硬件擴容方案摩爾定律失效導(dǎo)致效果有限 26
2.2.2 Redis緩存方案解決高并發(fā)性能問題 27
2.2.3 MySQL讀寫分離方案解決高讀寫比性能問題 28
2.2.4 分庫分表方案解決性能和容量瓶頸問題 29
2.2.5 分布式數(shù)據(jù)庫中間件方案通過中間件透明訪問數(shù)據(jù)庫 31
2.2.6 分布式數(shù)據(jù)庫方案通過數(shù)據(jù)庫解決所有問題 34
2.3 GoldenDB數(shù)據(jù)庫的前世今生 35
2.3.1 GoldenDB數(shù)據(jù)庫的研發(fā)和運用歷程 36
2.3.2 GoldenDB數(shù)據(jù)庫邏輯架構(gòu) 37
2.3.3 GoldenDB數(shù)據(jù)庫部署架構(gòu) 38
2.3.4 GoldenDB數(shù)據(jù)庫關(guān)鍵創(chuàng)新技術(shù) 39
2.3.5 GoldenDB數(shù)據(jù)庫事務(wù)的ACID特性 41
2.4 GoldenDB數(shù)據(jù)庫與CAP理論 43
2.4.1 什么是CAP理論 43
2.4.2 GoldenDB保證一致性 44
2.4.3 GoldenDB程度保證可用性 45
2.4.4 GoldenDB保證分區(qū)容錯性 45
2.5 GoldenDB數(shù)據(jù)庫應(yīng)用開發(fā)和運維實踐 46
2.5.1 分布式數(shù)據(jù)庫帶來的挑戰(zhàn) 46
2.5.2 應(yīng)用開發(fā)方面的應(yīng)對措施 47
2.5.3 生產(chǎn)運維方面的應(yīng)對措施 48
2.5.4 技術(shù)規(guī)范的制定和落實 49
小結(jié) 50
第3章 從小型機遷移到x86服務(wù)器 51
3.1 遷移項目概述 51
3.1.1 商業(yè)匯票系統(tǒng)下移背景與目標 52
3.1.2 遷移計劃 52
3.1.3 數(shù)據(jù)遷移原理 53
3.1.4 遷移難點分析 54
3.2 小型機與x86服務(wù)器大比拼 54
3.2.1 計算資源對比分析 55
3.2.2 存儲資源對比分析 56
3.2.3 可擴展性對比分析 57
3.2.4 可靠性對比分析 57
3.2.5 小型機與x86服務(wù)器計算資源實測對比分析 58
3.3 小型機下移x86服務(wù)器的資源轉(zhuǎn)換方案 59
3.3.1 x86服務(wù)器資源轉(zhuǎn)換原則 59
3.3.2 x86服務(wù)器資源轉(zhuǎn)換方案 59
3.3.3 商業(yè)匯票系統(tǒng)資源轉(zhuǎn)換結(jié)果 61
3.4 基礎(chǔ)軟件版本升級與架構(gòu)優(yōu)化 61
3.4.1 升級策略 62
3.4.2 不同版本差異性對比 63
3.4.3 軟件架構(gòu)優(yōu)化 65
3.4.4 商業(yè)匯票系統(tǒng)軟件升級和架構(gòu)優(yōu)化結(jié)果 66
3.5 小型機下移x86服務(wù)器系統(tǒng)測試方案 67
3.5.1 傳統(tǒng)測試方法 67
3.5.2 高仿真測試方法 68
3.5.3 性能測試評估原則 70
3.5.4 測試方法選擇策略 71
3.5.5 商業(yè)匯票系統(tǒng)測試方案選擇結(jié)果 72
3.6 小型機下移x86服務(wù)器實施 72
3.6.1 Java程序遷移 72
3.6.2 C/C 程序遷移 74
3.6.3 數(shù)據(jù)庫離線遷移 75
3.6.4 數(shù)據(jù)庫平滑遷移 82
3.6.5 數(shù)據(jù)庫遷移方案的選擇策略 91
3.6.6 商業(yè)匯票系統(tǒng)數(shù)據(jù)庫平滑遷移步驟 92
小結(jié) 101
第4章 集中式數(shù)據(jù)庫上線部署 102
4.1 部署需求 102
4.1.1 邏輯架構(gòu) 103
4.1.2 功能性需求 104
4.1.3 非功能性需求 105
4.1.4 容災(zāi)需求 106
4.1.5 某銀行網(wǎng)絡(luò)貸款系統(tǒng)部署需求結(jié)論 107
4.2 數(shù)據(jù)庫部署環(huán)境規(guī)劃 108
4.2.1 計算資源規(guī)劃 108
4.2.2 存儲資源規(guī)劃 109
4.2.3 網(wǎng)絡(luò)資源規(guī)劃 110
4.2.4 數(shù)據(jù)庫選型 111
4.2.5 災(zāi)備規(guī)劃 112
4.2.6 某銀行網(wǎng)絡(luò)貸款系統(tǒng)規(guī)劃結(jié)論 113
4.3 Db2數(shù)據(jù)庫部署 113
4.3.1 高可用架構(gòu)選擇 114
4.3.2 軟件安裝 115
4.3.3 用戶創(chuàng)建 116
4.3.4 實例創(chuàng)建 117
4.3.5 數(shù)據(jù)庫創(chuàng)建 117
4.3.6 按照規(guī)范配置參數(shù) 117
4.3.7 災(zāi)備方案實施 120
4.3.8 某銀行網(wǎng)絡(luò)貸款系統(tǒng)數(shù)據(jù)庫部署方案 123
4.4 MySQL數(shù)據(jù)庫部署 123
4.4.1 高可用架構(gòu)選擇 124
4.4.2 軟件安裝 127
4.4.3 用戶創(chuàng)建 127
4.4.4 數(shù)據(jù)庫創(chuàng)建 128
4.4.5 按照規(guī)范配置參數(shù) 129
4.4.6 災(zāi)備搭建 130
4.5 監(jiān)控、巡檢和應(yīng)急腳本部署 132
4.5.1 監(jiān)控腳本部署 132
4.5.2 巡檢腳本部署 133
4.5.3 應(yīng)急腳本部署 134
4.6 集中備份方案的制訂與實施 134
4.6.1 備份方案 135
4.6.2 備份策略 136
4.6.3 備份實施 137
4.6.4 某銀行網(wǎng)絡(luò)貸款系統(tǒng)備份方案 137
小結(jié) 138
第5章 分布式數(shù)據(jù)庫上線部署 139
5.1 部署需求分析 140
5.1.1 某商業(yè)銀行對私業(yè)務(wù)平臺簡介 140
5.1.2 功能性需求 140
5.1.3 非功能性需求 141
5.1.4 災(zāi)備需求 142
5.1.5 部署需求分析結(jié)論 143
5.2 基礎(chǔ)軟硬件環(huán)境規(guī)劃 144
5.2.1 總體部署規(guī)劃 144
5.2.2 計算資源規(guī)劃 145
5.2.3 存儲資源規(guī)劃 147
5.2.4 網(wǎng)絡(luò)資源規(guī)劃 148
5.2.5 對私BP系統(tǒng)規(guī)劃結(jié)論 149
5.3 GoldenDB分布式數(shù)據(jù)庫部署 149
5.3.1 按照規(guī)范配置操作系統(tǒng) 150
5.3.2 安裝管理節(jié)點雙機軟件 151
5.3.3 安裝GoldenDB集群軟件 154
5.3.4 創(chuàng)建GoldenDB集群 158
5.3.5 向集群中添加GTM節(jié)點 159
5.3.6 向集群中添加數(shù)據(jù)分片 160
5.3.7 向集群中添加DBProxy節(jié)點 161
5.3.8 創(chuàng)建DBProxy連接實例 161
5.3.9 按照規(guī)范配置數(shù)據(jù)庫參數(shù) 164
5.3.10 數(shù)據(jù)遷移方案 167
5.4 監(jiān)控、巡檢和應(yīng)急腳本部署 170
5.4.1 監(jiān)控腳本部署 170
5.4.2 深度巡檢工具部署 171
5.4.3 自動化應(yīng)急腳本部署 173
5.5 集中備份方案的制訂與實施 174
5.5.1 備份方案 175
5.5.2 備份策略 175
5.5.3 備份實施 175
小結(jié) 177
第6章 商業(yè)銀行數(shù)據(jù)庫升級 178
6.1 商業(yè)銀行數(shù)據(jù)庫升級概述 178
6.1.1 為什么要升級數(shù)據(jù)庫 178
6.1.2 數(shù)據(jù)庫升級策略 179
6.2 規(guī)劃數(shù)據(jù)庫升級 180
6.2.1 數(shù)據(jù)庫升級前評估 180
6.2.2 規(guī)劃數(shù)據(jù)庫服務(wù)器升級 181
6.2.3 規(guī)劃數(shù)據(jù)庫客戶端升級 183
6.2.4 規(guī)劃數(shù)據(jù)庫應(yīng)用程序升級 184
6.3 測試方案的選擇 186
6.3.1 傳統(tǒng)測試方案 186
6.3.2 高仿真測試方案 187
6.3.3 機器人流程自動化測試方案 188
6.3.4 各種測試方案對比 189
6.4 制訂數(shù)據(jù)庫升級方案 190
6.4.1 數(shù)據(jù)庫版本升級 190
6.4.2 數(shù)據(jù)庫升級回退方案 197
6.4.3 方案制訂方面的建議 200
6.5 數(shù)據(jù)庫升級實戰(zhàn)某商業(yè)銀行理財平臺數(shù)據(jù)庫升級 202
6.5.1 理財平臺系統(tǒng)數(shù)據(jù)庫升級規(guī)劃 202
6.5.2 使用原地升級方案升級理財平臺數(shù)據(jù)庫 204
6.5.3 使用原地回退方案對理財平臺數(shù)據(jù)庫逆向升級 212
6.5.4 使用備份恢復(fù)升級方案升級理財平臺數(shù)據(jù)庫 215
6.5.5 使用備份恢復(fù)回退方案對理財平臺數(shù)據(jù)庫逆向升級 221
小結(jié) 222
第7章 Db2常用工具和診斷案例 223
7.1 碎片整理工具 223
7.1.1 碎片整理工具reorg 223
7.1.2 案例分享 225
7.2 統(tǒng)計信息收集 226
7.2.1 統(tǒng)計信息收集runstats 227
7.2.2 案例分享 228
7.3 重新綁定 228
7.3.1 重新綁定rebind 228
7.3.2 案例分享 229
7.4 常規(guī)數(shù)據(jù)移動工具 234
7.4.1 導(dǎo)出數(shù)據(jù)export 234
7.4.2 導(dǎo)入數(shù)據(jù)import 235
7.4.3 ingest性能和可用性間平衡的使者 238
7.4.4 導(dǎo)出導(dǎo)入數(shù)據(jù)db2move 242
7.4.5 特殊對象的移動序列和IDENTITY字段 244
7.4.6 案例分享遷移帶有IDENTITY字段的表 246
7.5 海量數(shù)據(jù)移動工具load 248
7.5.1 load導(dǎo)入大數(shù)據(jù)的核武器 248
7.5.2 LOAD FROM CURSOR輕松移動數(shù)據(jù) 258
7.5.3 案例分享load失敗導(dǎo)致數(shù)據(jù)庫目錄文件系統(tǒng)滿 258
7.5.4 案例分享load性能問題診斷 259
7.6 移形換位工具db2relocatedb 261
7.6.1 工具說明 261
7.6.2 案例分享 262
7.7 常用運維工具的調(diào)速 263
7.7.1 調(diào)速參數(shù) 264
7.7.2 案例分享 265
小結(jié) 266
第8章 MySQL數(shù)據(jù)庫故障診斷 267
8.1 MySQL故障診斷方法 268
8.1.1 MySQL基礎(chǔ)知識 268
8.1.2 MySQL故障診斷思路 271
8.2 MySQL常用診斷工具 272
8.2.1 操作系統(tǒng)診斷命令和工具 272
8.2.2 數(shù)據(jù)庫診斷命令和工具 275
8.2.3 命令和工具使用建議 283
8.3 問題診斷實戰(zhàn)案例集一單機數(shù)據(jù)庫故障診斷 283
8.3.1 一次數(shù)據(jù)庫異常宕機問題診斷 284
8.3.2 一次mysqldump備份異常問題診斷 289
8.3.3 一次binlog無法清理問題診斷 293
8.3.4 一次ibtmp1臨時文件巨大問題診斷 296
8.3.5 一次數(shù)據(jù)庫文件系統(tǒng)權(quán)限異常問題診斷 299
8.4 問題診斷實戰(zhàn)案例集二主從復(fù)制故障診斷 300
8.4.1 一次從庫表記錄不存在問題診斷 301
8.4.2 一次從庫事務(wù)執(zhí)行失敗問題診斷 303
8.4.3 一次從庫無法創(chuàng)建連接問題診斷 306
8.4.4 一次從庫無法清理表記錄問題診斷 307
8.4.5 一次主從復(fù)制延遲問題診斷 311
小結(jié) 316
第9章 分布式數(shù)據(jù)庫故障診斷與性能優(yōu)化 317
9.1 故障診斷與優(yōu)化方法 317
9.1.1 GoldenDB分布式數(shù)據(jù)庫特點 317
9.1.2 基于平臺工具診斷和優(yōu)化 318
9.1.3 自動化應(yīng)急處置 319
9.2 平臺工具介紹 319
9.2.1 交易監(jiān)控平臺 319
9.2.2 日志分析平臺 320
9.2.3 普羅米修斯監(jiān)控平臺 321
9.2.4 dbtool工具 323
9.2.5 深度巡檢工具 325
9.3 某銀行核心系統(tǒng)數(shù)據(jù)傾斜問題診斷 328
9.3.1 故障概述 328
9.3.2 分析過程 329
9.3.3 結(jié)論和建議 331
9.4 某銀行分布式數(shù)據(jù)庫元數(shù)據(jù)庫恢復(fù)案例 333
9.4.1 故障概述 333
9.4.2 分析過程 333
9.4.3 結(jié)論和建議 335
9.5 某銀行理財平臺CPU繁忙調(diào)優(yōu) 335
9.5.1 故障概述 335
9.5.2 分析過程 335
9.5.3 結(jié)論和建議 340
9.6 某銀行網(wǎng)銀系統(tǒng)內(nèi)存調(diào)優(yōu) 341
9.6.1 故障概述 341
9.6.2 分析過程 341
9.6.3 結(jié)論和建議 344
9.7 某銀行電商管家系統(tǒng)響應(yīng)慢調(diào)優(yōu) 345
9.7.1 故障概述 345
9.7.2 分析過程 345
9.7.3 結(jié)論和建議 346
9.8 分布式數(shù)據(jù)庫切換與數(shù)據(jù)緊急恢復(fù) 346
9.8.1 故障切換與計劃性切換 346
9.8.2 緊急數(shù)據(jù)恢復(fù) 350
9.9 故障診斷和性能優(yōu)化建議 353
9.9.1 技術(shù)規(guī)范應(yīng)前置到設(shè)計開發(fā)階段 353
9.9.2 高效SQL語句開發(fā)建議 354
9.9.3 平臺工具運用建議 355
9.9.4 應(yīng)急處置建議 356
小結(jié) 356
第?10?章 Db2數(shù)據(jù)庫性能優(yōu)化 357
10.1 理解Db2優(yōu)化器 358
10.1.1 SQL語句的編譯過程 358
10.1.2 Db2優(yōu)化器的核心作用 359
10.1.3 SQL語句優(yōu)化過程 360
10.2 SQL優(yōu)化關(guān)鍵:分析訪問計劃 360
10.2.1 解釋工具 360
10.2.2 解讀訪問計劃 364
10.2.3 表掃描與索引掃描 371
10.2.4 嵌套循環(huán)連接、歸并連接和哈希連接 374
10.2.5 基數(shù)估計和統(tǒng)計信息 380
10.3 性能問題診斷過程 388
10.3.1 分析思路 389
10.3.2 捕獲低效SQL語句 389
10.3.3 分析低效SQL語句 389
10.3.4 優(yōu)化低效SQL語句 390
10.4 實戰(zhàn)案例集錦 390
10.4.1 案例1:理財平臺系統(tǒng)案例高消耗應(yīng)用態(tài)CPU問題 390
10.4.2 案例2:電子渠道系統(tǒng)案例SQL語句運行時間超長問題 398
10.4.3 案例3:自動調(diào)度平臺系統(tǒng)案例存儲過程運行時間超長問題 402
10.5 編寫高效SQL語句 407
10.5.1 盡量避免排序 407
10.5.2 OR/IN或OR/UNION ALL等價轉(zhuǎn)換 407
10.5.3 不要檢索多余的數(shù)據(jù) 408
10.5.4 模糊查詢優(yōu)化 408
10.5.5 避免在連接謂詞中使用復(fù)雜表達式 408
10.5.6 將復(fù)雜表達式放在常量上 409
10.5.7 使用Db2提供的日期類型 409
10.5.8 謹慎對待隱式類型轉(zhuǎn)換 410
10.5.9 外連接的順序 411
10.5.10 IN和EXISTS子查詢 412
10.5.11 OFNR和FFNR子句 417
10.5.12 動態(tài)SQL VS. 靜態(tài)SQL 417
10.5.13 事務(wù)結(jié)束后及時COMMIT 418
小結(jié) 419
第?11?章 MySQL數(shù)據(jù)庫性能優(yōu)化 420
11.1 MySQL性能優(yōu)化方法論 420
11.1.1 MySQL邏輯架構(gòu)基礎(chǔ)知識 421
11.1.2 MySQL優(yōu)化方法簡介 421
11.1.3 MySQL優(yōu)化實踐 421
11.2 MySQL優(yōu)化基礎(chǔ)知識 423
11.2.1 聚集索引和二級索引 423
11.2.2 主鍵索引和索引 425
11.2.3 多列索引 426
11.2.4 前綴索引 426
11.2.5 索引使用策略 427
11.2.6 索引條件下推 428
11.2.7 多范圍讀 429
11.2.8 特定場景優(yōu)化策略 431
11.3 收集性能數(shù)據(jù) 432
11.3.1 收集操作系統(tǒng)性能數(shù)據(jù) 433
11.3.2 收集數(shù)據(jù)庫性能數(shù)據(jù) 433
11.3.3 性能數(shù)據(jù)收集建議 439
11.4 捕獲問題SQL語句 439
11.4.1 使用快照命令捕獲問題SQL語句 439
11.4.2 通過pt-query-digest定位問題SQL語句 440
11.5 分析問題SQL語句執(zhí)行計劃 444
11.5.1 Explain輸出字段說明 446
11.5.2 語句標識 447
11.5.3 查詢類型(select_type) 449
11.5.4 訪問類型(type) 451
11.5.5 索引長度(key_len) 453
11.5.6 額外信息(Extra) 454
11.5.7 Explain重點關(guān)注項 455
11.5.8 不同版本下Explain的注意事項 456
11.6 MySQL性能優(yōu)化實戰(zhàn)集錦 456
11.6.1 案例1:一次客服語音系統(tǒng)數(shù)據(jù)庫服務(wù)器CPU負載高的優(yōu)化案例 457
11.6.2 案例2:一次業(yè)務(wù)檔案系統(tǒng)數(shù)據(jù)庫緩慢批處理優(yōu)化案例 460
11.6.3 案例3:一次員工渠道系統(tǒng)用戶登錄緩慢優(yōu)化案例 465
11.7 MySQL性能優(yōu)化實踐配置參數(shù)優(yōu)化 471
11.7.1 硬件配置優(yōu)化建議 472
11.7.2 操作系統(tǒng)配置優(yōu)化建議 472
11.7.3 數(shù)據(jù)庫配置優(yōu)化建議 473
小結(jié) 474
第?12?章 商業(yè)銀行數(shù)據(jù)庫管理思考 475
12.1 商業(yè)銀行數(shù)據(jù)庫管理演化階段 475
12.1.1 奴隸社會手工運維階段 476
12.1.2 封建社會工具化階段 477
12.1.3 資本主義社會云化管理階段 478
12.1.4 共產(chǎn)主義社會智能化階段 480
12.2 新系統(tǒng)上線方面的思考 480
12.2.1 流程的優(yōu)化 481
12.2.2 安裝自動化 483
12.2.3 高效服務(wù)化部署 484
12.3 數(shù)據(jù)庫事件管理思考 485
12.3.1 事件管理優(yōu)化 485
12.3.2 事件自動化統(tǒng)計與分析 486
12.4 問題處理方面的思考 487
12.4.1 深挖問題根本原因 488
12.4.2 問題總結(jié)與沉淀 489
12.5 數(shù)據(jù)庫變更方面的思考 490
12.5.1 數(shù)據(jù)庫變更的標準化 490
12.5.2 數(shù)據(jù)庫變更的自動化 491
12.6 數(shù)據(jù)庫應(yīng)急方面的思考 492
12.6.1 數(shù)據(jù)庫應(yīng)急預(yù)案的制訂 492
12.6.2 一鍵式數(shù)據(jù)庫應(yīng)急處置平臺 493
12.6.3 數(shù)據(jù)庫自愈方面的思考 494
12.7 數(shù)據(jù)庫安全方面的思考 496
12.7.1 安全的流程化管控 496
12.7.2 打造堅不可摧的數(shù)據(jù)庫安全體系 498
12.8 開發(fā)運維一體化(DevOps)的思考 499
12.8.1 什么是開發(fā)運維一體化 500
12.8.2 構(gòu)建部落式團隊 501
12.8.3 智能化運維(AIOps)的思考 502
12.8.4 數(shù)據(jù)庫管理員(DBA)的轉(zhuǎn)型 502
小結(jié) 503
參考文獻 504
縮略語 505
后記捕魚 509