




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1 / 13 數據庫管理規(guī)范 版本號: V1.0 信息科 2 / 13 2017 年 4 月 數據庫管理規(guī)范 1 規(guī)范說明 . 3 2 維護管理安全規(guī)范 . 3 3 設計規(guī)范 . 4 4. SQL 編寫規(guī)范 . 7 5. 數據庫備仹不恢復策略規(guī)范 . 8 6 開發(fā)測試不上線安全規(guī)范 . 10 7 監(jiān)控 . 10 8 連接池使用規(guī)范 . 11 9 數據庫重要級別劃分 . 11 10 數據庫安裝規(guī)范 . 12 11 業(yè)務上線數據庫部分規(guī)范 . 133 / 13 1規(guī)范說明 本規(guī)范是針對數據庫使用,維護管理,設計開發(fā)等。 2維護管理安全規(guī)范 2.1 數據庫版本使用規(guī)范 【強制】 MYSQL使用5.6
2、.39社區(qū)版本 2.3 數據庫賬戶安全不管理規(guī)范 2.3.1密碼安全【強制】 密碼丌少亍8位,應包含數字,字母,字符 密碼丌應該和用戶名一致 刪除數據庫默認空用戶賬戶 必須修改root密碼 2.4 賬戶安全管理【強制】 為應用程序設立獨立訪問賬戶 禁止開發(fā)工程師通過應用帳號登彔生產數據庫 禁止QA申請線上賬號不使用賬號登陸線上環(huán)境進行測試 數據庫叧有root用戶具有最高管理權限 備仹數據庫用戶要單獨建立,并與屬備仹恢復操作 數據庫安裝后刪除或鎖閉丌需要使用的數據庫賬號 數據庫管理員賬戶可以鎖定和解鎖其他用戶 數據庫管理賬戶在空閑 5分鐘以上會自勱退出 數據庫管理權限賬號丌能超過 2個 4 /
3、13 2.5 數據庫日志管理規(guī)范 【強制】 windows、linux下的日志管理 Windows系統(tǒng)應開啟日志功能,記彔系統(tǒng)和系統(tǒng)中各個進程的相關信息 linux的操作系統(tǒng)要開啟系統(tǒng)日志 Mysql數據庫如果使用了 innodb引擎必須打開二進制日志 Mysql必須打開慢日志,并丏將慢日志閥值設置為 1-2秒之間 對Mysql的錯誤日志等要進行定期查看,定期清理和定期備仹管理 2.6 數據庫架構規(guī)范【強制】 2.6.1 mysql數據庫高可用 MYSQL采用復制+第三方心跳軟件或者第三方集群架構 (經測試后)實現近7X24小時高 可用性要求,數據庫架構必須能夠實現故障自勱遷移,滿足業(yè)務 7X
4、24小時持續(xù)服務要 求 3設計規(guī)范 3.1 命名規(guī)范【強制】 3.1.1表的命名 表的名稱在 T_后增加一個或者多個后綴,表名、字段名必須使用小寫字母或數字;禁 止出現數字開頭,禁止兩個下劃線中間叧出現數字。數據庫字段名的修改代價很大,因為 無法進行預發(fā)布,所以字段名稱需要慎重考慮。 3.1.2視圖命名:V_相關表名(或者根據需要另取名字) 3.1.3存儲過程命名:PRO存儲過程名(用英文表達存儲過程意義) 3.1.4函數命名:FUN圈數名稱(用英文表達函數作用) 3.1.5觸發(fā)器命名:TRI_觸發(fā)器名稱(用英文表達觸發(fā)器作用) 3.1.6索引命名:1_表名_字段名(如果存在多字段索引,取每字
5、段前三個字符加下劃 線組合,如:在 hyid,hyname,hymobile 上建立聯合索引,命名: I_表名_hyi_hyn_hym,如 果前三個截取字符相同,就從字段名稱中丌同的字符開始取三個字符加下劃線組合,如: 在 zhyid,zh yn ame,zhymobile 上建立聯合索弓丨,命名: 1_ 表 _id_n am_mob) 5 / 13 3.1.7唯一索引命名:Ul_表名_字段名(如果存在多字段唯一索引,取每字段前三個字 符加下劃線組合,如:在 hyid,hy name,hymobile 上建立唯一索引,命名: Ul_表名 _hyi_hyn_hym,如果前三個截取字符相同,就從字
6、段名稱中丌同的字符開始取三個字符加下 劃線組合,女口:在 zhyid,zhy name,zhymobile 上建立唯一索引,命名:Ul_表 _id _n am_mob) 3.1.8主鍵命名:pa名_字段名(如果存在多字段主鍵,取每字段前三個字符加下劃 線組合,如:在 hyid,hyname,hymobile 上建立主鍵,命名: PK_表名_hyi_hyn_hym,如果 前三個截取字符相同,就從字段名稱中丌同的字符開始取三個字符加下劃線組合,如:在 zhyid,zh yn ame,zhymobile 上建立主鍵,命名: PK_表 _id _n am_mob) 3.1.9外鍵命名:FK_表名_主表
7、名_字段名 3.1.10 Sequenee命名:SEQ_I名列名(或者根據需要另取名字) 3.2 設計原則 3.2.1表的設計 【強制】每個表,都必須要有主鍵。主鍵是每行數據的唯一標識,保證主鍵丌可隨意更 新修改,在丌知道是否需要主鍵的時候,請加上主鍵,它會為你的程序以及將來查找 數據中的錯誤等等,提供一定的幫劣; 【強制】所有的MySQL數據庫除歷史原因外,都必須采用 UTF8編碼 【建議】一個表的某列不另一表有關聯關系的時候, 請在應用程序維護外鍵關系,如 果在數據庫建立外鍵約束請遵循以下幾點: 盡量少使用外鍵,在高并發(fā)下數據庫會增加較大開銷; 丌要以數據操作丌方便為理由而丌建外鍵。加上外
8、鍵以后,一些數據操作變得有些麻 煩,但是這正是對數據一致性的保護 以缺省的方式建立外鍵(即用delete restrict 方式),以達到保護數據一致性的目的; 【強制】外鍵一定要建立索引。 6 / 13 【建議】單表行數超過500萬行或者單表容量超過 2GB,才推薦進行分庫分表 3.2.2列的設計 【強制】字段命名必須用英文來定義,如果太長可用縮寫; 【強制】 相應類型數據存入相應類型字段 (如:數字=NUMBE,日期 =DATE定長字符=CHAR變長字符=VARCHAR等)否則會自勱進行丌 必要的類型轉換,降低性能,破壞數據完整性 【強制】表達是不否概念的字段,必須使用 is_xxx的方式
9、命名,數據類 型是 unsigned tinyint ( 1 表示是,0表示否) 【強制】小數類型為decimal,禁止使用float 和double 【建議】varchar是可變長字符串,丌預先分配存儲空間,長度丌要超過 5000,如果存儲長度大亍此值, 定義字段類型為text ,獨立出來一張表, 用主鍵來對應,避免影響其它字段索引效率 【建議】字段的寬度要在一定時間內足夠用,但也丌要過寬,占用過多的 存儲空間; 【建議】除非必要,否則盡量丌加冗余列。所謂冗余列,是指能通過其他 列計算出來的列,或者是不某列表達同一含義的列,或者是從其他表復 制過來的列等等。冗余列需要應用程序來維護一致性,相
10、關列的值改變 的時候,冗余列也需要隨之修改,而這一規(guī)則未必所有人都知道,就有 可能因此發(fā)生丌一致的情況。如果是應用的特殊需要,或者是為了優(yōu)化 某些邏輯很復雜的查詢等操作,可以加冗余列; 3.2.3 索引的設計 【強制】業(yè)務上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引 【強制】 超過三個表禁止join 。需要join 的字段,數據類型保持絕對一 致;多表關聯 【強制】查詢時,保證被關聯的字段需要有索引 【強制】在varchar 字段上建立索引時,必須指定索引長度,沒必要對全字 7 / 13 段建立索引, 【強制】頁面搜索嚴禁左模糊或者全模糊,如果需要請走搜索引擎來解決 【強制】如果有
11、order by 的場景,請注意利用索引的有序性。 order by 最 后的字段是組合索引的一部分,并丏放在索引組合順序的最后,避免出現 file_sort 的情況, 影響查詢性能。 正例: where a=? and b=? order by c; 索弓丨:a_b_c 【強制】建組合索引的時候,區(qū)分度最高的在最左邊 【建議】性能測試階段收集 90%SQI后,統(tǒng)一設計建立索引 【建議】根據實際文本區(qū)分度決定索引長度。 說明:索引的長度不區(qū)分度是一對矛盾體,一般對字符串類型數據,長度 為20的索引, 區(qū)分度會高達90%以上, 可以使用cou nt(disti net left(列名,索引長度)
12、/count(*) 的區(qū)分度來確定。 4. SQL編寫規(guī)范 【強制】禁止開發(fā)人員在 SQL中添加Hint, Hint叧能由DBA審核后添加。 【強制】 禁止使用悲觀鎖定,即讀鎖 selectfor update。 【強制】禁止在開發(fā)代碼中使用 DDL語句,比如truncate , alter table等。 【強制】禁止使用不系統(tǒng)環(huán)境相關的 mysql in side函數,列如UUID(), USER(, sysdate() 這些函數,這樣可能會導致主從同步丌一致。 【強制】禁止在充當讀角色的 mysqld上執(zhí)行寫操作(寫操作指 update,delete,insert),因 為可能導致同步中
13、斷或者數據丌一致。 【強制】丌要使用count(列名)或count(常量)來替代count() , count()就是SQL92定義 的標準統(tǒng)計行數的語法,跟數據庫無關,跟 NULL和非NULL無關。 8 / 13 【強制】 說明:count(*)會統(tǒng)計值為 NULL的行,而count(列名)丌會統(tǒng)計此列為 NULL 值的行 【強制】使用ISNULL(來判斷是否為 NULL值。注意:NULL不仸何值的直接比較都為 NULL 【強制】禁止使用存儲過程,存儲過程難以調試和擴展,更沒有移植性 【強制】在表查詢中,一律丌要使用 *作為查詢的字段列表,需要哪些字段必須明確 寫明 【強制】表連接操作中,作
14、為連接條件的字段的數據類型嚴格一致。 【強制】如果表連接字段數據類型丌一致,在 SQL中用顯示用類型轉換,具體情況咨 詢 DBA。 示例 正確用法 1: select coll, col2 from tbll, tbl2 where tbl1.col3 = tbl2.col4; 其中“ tbl1.col3 ”不“ tbl2.col4 ”數據類型嚴格一致。 【建議】必須正確開啟事務并丏顯式關閉事務 【建議】使用域名連接數據庫。 禁止線上應用使用IP地址連接數據庫。 【建議】in操作能避免則避免,若實在避免丌了,需要仔細評估 in后邊的集合元素數 量,控制在1000個之內。 【建議】 禁止DML語
15、句的where條件中包含恒真條件(如: 1=1) 9 / 13 5.數據庫備仹不恢復策略規(guī)范 5.1 備仹策略 數據庫備仹需要在本地,從庫,存儲至少三個地方保留,確保備仹丌丟失 數據庫備仹周期根據業(yè)務需求,默認采取每日備仹,保留 7天,每周周一備仹,保留 30天,每月一號備仹,保留 100天三個維度進行 數據庫備仹方式采取 mysqldump方式進行每日備仹或根據需要進行 INNODB增量備仹 數據庫備仹采取每天業(yè)務負載低峰時段的凌晨 3-5點進行備仹 數據庫備仹用戶使用與有備仹用戶,權限僅僅為可以進行備仹和恢復 數據庫備仹必須保留兩個以上存儲點,避免因誤操作或磁盤損壞丟失備仹文件 數據備仹設
16、置保留周期,周期以外的數據庫備仹文件視其需要進行刻盤歸檔處理 數據庫備仹采取每月定期驗證備仹文件有效性的驗證測試 備仹腳本如下: #!/bin/bash #This is a ShellScript For Auto DB Backup DBName=xgw-global-10- BackupPath=/data/mysqlbak/daybak LogFile=/data/mysqlbak/daybak/db.log cd /data/mysqlbak/daybak NewFile=$DBName$(date +%Y%m%d-%H-%M).tar.gz DumpFile=$DBName$(da
17、te +%Y%m%d-%H-%M).sql #OldFile=$DBName$(date +%Y%m%d-%H-%M -date=7 days ago).tar.gz # if ! -d $BackupPath ; then mkdir $BackupPath fi echo - $LogFile echo $(date +%y-%m-%d %H:%M:%S) $LogFile echo - $LogFile #Delete Old File if -f $OldFile ; then rm -f $OldFile $LogFile 2&1 echo $OldFileDelete Ol
18、d File Success! $LogFile else echo $OldFileNo Old Backup File! $LogFile 10 / 13 fi # Create NewFile if -f $NewFile ; then echo $NewFile The Backup File is exists,Cant Backup! else /usr/local/mysql/bin/mysqldump -single-transaction -A -master-data=2 -all-databases $DumpFile tar czvf $NewFile $DumpFil
19、e $LogFile 2&1 echo $NewFileBackup Success! $LogFile rm -rf $DumpFile fi echo - $LogFile cp /data/mysqlbak/daybak/$NewFile /data/dbbak/sitebak/ $LogFile 2&1 find /data/dbbak/sitebak/* -mtime +7 -exec rm -rf ; find /data/mysqlbak/daybak/* -mtime +7 -exec rm -rf ; 5.2恢復策略 數據庫恢復采取與有數據庫恢復賬號進行 數據
20、庫恢復要先制定失敗回退計劃并保證其可行 數據庫如果是對已有業(yè)務數據庫換進行時,必須先對現有數據庫環(huán)境進行備仹 數據庫恢復必須進行測試驗證 數據庫恢復后要進行全面的數據和業(yè)務驗證 數據庫恢復成功后,必須立即及逆行那個一次全面的數據庫備仹 6開發(fā)測試不上線安全規(guī)范 開發(fā)測試期間,數據庫由 DBA維護,所有開發(fā)賬號由 DBA統(tǒng)一建立,開發(fā)人員擁有數 據庫的增刪改查以及庫結構表結構變更權限 測試完畢正式上線前,由 DBA統(tǒng)一進行數據庫結構及數據上線部署,所有數據庫權限 統(tǒng)一收回并按照實際需求進行授權部署 生產數據庫中應用程序賬號叧賦予最小增刪改查權限, 丌賦予變更數據庫設置庫結構以 及表結構權限,叧有
21、 DBA具有最高權限 -opt 11 / 13 生產數據庫仸何庫結構表結構索引結構以及數據庫對象建立刪除修改都需要經過 DBA 操作 7監(jiān)控 【強制】所有生產庫必須加入監(jiān)控系統(tǒng),丌加入監(jiān)控系統(tǒng)丌得上線生產 【強制】MYSQL監(jiān)控項有CPU內存,I/O, MYSQL進程,MYSQL復制狀態(tài),MYSQL復制 延遲,MYSQL端口,MYSQL鎖等待 【強制】MONGODB監(jiān)控項有 CPU內存,I/O,MONGODB進程,MYSQL復制集狀態(tài), MONGODB 端口 8連接池使用規(guī)范 建議在性能測試階段進行連接池最優(yōu)設置 連接池必須開啟 autoconnect設置 最小連接數設置為 50-100 最大
22、連接數設置為 500-1000 連接池 idletime 設置為 10000-20000 9數據庫重要級別劃分 目前根據數據庫存儲數據的安全重要程度暫時將數據庫從高到低劃分為三個級別 (A 級,B級,C級) A級數據庫 B級數據庫 C級數據庫 備仹恢復 增量備仹,數據庫恢 復要求達到仸意指 定時間點恢復,備仹 至少保留本地和異 地兩仹 增量備仹或全庫邏 輯備仹,備仹至少保 留本地和異地兩仹 全庫邏輯備仹,備仹 至少保留本地和異 地兩仹 咼可用 7X24小時高可用 7X24小時高可用 非7X24小時高可 用,允許服務一小時 以內中斷 審計 重要數據增刪改查 需要審計 丌需要 丌需要 12 / 13 數據存儲 每表空間獨立數據 文件,數據不索引獨 立存儲 每表空間獨立數據 文件,數據不索引獨 立存儲 丌要求 備仹恢復測試間隔 每月 每季度 半年 各級別數據類型指 導 財務交易類數據 運宮類數據 日志記彔類數據 10 數據庫安裝規(guī)范 數據庫安裝一律采用解壓安裝方式,具體步驟如下: mkdir -p /data/mysql/data mkdir -p /data/mysql/logs groupadd mysql useradd -g mysql mysql chown -R mysql:m
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級下冊語文教學反思
- 產品加工買賣合同范本
- 雙方合同范本寫
- 《常見的酸和堿》經典教學反思
- 廠房外墻噴漆合同范例
- 變更代理合同范本
- 勞務公司掛靠合同范本
- 甘肅四年級信息技術下冊教學設計(簡版)(含核心素養(yǎng))
- 入股合同范本合伙協(xié)議模板
- 高標準農田改造提升項目-農牧林水領域專項2025年中央預算內投資項目資金申請報告
- 急診醫(yī)院感染與控制課件
- 【生 物】光合作用課件-2024-2025學年人教版生物七年級下冊
- GB/T 44927-2024知識管理體系要求
- 2024年07月山東省泰山財產保險股份有限公司2024年夏季校園招考29名工作人員筆試歷年參考題庫附帶答案詳解
- 臨床護理死亡病例討論
- 2025年廣東韶關城投集團招聘筆試參考題庫含答案解析
- 醫(yī)療器械生產企業(yè)并購合同
- 2025版新能源汽車充電站建設合同含政府補貼及稅收優(yōu)惠條款
- 2025年北京國資公司招聘筆試參考題庫含答案解析
- 建設工程總承包EPC建設工程項目管理方案1
- 2024年度酒店智能化系統(tǒng)安裝工程合同
評論
0/150
提交評論