日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转 当当网资深DBA:DB运维四大现代化的实现

發(fā)布時(shí)間:2025/1/21 编程问答 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转 当当网资深DBA:DB运维四大现代化的实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

位好,今天我的主題是 《DB運(yùn)維的四個(gè)現(xiàn)代化》 ,看標(biāo)題就能明白,是關(guān)于DBA自動(dòng)化運(yùn)維平臺(tái)的事情。
http://dbaplus.cn/news-21-855-1.html
?

主要是分享下我在當(dāng)當(dāng)想到做到的一些事情,很多都是兄弟們一起努力的結(jié)果, 這篇文章也是對(duì)我們工作進(jìn)行一次總結(jié),整個(gè)平臺(tái)的實(shí)現(xiàn)方法并沒有用到什么高大上的框架,有亮點(diǎn)的地方我會(huì)著重說明,當(dāng)然,有興趣了解的同學(xué),直接提問就好。

?

本次分享將分為以下三部分進(jìn)行:

??? 解密DB管理四大現(xiàn)代化

??? 實(shí)例分析實(shí)踐痛點(diǎn)

??? 從信息展現(xiàn)開始一步步解決

?

一DB管理四大現(xiàn)代化

?

首先先聊下DB在項(xiàng)目中的地位:

?

?

??? 99%的軟件,處理的數(shù)據(jù)最終是需要落地

??? 從人員結(jié)構(gòu)來說,DBA支持公司多項(xiàng)目

??? 數(shù)據(jù)要安全,數(shù)據(jù)要及時(shí),權(quán)限要收口

?

于是,DBA的工作經(jīng)常成為項(xiàng)目進(jìn)展的瓶頸。

?

然而,在錯(cuò)綜復(fù)雜的電商環(huán)境中, 數(shù)據(jù)庫(kù)又獨(dú)具特色。一提到電商: 自然想到,雙11,秒殺,大促等等,?? 于是下面3個(gè)特點(diǎn)也就不言而喻。

?

?

在當(dāng)當(dāng)網(wǎng),我們的DB規(guī)模是這樣的,數(shù)據(jù)截止到2016年3月,而現(xiàn)在又在增長(zhǎng)……T_T

?

?

因此就會(huì)有這樣的工作需求:

??? 商品單品項(xiàng)目組、新來的開發(fā)同學(xué),需要了解單品項(xiàng)目的表設(shè)計(jì)結(jié)構(gòu);

??? 購(gòu)物車項(xiàng)目管理的同學(xué)需要同步最新數(shù)據(jù),檢查項(xiàng)目運(yùn)行效果;

??? 訂單項(xiàng)目的同學(xué)需要檢查實(shí)時(shí)數(shù)據(jù),監(jiān)控訂單量(授權(quán)給radar監(jiān)控?cái)?shù)據(jù)源);

??? 測(cè)試的同學(xué)需要檢查回歸測(cè)試的數(shù)據(jù)效果。

?

二實(shí)例分析實(shí)踐痛點(diǎn)

?

商品分類項(xiàng)目程序出現(xiàn)了bug,導(dǎo)致分類錯(cuò)誤, 最有效的辦法莫過于:DB中需要修改幾條數(shù)據(jù)。

?

??? 項(xiàng)目擴(kuò)容,需要部署從庫(kù),項(xiàng)目遷移,需要切換到從庫(kù);

??? 硬件故障,需要切換;

??? 所有項(xiàng)目大大小小 500+個(gè)DB實(shí)例?? (ノ゚⊿゚)ノ? So,不理想的狀態(tài)下, 以上工作×500倍;

??? DBA負(fù)責(zé)按工單導(dǎo)出數(shù)據(jù),工單多了就放開查詢權(quán)限,

??? 人員流動(dòng)(←_←),于是一堆不明權(quán)限,數(shù)據(jù)安全無法保證。

?

于是,DBA們也在思考,和開發(fā)項(xiàng)目拼人肉數(shù)目,肯定不切實(shí)際,我們需要自動(dòng)化的平臺(tái)。

?

根據(jù)以上問題,我們做了幾個(gè)選擇:

??? 哪些信息是可以共享給開發(fā)部門的。

??? 哪些操作DBA可以自動(dòng),符合標(biāo)準(zhǔn)的進(jìn)行。

??? 用什么方法盡可能保證數(shù)據(jù)的實(shí)時(shí)準(zhǔn)確性

?

用下圖來回答:

?

?

平臺(tái)主要分為:信息收集展現(xiàn),DBA管理工具兩大部分。

?

數(shù)據(jù)庫(kù)的元數(shù)據(jù)可以被全體技術(shù)部乃至業(yè)務(wù)部訪問。但數(shù)據(jù)細(xì)節(jié),只能有限訪問(權(quán)限申請(qǐng)需要經(jīng)過審批)這些只讀的訪問,一次授權(quán),即可自助進(jìn)行。

?

對(duì)于數(shù)據(jù)庫(kù)管理(部署,備份,恢復(fù)),DBA也要編寫腳本,按標(biāo)準(zhǔn)進(jìn)行。后面會(huì)盡量詳細(xì)介紹。

?

三從信息展現(xiàn)開始一步步解決

?

1、信息收集展現(xiàn)

?

先說明下,關(guān)于數(shù)據(jù)庫(kù)元數(shù)據(jù)的展現(xiàn):

?

?

上圖可見,借用phpmyadmin工具(右圖),對(duì)于元數(shù)據(jù)的展現(xiàn)還是很完美的。完全可以替代左圖的命令行模式。

?

當(dāng)然,這里的phpmyadmin是經(jīng)過修剪功能的版本,去掉了諸多管理,展示數(shù)據(jù)細(xì)節(jié)的部分。

?

對(duì)于申請(qǐng)過權(quán)限的用戶,才可以訪問到受限的數(shù)據(jù)細(xì)節(jié)。

?

同時(shí)對(duì)于數(shù)據(jù)本身,也進(jìn)行了限制性修改 ,僅能訪問 500行的數(shù)據(jù):

?

?

對(duì)于元數(shù)據(jù)也進(jìn)行了抓取和歸檔(主要用shell+python定時(shí)執(zhí)行 實(shí)現(xiàn)),這樣做有幾個(gè)好處:

?

1、便于在整個(gè)公司項(xiàng)目范圍內(nèi),宏觀的、快速的、模糊的查找想要的元數(shù)據(jù)。

2、基于元數(shù)據(jù)的定期歸檔,可得出數(shù)據(jù)空間變化的規(guī)律。

?

例如我們平臺(tái)的如下功能:

?

?

?

?

3、還可以對(duì)元數(shù)據(jù)進(jìn)行統(tǒng)計(jì),迅速得出那些是我們急需調(diào)優(yōu)的目標(biāo)(需水平拆分的大表,需垂直拆分的寬表,需要?jiǎng)h除的重復(fù)索引,需要擴(kuò)容的autoid等等)。

?

例如,我們平臺(tái)的如下功能:

?

? ?

?

展示出來就是這樣(圖表展示我采用highchart,MySQL只負(fù)責(zé)用SQL吐數(shù)據(jù),展示的活,就交給highchart 了):

?

?

?

4、管理服務(wù)器列表,對(duì)于所有服務(wù)器的固定端口(數(shù)據(jù)庫(kù)端口)進(jìn)行掃描,及登陸測(cè)試,獲取庫(kù)名,角色(主or從),等信息。

?

?

對(duì)于性能和監(jiān)控?cái)?shù)據(jù),采用同樣的方法進(jìn)行抓取和分析,(數(shù)據(jù)源取自zabbix監(jiān)控?cái)?shù)據(jù)庫(kù))

?

這樣做的好處是:

??? 看出近期那些性能指標(biāo)頻繁報(bào)警,需要擴(kuò)容,需要調(diào)優(yōu)

??? 那些服務(wù)器是重載,那些卻過分規(guī)劃即使大促也是輕載。

?

?

(上圖屏蔽的主要是一些ip和庫(kù)名信息.)

?

2、DBA管理工具

?

這部分我們也在進(jìn)行中,目前DB的安裝/部署的基本已經(jīng)實(shí)現(xiàn)腳本化,主要包括下面的腳本。

?

?

下面是部分腳本的功能說明:

?

?

該腳本的主要功能:

??? 根據(jù)標(biāo)準(zhǔn)初始化完成的系統(tǒng),自動(dòng)安裝相關(guān)軟件包,備份時(shí)部署在集群的從庫(kù),且無域名的從庫(kù)優(yōu)先,

??? 關(guān)于備份空間的判斷,先根據(jù)數(shù)據(jù)量估算本次備份所需空間,如果備份空間滿足,則備份到該從庫(kù)的本地,如果不滿足則集中備份到大空間服務(wù)器。

?

備份會(huì)保留多個(gè)備份周期的備份集. 如空間吃緊,備份前,則會(huì)優(yōu)先刪除日期靠前的備份集。

?

?

該腳本的主要功能:

??? 初始化MySQL時(shí)候生成環(huán)境檢查

??? 根據(jù)內(nèi)存大小動(dòng)態(tài)計(jì)算buffer pool大小以及隨機(jī)值server-id

??? innoDB_buffer_pool_size=內(nèi)存*80%

??? server-id=[IP點(diǎn)分十進(jìn)的后兩段]+三個(gè)隨機(jī)數(shù)

??? 公共用戶權(quán)限導(dǎo)入以及導(dǎo)入后驗(yàn)證

?

?

該腳本的主要功能:

??? 從備份文件{logical,xtrabackup}恢復(fù)一個(gè)實(shí)例;

??? 從一個(gè)從庫(kù)直接{logical,xtrabackup}建立一個(gè)從庫(kù);

??? 從一個(gè)主庫(kù)直接{logical,xtrabackup}建立一個(gè)從庫(kù)。

?

對(duì)于日常比較頻繁執(zhí)行的DML語句,通常處于開發(fā)部門修改數(shù)據(jù)解決線上bug的問題,我們采用了inception的部分功能,結(jié)合已經(jīng)收集到的服務(wù)器列表.,只需指定將SQL即可,平臺(tái)會(huì)自動(dòng)送到該庫(kù)指向的主庫(kù)上執(zhí)行DML語句。

?

采用inception的功能主要是對(duì)SQL的審核功能,例如,如果該SQL的影響行數(shù)超限,則終止執(zhí)行。

?

平臺(tái)則對(duì)SQL執(zhí)行進(jìn)行歷史記錄。

?

?

DBA管理工具這邊也在逐步完成對(duì)上述管理腳本的平臺(tái)化。

?

我的分享基本就是這些, 關(guān)于平臺(tái)及工具的代碼,我們也在逐步做脫敏工作,爭(zhēng)取形成一個(gè)可以開源出來的產(chǎn)品, 希望對(duì)大家有些啟發(fā),也希望拋磚引玉。

?
Q&A

?

Q1:目前的高可用是用什么方案?

A1:我們預(yù)期用MHA,目前還未有這方面的架構(gòu)。

?

Q2:你們是如何進(jìn)行跨機(jī)房的管理的?slave的延遲如何保證在業(yè)務(wù)可忍受的范圍內(nèi)的?

A2:slave延遲的問題主要從開發(fā)方面分解大事務(wù)解決。跨機(jī)房方面我們目前也盡量避免跨機(jī)房的主從架構(gòu)搭建。

?

Q3:如何設(shè)計(jì)MySQL架構(gòu)來滿足如搶購(gòu)類的高并發(fā)的業(yè)務(wù)?

A3:大促、秒殺業(yè)務(wù)這些方面,主要靠提前壓測(cè),并觀察性能瓶頸,擴(kuò)容和回收也是以性能(cpu,網(wǎng)絡(luò)連接,磁盤)為依據(jù)來進(jìn)行。

?

Q4:目前應(yīng)對(duì)大促,秒殺業(yè)務(wù),數(shù)據(jù)庫(kù)層面擴(kuò)容縮容,能否給出一些建議。

A4:這方面需要時(shí)間來改進(jìn),我們目前還很不完善,其實(shí)很多功能也是當(dāng)當(dāng)架構(gòu)特色來設(shè)計(jì)的。即使開源也是為內(nèi)部版本控制考慮。所以還未有這份精力配合。

?

Q5:如果要分庫(kù)分表,推進(jìn)這些東西開發(fā)會(huì)配合嗎?

A5:我們架構(gòu)部有這方面的中間價(jià),叫sharding-JDBC,可以關(guān)注下github上的項(xiàng)目。

?

Q6:MySQL一個(gè)表最多存多少記錄算大數(shù)據(jù)?有哪些合適的分表方式?

A6:存多少不重要,關(guān)鍵要看怎么使用它,是讀多,寫多,還是改多,對(duì)于一般的系統(tǒng),最起碼把讀寫分離開吧。

?

Q7:請(qǐng)問你們?cè)诰€上如何解決DDL和批量delete or update 100萬級(jí)的數(shù)據(jù)的?

A7:DDL是靠pt-online-schema-change工具,百萬級(jí)的delete也是靠這個(gè)工具分配進(jìn)行的。

轉(zhuǎn)載于:https://www.cnblogs.com/feiyun8616/p/6168830.html

總結(jié)

以上是生活随笔為你收集整理的转 当当网资深DBA:DB运维四大现代化的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。