華為云計算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫服務(wù)_第1頁
華為云計算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫服務(wù)_第2頁
華為云計算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫服務(wù)_第3頁
華為云計算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫服務(wù)_第4頁
華為云計算技術(shù)與應(yīng)用 課件 第7、8章 華為云容器服務(wù)與應(yīng)用、華為云數(shù)據(jù)庫服務(wù)_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第7章

華為云容器服務(wù)與應(yīng)用華為云計算技術(shù)與應(yīng)用7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點7.4華為云容器實踐7.1.1 容器底層技術(shù)基礎(chǔ)容器底層技術(shù)的核心目的是實現(xiàn)容器在操作系統(tǒng)中的隔離及資源限制。當(dāng)容器在操作系統(tǒng)中運(yùn)行時,它擁有自己獨立的運(yùn)行環(huán)境與依賴,因此需要將使用的資源隔離起來,以避免操作系統(tǒng)以及其他容器對其產(chǎn)生影響。容器底層技術(shù)通過對操作系統(tǒng)內(nèi)核的全局資源進(jìn)行封裝,讓容器運(yùn)行時使用自己封裝好的資源,不與其他操作系統(tǒng)應(yīng)用共享。除隔離以外,容器在操作系統(tǒng)上運(yùn)行時,屬于操作系統(tǒng)中的應(yīng)用程序。同時運(yùn)行在操作系統(tǒng)中的多個容器存在資源競爭關(guān)系,需要通過某些技術(shù)手段對容器相應(yīng)進(jìn)程能夠使用的資源進(jìn)行限制,避免搶占資源的問題。資源限制用于限定容器在操作系統(tǒng)中所能夠使用的資源上限,防止容器無限制地占用資源導(dǎo)致系統(tǒng)崩潰。容器通過使用Cgroup實現(xiàn)對資源的限制。容器技術(shù)是一種操作系統(tǒng)級別的虛擬化技術(shù),通過虛擬化可以實現(xiàn)操作系統(tǒng)中進(jìn)程級別的資源隔離,以Docker為代表的容器技術(shù)已經(jīng)成為云計算PaaS平臺的一項關(guān)鍵技術(shù)。7.1.2 容器鏡像容器鏡像是容器運(yùn)行時使用的模板,其中包含了容器運(yùn)行所需的應(yīng)用程序及運(yùn)行時所需的條件資源。容器鏡像實際打包了整個操作系統(tǒng)的根文件系統(tǒng)文件,包括應(yīng)用程序本身。通過對應(yīng)用及其運(yùn)行所需的所有依賴要素進(jìn)行封裝,形成容器鏡像。這樣可以保證本地環(huán)境和云端環(huán)境在運(yùn)行容器時的高度一致。容器鏡像的結(jié)構(gòu)主要包括鏡像層(只讀層)和容器層(可讀寫層),如圖所示由圖可知,制作容器鏡像時以增量的方式進(jìn)行,制作好的鏡像內(nèi)部數(shù)據(jù)以鏡像層的形式存在且無法進(jìn)行修改。在通過鏡像運(yùn)行容器時,會在原有鏡像的基礎(chǔ)上添加一個可讀寫的容器層。使用容器查看文件的信息時,會從容器層開始到鏡像層依次向下讀取,直到獲取對應(yīng)信息。7.1.2 容器鏡像由于鏡像層提供共享功能,多個容器可以共享同一容器鏡像,而各個容器獨立的可寫容器層又使得每個容器具有獨立的數(shù)據(jù)狀態(tài),左圖所示為容器的共享鏡像層。常用操作功能說明創(chuàng)建文件新文件只能被添加在容器層中刪除文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找。找到后,在容器層中記錄該刪除操作。具體實現(xiàn)時,UnionFS會在容器層創(chuàng)建一個“whiteout”文件,將被刪除的文件“遮擋”起來修改文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找。找到后,將鏡像層中的數(shù)據(jù)復(fù)制到容器層進(jìn)行修改,修改后的數(shù)據(jù)保存在容器層中查看文件依據(jù)容器分層結(jié)構(gòu)由上往下依次查找由于鏡像層是只讀屬性的,當(dāng)不同的容器需要進(jìn)行數(shù)據(jù)修改時,無法直接對其進(jìn)行修改。對此,容器支持寫時拷貝特性,下表所示為容器的常用操作和功能說明。7.1.3 容器網(wǎng)絡(luò)容器網(wǎng)絡(luò)用來實現(xiàn)不同容器之間的數(shù)據(jù)相互通信,通過安裝不同的插件來滿足容器間不同的通信需求,容器網(wǎng)絡(luò)通常使用軟件定義的方式對數(shù)據(jù)流量進(jìn)行控制與轉(zhuǎn)發(fā)。容器網(wǎng)絡(luò)中提供了5種原生的模型,用于實現(xiàn)容器之間的通信,具體功能說明和應(yīng)用場景如表所示。模型功能說明應(yīng)用場景無網(wǎng)絡(luò)模型(None)None網(wǎng)絡(luò)中的容器,不能與外部通信None網(wǎng)絡(luò)通常在安全需求較高且較為封閉的應(yīng)用部署中使用,如管理密鑰信息應(yīng)用、密碼認(rèn)證數(shù)據(jù)庫等共享宿主機(jī)模型(Host)容器加入宿主機(jī)的NetworkNamespace,容器直接使用宿主機(jī)網(wǎng)絡(luò)Host網(wǎng)絡(luò)下容器與宿主機(jī)共用同一個IP地址,容器可以直接通過IP地址對外通信,性能較好。但是宿主機(jī)已占用端口對容器而言無法使用,共享同一個NetworkNamespace導(dǎo)致網(wǎng)絡(luò)隔離性不好網(wǎng)橋模型(Bridge)默認(rèn)網(wǎng)絡(luò)驅(qū)動程序。主要用于多個容器在同一個Docker宿主機(jī)上進(jìn)行通信網(wǎng)橋模式可以實現(xiàn)多容器之間的通信,Docker運(yùn)行時默認(rèn)出現(xiàn)一個docker0網(wǎng)橋。容器被創(chuàng)建時,默認(rèn)掛載在docker0上。docker0網(wǎng)橋被創(chuàng)建時已默認(rèn)配置了子網(wǎng),用戶也可以根據(jù)自身需求進(jìn)行子網(wǎng)創(chuàng)建物理地址模型(Overlay)Overlay網(wǎng)絡(luò)可基于Linux網(wǎng)橋和VXlan,實現(xiàn)跨主機(jī)的容器通信在容器集群構(gòu)建中,用于實現(xiàn)容器跨主機(jī)通信MacVLANMacVLAN能夠用于跨主機(jī)通信跨主機(jī)通信場景7.1.4 容器存儲卷綁定掛載綁定掛載(BindMount)是指將宿主機(jī)上已有的目錄或文件掛載到容器中,主要作用是允許將一個目錄或文件掛載到一個指定的目錄上。在對該掛載點進(jìn)行任何操作時,修改只會發(fā)生在被掛載的目錄或文件上,而原掛載點上的其他內(nèi)容則會被隱藏起來且不受影響。卷(Volume)由Docker管理,將特定目錄掛載給容器。使用卷時,Docker會在主機(jī)上的Docker存儲目錄Dockerarea(Linux中一般存儲在/var/lib/docker/volumes/目錄下)中創(chuàng)建一個新目錄,Docker會管理該目錄的內(nèi)容。對于擁有了卷的容器,卷的內(nèi)容存在于容器的生命周期之外,刪除容器后,Docker數(shù)據(jù)卷仍然存在。對容器而言,容器運(yùn)行時用于讀寫的容器層會隨著容器的消失而消亡,容器層中的數(shù)據(jù)也會隨之消失。那么,如何將容器運(yùn)行過程中的數(shù)據(jù)持久地保存下來呢?Docker容器中持久化數(shù)據(jù)一般采用卷和綁定掛載這兩種存儲方式。7.1.4 容器存儲卷與綁定掛載在使用時都為宿主機(jī)上的目錄或文件,通過將其掛載給容器來實現(xiàn)容器數(shù)據(jù)的持久化存儲。這時卷與綁定掛載的目錄都擁有獨立的生命周期,不會因容器的消亡導(dǎo)致數(shù)據(jù)被刪除。它們之間的不同點在于,卷生成的目錄是由Docker進(jìn)行管理的,而綁定掛載的目錄為宿主機(jī)上存在的路徑,兩者對比如下圖所示。同時,在容器中,通過不同的持久化存儲方式存儲的數(shù)據(jù)可以通過以下3種方式實現(xiàn)數(shù)據(jù)的共享。綁定掛載:將宿主機(jī)上的目錄或文件掛載到容器中,通過掛載點將容器中的數(shù)據(jù)存儲到宿主機(jī)路徑中。卷:將宿主機(jī)上的數(shù)據(jù)復(fù)制到容器的卷中,可以使用dockercp命令在容器與主機(jī)之間復(fù)制數(shù)據(jù),或者使用cp命令將需要共享的數(shù)據(jù)復(fù)制到該卷的目錄下。容器卷:先通過卷或綁定掛載將數(shù)據(jù)掛載到一個容器中,其他容器再引用這個卷容器中的數(shù)據(jù),從而實現(xiàn)容器之間的數(shù)據(jù)共享。7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點7.4華為云容器實踐7.2.1 Kubernetes容器編排工具概覽

Kubernetes(簡稱K8S)是Google開源的容器集群管理系統(tǒng),它構(gòu)建在Docker技術(shù)之上,為容器化的應(yīng)用提供資源調(diào)度、部署運(yùn)行、服務(wù)發(fā)現(xiàn)、擴(kuò)容縮容等一整套功能,其本質(zhì)上是基于容器技術(shù)的Micro-PaaS平臺。容器編排指的是對容器的一系列定義、創(chuàng)建和配置等動作的管理。從技術(shù)的角度來看,容器的大規(guī)模應(yīng)用需要由容器編排引擎進(jìn)行統(tǒng)一管理調(diào)度;從商業(yè)的角度來看,用戶的業(yè)務(wù)或應(yīng)用最終需要部署在平臺上,用戶愿意付費(fèi)的是具有平臺層能力的工具。Kubernetes示意Google、RedHat等牽頭成立云原生計算基金會,CNCF隸屬于Linux基金會,主要致力于云原生技術(shù)的普及和可持續(xù)發(fā)展。Docker公司宣布,將在主打產(chǎn)品Docker企業(yè)版中內(nèi)置Kubernetes系統(tǒng),從此Kubernetes成為容器技術(shù)事實上的行業(yè)標(biāo)準(zhǔn)。2015年7月2017年10月7.2.2 Kubernetes技術(shù)架構(gòu)

在一個基礎(chǔ)的Kubernetes集群中,需要包含一個Master節(jié)點和多個Node節(jié)點。集群中的每個節(jié)點可以部署在一臺獨立的物理機(jī)上,也可以部署在一臺虛擬機(jī)上。右圖所示為Kubernetes的部署架構(gòu)。Kubernetes的部署架構(gòu)Kubernetes部署架構(gòu)Master節(jié)點Node節(jié)點Node節(jié)點是容器實際運(yùn)行的場所,用戶的容器都會在Node節(jié)點上運(yùn)行。Node節(jié)點通過接收Master節(jié)點下發(fā)的調(diào)度指令對容器進(jìn)行控制,但是由于Kubernetes無法直接對容器進(jìn)行操作管理,所以Kubernetes會將容器包裝進(jìn)Pod(Kubernetes中的基礎(chǔ)單位)內(nèi)進(jìn)行管控。因此,Pod是Kubernetes最小的管理單元。Master節(jié)點提供集群控制功能,對容器集群做出全局性決策,如系統(tǒng)資源調(diào)度等。Master節(jié)點上通常不運(yùn)行用戶容器。在高可用場景部署場景下,可以有多個Master節(jié)點。7.2.2 Kubernetes技術(shù)架構(gòu)

Kubernetes組件架構(gòu)下圖所示為Kubernetes的組件架構(gòu),在Master節(jié)點及Node節(jié)點上分別運(yùn)行著不同的組件,通過組件的配合實現(xiàn)Kubernetes集群管理的功能。7.2.2 Kubernetes技術(shù)架構(gòu)

kube-apiserveretcdkube-controller-managerkube-scheduler1234etcd用于Kubernetes的后端存儲。所有集群數(shù)據(jù)都存儲在此處,Kubernetes管理人員始終為Kubernetes集群的etcd數(shù)據(jù)提供備份計劃。kube-controller-manager為運(yùn)行控制器,是處理集群中常規(guī)任務(wù)的后臺進(jìn)程。從邏輯上來講,每個控制器是一個單獨的進(jìn)程,但為了降低復(fù)雜性,它們都被編譯成獨立的可執(zhí)行文件,并在單個進(jìn)程中運(yùn)行。kube-scheduler用于監(jiān)視沒有分配節(jié)點的新創(chuàng)建的Pod,幫助其選擇一個供其運(yùn)行的合適的節(jié)點。Master節(jié)點的組件主要具備以下功能01OPTIONkube-apiserver用于對外暴露KubernetesAPI,它是Kubernetes的前端控制層。它被設(shè)計為水平擴(kuò)展的,即通過部署更多實例來實現(xiàn)縮放。7.2.2 Kubernetes技術(shù)架構(gòu)

kube-proxy用于管理Service的訪問,包括集群內(nèi)Pod到Service的訪問和集群外訪問Service。kube-proxykubelet容器引擎kubelet是在集群內(nèi)每個節(jié)點中運(yùn)行的一個代理,用于保證Pod的運(yùn)行。容器引擎用于創(chuàng)建容器,Kubernetes只有容器編排的能力而不具備創(chuàng)建容器的能力,因此需要Docker來創(chuàng)建容器。當(dāng)然,除了使用Docker,還可以使用其他容器引擎,如RKT、Kata等。Node節(jié)點的組件主要具備以下功能02OPTION7.2.2 Kubernetes技術(shù)架構(gòu)

add-ons安裝拓展組件主要具備以下功能03OPTION(4)Flannel為Kubernetes提供方便的網(wǎng)絡(luò)服務(wù)。(1)Core-dns為整個集群提供DNS服務(wù)。(3)Heapster提供集群資源監(jiān)控。(2)Dashboard提供圖形化管理界面。7.2.3 Kubernetes的工作負(fù)載Pod是Kubernetes編排的最小單位,一個Pod中封裝了一個或多個緊耦合的應(yīng)用容器,在同一個Pod內(nèi)的容器共享數(shù)據(jù)存儲和IP地址,其內(nèi)部架構(gòu)如圖所示。從生命周期來說,Pod是短暫的而不是長久的應(yīng)用。若Pod被調(diào)度到節(jié)點,則它會保持在這個節(jié)點上直到被銷毀。Pod內(nèi)部架構(gòu)Pod針對多個容器在一個Pod的場景,為了能夠更好地管理Pod的運(yùn)行狀態(tài),Pod會被分配一個名為Pause容器的底層基礎(chǔ)容器。Pause容器也被稱為根容器,它的狀態(tài)代表整個Pod的狀態(tài),在Pod中的應(yīng)用容器出現(xiàn)問題不會直接影響Pod的狀態(tài)。Pod中多個應(yīng)用容器共享Pause容器的網(wǎng)絡(luò),容器間可以通過本地主機(jī)互訪。7.2.3 Kubernetes的工作負(fù)載Deployment不建議直接使用ReplicaSet,而是用更上層的Deployment來調(diào)用ReplicaSet,Deployment是目前常用的控制器,可以管理一個或多個ReplicaSet,并通過ReplicaSet來管理Pod。所以從邏輯管理關(guān)系上可以看出容器Pod<ReplicaSet<Deployment。Deployment是Kubernetes中常見的對象概念,Deployment在Kubernetes中用于部署無狀態(tài)應(yīng)用(指不需要對接持久化存儲,應(yīng)用的多個實例之間完全沒有區(qū)別),每個請求在不同的實例返回的結(jié)果都是一樣的,Kubernetes對它們的處理也是隨機(jī)的。隨著Kubernetes的不斷更新,ReplicaSet逐漸成為新一代的RC,其主要功能和RC一樣,如維持Pod的數(shù)量穩(wěn)定、指定Pod的運(yùn)行位置等,使用方法也相似,主要的區(qū)別是ReplicaSet更新了API以支持更多功能,上圖所示為不同ReplicaSet控制器關(guān)系示意。7.2.3 Kubernetes的工作負(fù)載StatefulSet也是一種控制器,與Deployment不同的是,StatefulSet在Kubernetes中用于部署有狀態(tài)應(yīng)用。這些應(yīng)用需要在不同的節(jié)點之間保持?jǐn)?shù)據(jù)同步,在節(jié)點發(fā)生故障時需要能夠快速恢復(fù)使用。有狀態(tài)應(yīng)用除數(shù)據(jù)之外,每個實例都是獨立的,會區(qū)分主從實例,在進(jìn)行重啟操作時,每個實例的重啟是有順序的。DaemonSet能夠讓加入集群的Node節(jié)點運(yùn)行同一個Pod。有新的節(jié)點加入Kubernetes集群中時,Pod會被DaemonSet控制器自動調(diào)度到該節(jié)點上運(yùn)行,當(dāng)節(jié)點從Kubernetes集群中被移除時,被DaemonSet調(diào)度的Pod會被移除,如果刪除DaemonSet,則所有跟它相關(guān)的Pod都會被刪除。DaemonSet通常用來部署守護(hù)進(jìn)程類型的應(yīng)用Pod。StatefulSetDaemonSet7.2.3 Kubernetes的工作負(fù)載標(biāo)簽(Label)是附在Kubernetes對象上的鍵值對,如Pod、Deployment等,標(biāo)簽可以在創(chuàng)建時指定,也可以在創(chuàng)建后指定。標(biāo)簽的值本身不具備具體含義,但可以通過標(biāo)簽來篩選對象特定的子集,便于管理。對每個對象而言,可以同時存在多個標(biāo)簽。標(biāo)簽與標(biāo)簽選擇器有了標(biāo)簽,對Pod等對象的管理變得更加靈活,而如何對指定批量的同標(biāo)簽對象進(jìn)行操作則需要通過標(biāo)簽選擇器(LabelSelector)完成。標(biāo)簽選擇器是Kubernetes的核心分組方式。對Kubernetes而言,目前支持兩種標(biāo)簽選擇器,分別是基于等值的(Equality-Based)和基于集合的(Set-Based)。左圖所示為標(biāo)簽和標(biāo)簽選擇器的關(guān)系。7.2.3 Kubernetes的工作負(fù)載ServiceService是Kubernetes中核心的資源對象之一,Service定義了服務(wù)的訪問入口地址,前端的應(yīng)用Pod通過這個入口地址訪問其后端的一組Pod副本集群。Service與其后端Pod副本集群之間則是通過標(biāo)簽選擇器來實現(xiàn)選擇管理的。Service有以下3種實現(xiàn)類型。NodePort在Node節(jié)點上打開一個端口以供外部訪問。LoadBalancer通過外部的負(fù)載均衡器來訪問。ClusterIP提供一個集群內(nèi)部的虛擬IP地址以供Pod訪問,這是Service的默認(rèn)模式。0102037.2.3 Kubernetes的工作負(fù)載Job與CronJob當(dāng)在Kubernetes中需要批量處理短暫的一次性任務(wù),僅執(zhí)行一次,并保證處理的一個或多個Pod成功執(zhí)行并退出時,Deployment控制器在此場景下并不適用,這時可以使用Job,Job主要用于完成一次性任務(wù)工作場景。非并行Job通常只運(yùn)行一個Pod,Pod成功執(zhí)行并退出,Job結(jié)束。固定完成次數(shù)的并行Job并發(fā)運(yùn)行指定數(shù)量的Pod,直到指定數(shù)量的Pod成功執(zhí)行并退出,Job結(jié)束。帶有工作隊列的并行Job用戶可以指定并行的Pod數(shù)量,當(dāng)任何Pod成功執(zhí)行并退出后,不會再創(chuàng)建新的Pod;一旦有一個Pod成功執(zhí)行并退出,并且所有的Pod都執(zhí)行并退出,該Job就成功結(jié)束;一旦有一個Pod成功執(zhí)行并退出,其他Pod都會準(zhǔn)備退出。Job模型7.2.3 Kubernetes的工作負(fù)載ConfigMap與SecretConfigMapSecret對Secret而言,其功能與ConfigMap類似,區(qū)別在于Secret主要用于處理敏感信息,如密碼、Token、證書等,提供了一種安全和可擴(kuò)展的機(jī)制。ConfigMap用于存儲在Kubernetes中部署的應(yīng)用配置數(shù)據(jù),作用是為容器應(yīng)用定義配置文件和參數(shù),和容器的存儲類似,ConfigMap它聚焦于以下幾個方面。為已經(jīng)部署的應(yīng)用提供動態(tài)的、分布式的配置管理。封裝配置管理信息,簡化Kubernetes的部署管理。為Kubernetes創(chuàng)建一個靈活的配置管理模型。7.2.4 其他容器編排工具M(jìn)esos是Mesosphere公司的集群管理項目,具有兩層調(diào)度機(jī)制,可管理上萬節(jié)點,具有超大規(guī)模集群管理能力。Mesos原本是大數(shù)據(jù)資源管理項目,也能支持PaaS業(yè)務(wù)。Swarm使用Docker原生的容器管理API進(jìn)行集群管理,可與Docker項目無縫集成。Swarm通過一個入口統(tǒng)一管理Docker主機(jī)上的各種容器資源,相較于其他的容器編排工具,Swarm的架構(gòu)更加輕便,功能比較少。Swarm也因此比較適合在小型的容器集群規(guī)模中部署使用。SwarmMesosMesos具有以下特點:①支持上萬節(jié)點接入的大規(guī)模集群場景。②支持多種應(yīng)用框架。③支持部署高可用。通過冗余、狀態(tài)同步、故障恢復(fù)等機(jī)制,Mesos能夠在面臨故障及異常情況時,保持穩(wěn)定運(yùn)行。④支持Docker等主流容器。⑤提供了多個流行語言的API,包括Python、Java等。⑥擁有自帶的Web圖形化界面,方便操作管理。7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點7.4華為云容器實踐7.3.1 華為云容器實例云容器實例服務(wù)提供無服務(wù)器容器引擎,能夠幫助云上用戶在不創(chuàng)建和管理服務(wù)器集群的情況下直接運(yùn)行容器。無服務(wù)器是一種架構(gòu)理念,是指不用創(chuàng)建和管理服務(wù)器、不用擔(dān)心服務(wù)器的運(yùn)行狀態(tài),只需動態(tài)申請應(yīng)用需要的資源,把服務(wù)器留給專門的人員管理和維護(hù),進(jìn)而專注于應(yīng)用開發(fā),提升應(yīng)用開發(fā)效率、節(jié)約企業(yè)IT成本。云容器實例可以支持多個異構(gòu)的Kubernetes集群,通過華為云底層提供的豐富的網(wǎng)絡(luò)、存儲資源提高其使用性能,云容器實例架構(gòu)如上圖所示。華為云容器實例定義云容器實例(CCI)服務(wù)提供無服務(wù)器容器引擎,能夠幫助云上用戶在不創(chuàng)建和管理服務(wù)器集群的情況下直接運(yùn)行容器。7.3.1 華為云容器實例DevOps流程一般用于任務(wù)計算型場景,如企業(yè)持續(xù)集成/持續(xù)交付(CI/CD)流程自動化,需要快速申請資源,申請完成后快速釋放。對企業(yè)而言,構(gòu)建從代碼提交到應(yīng)用部署的DevOps完整流程可以提升企業(yè)應(yīng)用的版本迭代效率。容器良好的可移植性與隔離性能夠很好地支持這類場景。通過容器鏡像打通測試、預(yù)發(fā)、生產(chǎn)環(huán)境應(yīng)用部署與運(yùn)行,加快業(yè)務(wù)交付進(jìn)程。右圖所示為DevOps持續(xù)交付場景。華為云容器實例使用場景7.3.2 華為云容器實例云容器引擎(CloudContainerEngine,CCE)是基于開源Kubernetes的云服務(wù)產(chǎn)品,提供高度可擴(kuò)展的、高性能的企業(yè)級Kubernetes集群,支持運(yùn)行Docker容器的環(huán)境。借助云容器引擎,開發(fā)者可以在華為云上輕松部署、管理和擴(kuò)展容器化應(yīng)用。華為是全球首批Kubernetes認(rèn)證服務(wù)提供商(KubernetesCertifiedServiceProvider,KCSP),是國內(nèi)最早加入Kubernetes社區(qū)的廠商,是容器開源社區(qū)主要貢獻(xiàn)者和容器生態(tài)領(lǐng)導(dǎo)者。華為CCE是全球首批通過CNCF的Kubernetes一致性認(rèn)證的容器服務(wù)。華為云容器引擎介紹7.3.2 華為云容器實例產(chǎn)品架構(gòu)華為CCE在原生Kubernetes集群的架構(gòu)基礎(chǔ)上進(jìn)行了自身商業(yè)化的增強(qiáng),使得華為CCE面向企業(yè)客戶業(yè)務(wù)關(guān)聯(lián)性更強(qiáng),更符合企業(yè)使用要求,華為CCE產(chǎn)品架構(gòu)如圖所示。7.3.2 華為云容器實例華為CCE與Kubernetes對比對比類華為CCE用戶自建Kubernetes易用性通過網(wǎng)頁一鍵創(chuàng)建Kubernetes集群自行準(zhǔn)備服務(wù)器資源,安裝配置必要的軟件并進(jìn)行配置,工作量大、時間長通過向?qū)浇缑婧湍0鍎?chuàng)建應(yīng)用,界面管理容器應(yīng)用生命周期。也支持API和命令行操作采用API、命令行、腳本的方式創(chuàng)建應(yīng)用。不直觀,上手門檻高基于Web展示監(jiān)控信息、詳細(xì)的日志和事件。提供后臺告警功能。通過用戶界面設(shè)置彈性伸縮策略自行登錄服務(wù)器使用命令查看監(jiān)控、日志信息,無法及時察知系統(tǒng)異常。通過腳本設(shè)置自動彈性伸縮策略性能應(yīng)用創(chuàng)建速度、容器調(diào)度性能、網(wǎng)絡(luò)性能都經(jīng)過優(yōu)化自行創(chuàng)建大規(guī)模容器應(yīng)用性能不穩(wěn)定,網(wǎng)絡(luò)配置容易出錯,性能劣化明顯可靠性多個AZ部署應(yīng)用,應(yīng)用跨AZ或者通過ELB實現(xiàn)應(yīng)用高可用。管理節(jié)點高可用需要自行實現(xiàn)高可用架構(gòu)可靠性99.99%,Docker升級和Kubernetes升級不中斷業(yè)務(wù)無可靠性指標(biāo)保證,升級中斷業(yè)務(wù)支持鏡像簽名,保證鏡像安全需要自行實現(xiàn)7.3.3 華為云容器鏡像華為云容器鏡像產(chǎn)品介紹容器鏡像服務(wù)(SoftwareRepositoryforContainer,SWR)是一種支持容器鏡像全生命周期管理的服務(wù),為容器鏡像提供簡單易用、安全可靠管理功能,幫助用戶快速部署容器化服務(wù)。用戶可以通過界面、DockerCLI和原生API上傳、下載和管理容器鏡像。通過SWR與CCI、CCE配合使用,可以為CCI與CCE服務(wù)提供創(chuàng)建應(yīng)用的容器鏡像。華為云容器鏡像功能介紹容器鏡像服務(wù)的主要作用是對容器鏡像進(jìn)行全生命周期管理,相比私有鏡像倉庫而言,利用容器鏡像服務(wù)存儲鏡像更安全、更可靠。存儲的容器鏡像可以為華為云CCI以及CCE服務(wù)提供鏡像支持,華為云容器鏡像服務(wù)的應(yīng)用場景如圖所示。7.3.3 華為云容器鏡像華為云容器鏡像功能介紹支持鏡像全生命周期管理提供私有鏡像倉庫支持鏡像源加速支持大規(guī)模鏡像分發(fā)點對點加速支持鏡像安全掃描支持自動化部署支持鏡像觸發(fā)器7.1容器技術(shù)原理7.2容器編排7.3華為云容器學(xué)習(xí)要點7.4華為云容器實踐7.4.1 容器鏡像構(gòu)建

dockercommit命令01OPTION容器鏡像的構(gòu)建通常采用兩種方法實現(xiàn),其中dockercommit命令可以通過dockercommit命令將一個運(yùn)行中的容器保存為鏡像。具體的使用方式為利用鏡像創(chuàng)建并運(yùn)行容器,在容器中進(jìn)行需要的修改,修改完成以后通過dockercommit命令構(gòu)建新的鏡像。通過dockercommit命令對一個運(yùn)行的nginx容器構(gòu)建一個新容器鏡像,添加作者信息test,鏡像取名為nginx:v1.0,通過命令查看新創(chuàng)建的容器鏡像信息,主要命令如下。[root@localhost~]#dockerrun--namenginx1-d-p80:80nginx[root@localhost~]#dockercommit\>--auther"test"\>nginx1\>nginx:v1.0[root@localhost~]#dockerimages7.4.1 容器鏡像構(gòu)建

Dockerfile02OPTIONDockerfile是一種文件指令集,用于描述如何自動創(chuàng)建Docker鏡像。其中包含若干鏡像構(gòu)建指令,通過這些指令可以創(chuàng)建dokcerimage。每條指令執(zhí)行后,會創(chuàng)建一個新的鏡像層。下表所示為Dockerfile常用的指令、作用和命令格式。指令作用命令格式FROM指定base鏡像FROM<image>:<tag>MAINTAINER注明鏡像的作者M(jìn)AINTAINER<name>RUN運(yùn)行指定的命令RUN<command>ADD將文件、目錄或遠(yuǎn)程URLs從<src>添加到鏡像文件系統(tǒng)中的<dest>ADD[--chown=<user>:<group>]<src>...<dest>COPY將文件或目錄從<src>添加到鏡像文件系統(tǒng)中的<dest>COPY[--chown=<user>:<group>]<src>...<dest>ENV設(shè)置環(huán)境變量ENV<key><value>EXPOSE指定容器中的應(yīng)用監(jiān)聽的端口EXPOSE<port>[<port>/<protocol>...]USER設(shè)置啟動容器的用戶USER<user>[:<group>]CMD設(shè)置在容器啟動時運(yùn)行指定的腳本或命令CMDcommandparam1param2ENTRYPOINT指定可執(zhí)行的腳本或程序的路徑ENTRYPOINTcommandparam1param2VOLUME將文件或目錄聲明為卷,掛載到容器中VOLUME["/data"]WORKDIR設(shè)置鏡像的當(dāng)前工作目錄WORKDIR/path/to/workdir7.4.2 基于云容器實例的應(yīng)用案例

通過Dockerfile構(gòu)建容器鏡像01OPTION彈性云服務(wù)器和公網(wǎng)IP的規(guī)格不需要太高,例如,規(guī)格為“1vCPUs|2GB”、公網(wǎng)IP帶寬為“1Mbit/s”,操作系統(tǒng)選擇“CentOS7.6”。單擊“遠(yuǎn)程登錄”按鈕登錄購買的彈性云服務(wù)器,執(zhí)行如下命令快速安裝最新穩(wěn)定版本的容器引擎。[root@localhost~]#curl-fsSL-oget-docker.sh[root@localhost~]#shget-docker.sh[root@localhost~]#sudosystemctldaemon-reload[root@localhost~]#sudosystemctlrestartdocker(1)購買彈性云服務(wù)器,安裝Linux操作系統(tǒng)后安裝容器引擎。7.4.2 基于云容器實例的應(yīng)用案例

[root@localhost~]#dockerpullnginx[root@localhost~]#gitclone/jorgensen/2048.git[root@localhost~]#viDockerfileFROMnginxMAINTAINERAllen.Li@COPY./usr/share/nginx/htmlEXPOSE80CMD["nginx","-g","daemonoff;"][root@localhost~]#dockerbuild-t='2048'.[root@localhost~]#dockerimages執(zhí)行如下命令通過Dockerfile方式構(gòu)建容器鏡像。(2)若提示bash:git:commandnotfound,可執(zhí)行sudoyuminstallgit命令安裝git。成功構(gòu)建鏡像如圖所示。7.4.2 基于云容器實例的應(yīng)用案例

上傳容器鏡像至SWR02OPTION選擇“總覽”選項,單擊“創(chuàng)建組織”按鈕,創(chuàng)建名為“img”的組織。選擇“我的資源>鏡像”選項,單擊“客戶端上傳”按鈕,在彈出的界面中單擊“生成臨時登錄指令”按鈕,單擊按鈕復(fù)制登錄指令(1)(2)(3)登錄華為云控制臺,打開服務(wù)列表,選擇“容器>容器鏡像服務(wù)SWR”選項。創(chuàng)建組織登錄指令7.4.2 基于云容器實例的應(yīng)用案例

[root@localhost~]#dockerlogin-ucn-east-2@42756RZSXK3KAJS1LX5L-p6c50ad3a80758058b4def37f9cd7f7c80c548b15c3429c66c1b7776daba26f59在操作系統(tǒng)中輸入登錄指令。(4)dockertag[鏡像名稱:版本名稱][鏡像倉庫地址]/[組織名稱]/[鏡像名稱:版本名稱]對需要上傳的鏡像通過tag命令打上標(biāo)簽,標(biāo)簽格式如下。(5)[root@localhost~]#dockertag2048:latest/img/2048:latest在本例中,修改信息如下。標(biāo)簽信息[root@localhost~]#dockerpush/img/2048:latest上傳容器鏡像,具體命令如下。(6)7.4.2 基于云容器實例的應(yīng)用案例

創(chuàng)建命名空間03OPTION選擇“命名空間”選項,在右側(cè)界面中“通用計算型”命名空間下單擊“創(chuàng)建”按鈕。填寫命名空間名稱、設(shè)置VPC、設(shè)置子網(wǎng)網(wǎng)段,完成命名空間創(chuàng)建。(1)(2)(3)登錄華為云控制臺,打開服務(wù)列表,選擇“容器服務(wù)>云容器實例CCI”選項,進(jìn)入云容器實例控制臺。創(chuàng)建命名空間7.4.2 基于云容器實例的應(yīng)用案例

創(chuàng)建工作負(fù)載04OPTION配置如下信息:設(shè)置負(fù)載名稱為自定義,命名空間為步驟(3)創(chuàng)建的命名空間,Pod數(shù)量為1,Pod規(guī)格保持默認(rèn),容器配置為上傳的容器鏡像。配置“公網(wǎng)訪問”負(fù)載訪問信息,配置服務(wù)名稱為“deployment-2048”,選擇ELB實例為“elb-b544”,選擇ELB協(xié)議為“HTTP/HTTPS”。配置Ingress名稱為“ingress-2048”,ELB端口為“HTTP”“8080”(1)(2)(3)在云容器實例控制臺選擇“工作負(fù)載>無狀態(tài)(Deployment)”選項,在右側(cè)界面單擊“鏡像創(chuàng)建”按鈕。創(chuàng)建負(fù)載訪問7.4.2 基于云容器實例的應(yīng)用案例

完成工作負(fù)載創(chuàng)建。單擊“下一步”按鈕,然后單擊“提交”按鈕,單擊“返回?zé)o狀態(tài)負(fù)載列表”按鈕。在負(fù)載列表中,待負(fù)載狀態(tài)為“運(yùn)行中”,負(fù)載創(chuàng)建成功(4)(5)設(shè)置負(fù)載訪問端口為“80”(也可以選擇其他端口),容器端口為“80”(容器端口必須為80,因為2048鏡像配置的端口為80)。HTTP路由映射路徑為“/”并關(guān)聯(lián)到負(fù)載訪問端口,這樣就可以通過“ELBIP地址:端口”訪問nginx負(fù)載負(fù)載創(chuàng)建成功配置負(fù)載訪問端口7.4.2 基于云容器實例的應(yīng)用案例

訪問工作負(fù)載05OPTION單擊負(fù)載名稱,進(jìn)入負(fù)載詳情界面,如圖所示。選擇“訪問配置>公網(wǎng)訪問”選項,復(fù)制公網(wǎng)訪問地址后,打開瀏覽器并在地址欄粘貼復(fù)制的公網(wǎng)訪問地址,在瀏覽器中訪問公網(wǎng)地址。清理資源06OPTION在左側(cè)導(dǎo)航欄中選擇“工作負(fù)載>無狀態(tài)(Deployment)”選項,在無狀態(tài)負(fù)載列表中單擊2048右側(cè)的“刪除”按鈕,刪除工作負(fù)載。學(xué)習(xí)進(jìn)步!華為云計算技術(shù)與應(yīng)用第8章

華為云數(shù)據(jù)庫服務(wù)組編華為技術(shù)有限公司華為云計算技術(shù)與應(yīng)用8.1傳統(tǒng)數(shù)據(jù)庫8.2云數(shù)據(jù)庫服務(wù)8.3華為云數(shù)據(jù)庫服務(wù)學(xué)習(xí)要點8.4華為云數(shù)據(jù)庫實踐8.1.1 數(shù)據(jù)庫技術(shù)概念如圖所示,數(shù)據(jù)庫技術(shù)包含5個相關(guān)概念,即數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng),以及數(shù)據(jù)庫應(yīng)用,下面將分別對其進(jìn)行介紹。數(shù)據(jù)庫技術(shù)是應(yīng)數(shù)據(jù)管理任務(wù)的需要而產(chǎn)生的。數(shù)據(jù)庫技術(shù)是進(jìn)行數(shù)據(jù)庫管理的有效技術(shù),它主要研究如何對數(shù)據(jù)進(jìn)行科學(xué)、高效的管理,從而為人們提供可共享的、安全的、可靠的數(shù)據(jù)。8.1.2 數(shù)據(jù)如圖所示,“88”這個數(shù)據(jù)既可以是一個部門的人數(shù),也可以是某人一門課的考試成績,沒有語義的存在,數(shù)據(jù)的含義就會變得混亂,無法具體體現(xiàn)一個數(shù)據(jù)。數(shù)據(jù)(Data)是數(shù)據(jù)庫中存儲的基本對象,是用于描述事物的符號記錄。描述事物的符號可以是數(shù)字,也可以是文字、圖形、圖像、音頻、視頻等,數(shù)據(jù)有多種表現(xiàn)形式,但它們都可以在經(jīng)過數(shù)字化后存入計算機(jī)?,F(xiàn)代計算機(jī)系統(tǒng)的數(shù)據(jù)概念是廣義的,僅有數(shù)據(jù)的值并不能完全表達(dá)數(shù)據(jù)的具體內(nèi)容,因此需要一個新的描述性數(shù)據(jù)來對數(shù)據(jù)進(jìn)行描述。數(shù)據(jù)的描述性數(shù)據(jù),稱為語義,也就是數(shù)據(jù)的含義,數(shù)據(jù)與其語義是不可分割的。8.1.2 數(shù)據(jù)記錄示例在日常生活中,人們可以直接用自然語言(如漢語)來描述事物。記錄是計算機(jī)中表示和存儲數(shù)據(jù)的一種格式或方法。這里的學(xué)生記錄就是描述學(xué)生的數(shù)據(jù),通過這樣一條記錄就具體描述了一個實際的學(xué)生。這樣的數(shù)據(jù)是有結(jié)構(gòu)的。日常描述(李明,男,2000-06,江蘇省南京市,計算機(jī)系,2020),即把學(xué)生的姓名、性別、出生年月、出生地、所在院系、入學(xué)時間等組織在一起,構(gòu)成一條記錄。某校計算機(jī)系一位同學(xué)的基本情況:2020級計算機(jī)系的李明同學(xué),性別為男,2000年6月出生于江蘇省南京市。計算機(jī)中的描述8.1.3 數(shù)據(jù)庫

數(shù)據(jù)庫(Database),顧名思義是存放數(shù)據(jù)的倉庫。嚴(yán)格地講,數(shù)據(jù)庫是長期儲存在計算機(jī)內(nèi)的有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中儲存的數(shù)據(jù)具有以下3個基本特點??晒蚕頂?shù)據(jù)庫中的數(shù)據(jù)是可為各種用戶或程序共享使用的,而不是為某個用戶或程序?qū)S械?。各個用戶或程序可以通過統(tǒng)一的數(shù)據(jù)接口訪問數(shù)據(jù)庫,并依據(jù)特定的協(xié)議規(guī)范獲取數(shù)據(jù)。長期存儲數(shù)據(jù)庫提供數(shù)據(jù)長期存儲的可靠機(jī)制,數(shù)據(jù)一旦被存儲在數(shù)據(jù)庫中,就不會因為時間導(dǎo)致丟失,同時在系統(tǒng)發(fā)生故障后能夠進(jìn)行數(shù)據(jù)恢復(fù),從而保證數(shù)據(jù)庫中的數(shù)據(jù)完整。有組織數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲,具有較小的冗余度(Redundancy)、較高的數(shù)據(jù)獨立性(DataIndependence)和易擴(kuò)展性(Scalability)。0203018.1.4 數(shù)據(jù)庫管理系統(tǒng)

數(shù)據(jù)庫管理系統(tǒng)(DBMS)是一個能夠科學(xué)地組織和存儲數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)的系統(tǒng)軟件,是位于用戶與操作系統(tǒng)之間的數(shù)據(jù)管理軟件,其主要功能如下。數(shù)據(jù)定義功能數(shù)據(jù)組織、存儲和管理功能數(shù)據(jù)操縱功能數(shù)據(jù)庫的事務(wù)管理和運(yùn)行管理功能數(shù)據(jù)庫的建立和維護(hù)功能12345提供數(shù)據(jù)定義語言,用戶通過該語言可以方便地對數(shù)據(jù)庫中的數(shù)據(jù)對象的組成與結(jié)構(gòu)進(jìn)行定義,方便用戶對數(shù)據(jù)進(jìn)行管理。數(shù)據(jù)組織是指需要確定通過何種文件結(jié)構(gòu)和存取方式來組織這些數(shù)據(jù);數(shù)據(jù)存儲是指針對不同的數(shù)據(jù)應(yīng)該存儲哪些內(nèi)容;數(shù)據(jù)管理功能是指為數(shù)據(jù)提供多種存取方法。數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)操縱語言(DML),用戶可以使用該語言來操縱數(shù)據(jù),實現(xiàn)對數(shù)據(jù)庫的基本操作,如查詢、插入、刪除和修改等。數(shù)據(jù)庫在建立、運(yùn)行和維護(hù)時由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理和控制,以保證事務(wù)的正確運(yùn)行,保證數(shù)據(jù)的安全性、完整性等。主要包括數(shù)據(jù)庫初始數(shù)據(jù)的輸入和轉(zhuǎn)換功能,數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)功能,數(shù)據(jù)庫的重組織功能和性能監(jiān)視、分析功能等。其他功能6包括數(shù)據(jù)庫管理系統(tǒng)與網(wǎng)絡(luò)中其他軟件系統(tǒng)的通信功能,一個數(shù)據(jù)庫管理系統(tǒng)與另一個數(shù)據(jù)庫管理系統(tǒng)或文件系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換功能等。8.1.5 數(shù)據(jù)庫系統(tǒng)

如圖所示為數(shù)據(jù)庫系統(tǒng)架構(gòu),其中的應(yīng)用程序、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫和數(shù)據(jù)庫管理員為數(shù)據(jù)庫系統(tǒng)的主要模塊。操作系統(tǒng)不屬于數(shù)據(jù)庫系統(tǒng),它只是提供了一個數(shù)據(jù)操作協(xié)議的統(tǒng)一接口。數(shù)據(jù)庫管理系統(tǒng)是一類系統(tǒng)軟件,它和操作系統(tǒng)一樣,是計算機(jī)系統(tǒng)的基礎(chǔ)軟件。數(shù)據(jù)庫系統(tǒng)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及應(yīng)用開發(fā)工具)、應(yīng)用程序和數(shù)據(jù)庫管理員(DataBaseAdministrator,DBA)等組成的存儲、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。在不引起混淆的情況下,通常把數(shù)據(jù)庫系統(tǒng)簡稱為數(shù)據(jù)庫。8.1.6 數(shù)據(jù)庫應(yīng)用

數(shù)據(jù)庫作為一種管理數(shù)據(jù)的技術(shù),主要用于承載數(shù)據(jù)、管理數(shù)據(jù),并基于上層邏輯提供增刪改查的數(shù)據(jù)接口,衍生出了如MySQL、Oracle、SQLServer等傳統(tǒng)關(guān)系數(shù)據(jù)庫產(chǎn)品;同時,在數(shù)據(jù)類型多樣性、業(yè)務(wù)復(fù)雜性的大背景下,還衍生出了如Redis、HBase等非關(guān)系數(shù)據(jù)庫產(chǎn)品。這些數(shù)據(jù)庫產(chǎn)品各有特點,并在各自的領(lǐng)域中大放光彩。除數(shù)據(jù)庫技術(shù)本身衍生的數(shù)據(jù)庫上層應(yīng)用以外,還有一類常見的應(yīng)用是數(shù)據(jù)庫工具應(yīng)用,包括數(shù)據(jù)庫管理工具和數(shù)據(jù)庫遷移工具。數(shù)據(jù)庫管理工具雖然數(shù)據(jù)庫本身也提供命令端用于管理數(shù)據(jù),但這種方式對用戶而言操作難度大、便捷性差,因此,各個數(shù)據(jù)庫廠商都會研發(fā)對應(yīng)的數(shù)據(jù)庫管理工具,如MySQL的Workbench等。數(shù)據(jù)庫遷移工具同構(gòu)數(shù)據(jù)庫(如MySQL與MySQL)之間的數(shù)據(jù)是可以直接遷移使用的,只需進(jìn)行適配即可,無須耗費(fèi)過多的時間。但異構(gòu)數(shù)據(jù)庫(如MySQL與Oracle)之間因語法、數(shù)據(jù)存儲定義等的差異,無法直接進(jìn)行數(shù)據(jù)調(diào)用,需要基于底層的SQL協(xié)議進(jìn)行數(shù)據(jù)互通。8.1傳統(tǒng)數(shù)據(jù)庫8.2云數(shù)據(jù)庫服務(wù)8.3華為云數(shù)據(jù)庫服務(wù)學(xué)習(xí)要點8.4華為云數(shù)據(jù)庫實踐8.2.1 云數(shù)據(jù)庫服務(wù)概念及特征數(shù)據(jù)庫也是數(shù)據(jù)庫,在語法使用上與傳統(tǒng)數(shù)據(jù)庫沒有差異,只不過在部署方式、形態(tài)和運(yùn)維方面與傳統(tǒng)數(shù)據(jù)庫不同,在操作層面上帶來了全新的體驗,使用起來更加便捷和高效。云數(shù)據(jù)庫服務(wù)是構(gòu)建在云服務(wù)模型之上的數(shù)據(jù)庫解決方案,即數(shù)據(jù)庫即服務(wù)(DataBaseasaService,DBaaS)。從歸屬角度上來看,DBaaS運(yùn)行在IaaS之上,屬于PaaS的子類。云數(shù)據(jù)庫天然具備云的靈活性(即開即用、彈性伸縮),能夠提供強(qiáng)大的創(chuàng)新能力(便捷測試、驗證和實施新的業(yè)務(wù)創(chuàng)建)、豐富多樣的產(chǎn)品體系(提供多種衍生的云數(shù)據(jù)庫應(yīng)用)、經(jīng)濟(jì)高效的部署方式(業(yè)務(wù)初期可以少量訂購,隨后自主擴(kuò)容)和按需付費(fèi)(按小時計費(fèi))的支付模式。云數(shù)據(jù)庫服務(wù)涵蓋關(guān)系數(shù)據(jù)庫服務(wù)、非關(guān)系數(shù)據(jù)庫服務(wù)和數(shù)據(jù)庫工具服務(wù)等,企業(yè)可根據(jù)實際數(shù)據(jù)業(yè)務(wù)進(jìn)行選擇8.2.1 云數(shù)據(jù)庫服務(wù)概念及特征對企業(yè)而言,云數(shù)據(jù)庫需要具有如下特征。彈性伸縮數(shù)據(jù)庫的存儲、CPU、I/O等數(shù)據(jù)庫資源需要能夠依據(jù)企業(yè)自身業(yè)務(wù)進(jìn)行彈性伸縮,業(yè)務(wù)增長時應(yīng)用系統(tǒng)自動擴(kuò)容,業(yè)務(wù)下降時應(yīng)用系統(tǒng)自動縮容。計算存儲分離具有多種存儲方式自動化運(yùn)維管理數(shù)據(jù)安全及可靠數(shù)據(jù)庫采用計算與存儲分離架構(gòu),在高可用、備份恢復(fù)和升級擴(kuò)展等方面,都會帶來全新性能體驗。例如,計算和存儲可以獨立彈性伸縮,擴(kuò)縮容無須進(jìn)行數(shù)據(jù)遷移。數(shù)據(jù)庫系統(tǒng)通常是IT系統(tǒng)極為重要的系統(tǒng),對存儲I/O性能要求高。例如,在華為云關(guān)系數(shù)據(jù)庫中,存儲類型可以分為超高I/O和SSD盤,企業(yè)可根據(jù)實際業(yè)務(wù)選擇所需的存儲類型。提供一套完整的自動化運(yùn)維管理平臺,提供零停機(jī)維護(hù)、版本滾動升級、故障自動監(jiān)控、日志分析及問題修復(fù)能力,大大降低運(yùn)維成本,提高開發(fā)效率。數(shù)據(jù)庫上云后,數(shù)據(jù)都存儲在云服務(wù)廠商的后臺,云服務(wù)廠商能夠提供“7×24h”的數(shù)據(jù)庫業(yè)務(wù)可靠性保證,并能保證數(shù)據(jù)不泄露,操作權(quán)限高度集中。8.2.2 云數(shù)據(jù)庫服務(wù)技術(shù)存儲與SQL計算分離為了應(yīng)對日益增長的性能要求,傳統(tǒng)的數(shù)據(jù)庫做了集群化的處理,雖然在某種程度上提高了數(shù)據(jù)庫的性能,但歸根結(jié)底數(shù)據(jù)庫中的各個節(jié)點的資源(CPU、內(nèi)存、磁盤等)都是獨立存在的。在典型的大規(guī)模并行處理(MassivelyParallelProcessing,MPP)架構(gòu)中,數(shù)據(jù)庫中的數(shù)據(jù)在導(dǎo)入或插入時,經(jīng)過一定的分區(qū)邏輯(Hash、Replication、Random、Range等)后分布到各個數(shù)據(jù)節(jié)點中,使得數(shù)據(jù)庫在進(jìn)行數(shù)據(jù)查詢時,能夠充分利用每一個數(shù)據(jù)節(jié)點。數(shù)據(jù)查詢?nèi)蝿?wù)在每個節(jié)點上都是獨立存在的,各自處理各自的數(shù)據(jù),相互之間不會發(fā)生資源爭搶的現(xiàn)象,具有很好的并行處理能力。典型MPP架構(gòu)如圖所示。8.2.2 云數(shù)據(jù)庫服務(wù)技術(shù)這種存儲與計算高度耦合的架構(gòu)一定程度上解決了數(shù)據(jù)庫的性能問題,但同時也帶來了新的問題。因此,在云場景下,將存儲與SQL計算進(jìn)行解耦成為時下云數(shù)據(jù)庫服務(wù)必要的技術(shù)手段。通過存儲與計算分離,用戶能夠有針對性地獨立規(guī)劃存儲、計算規(guī)格,并受益于云原生特性,能夠比較快地完成擴(kuò)容、縮容操作,靈活適應(yīng)某些峰值業(yè)務(wù)場景,同時也能夠極大地降低成本。這種存儲與計算分離的架構(gòu)是指將SQL解析、轉(zhuǎn)換、執(zhí)行計劃生成、計算等模塊與底層存儲的硬件進(jìn)行解耦。在這一架構(gòu)中,通過將存儲引擎與SQL計算引擎分離,可以做到二者之間松耦合、互相獨立地處理任務(wù)。典型的存儲與計算分離架構(gòu)如圖所示,通常包含3個部分:存儲層、網(wǎng)絡(luò)傳輸層、計算層8.2.2 云數(shù)據(jù)庫服務(wù)技術(shù)對于傳統(tǒng)的數(shù)據(jù)庫而言,一般在部署之后,對應(yīng)的數(shù)據(jù)庫版本是確定的,如果安裝了MySQL,就是基于MySQL實現(xiàn)的數(shù)據(jù)庫應(yīng)用;安裝了Oracle就需要基于Oracle來實現(xiàn)上層邏輯。對公司而言,使用的數(shù)據(jù)庫過多勢必會產(chǎn)生額外的數(shù)據(jù)一致性維護(hù)成本。在數(shù)據(jù)庫上云以后為了實現(xiàn)不同類型數(shù)據(jù)的融合與統(tǒng)一管理,需要具備多模(Multi-Model)數(shù)據(jù)庫管理與存儲的能力。多模數(shù)據(jù)管理需要支持的數(shù)據(jù)存儲類型所謂的多模,指的是一個數(shù)據(jù)庫支持多種數(shù)據(jù)庫存儲引擎,可以滿足上層應(yīng)用對于結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)的統(tǒng)一管理需求,從而降低企業(yè)使用和運(yùn)維的成本多模數(shù)據(jù)管理8.2.3 云數(shù)據(jù)庫服務(wù)安全云數(shù)據(jù)庫服務(wù)安全主要包括兩個方面,一是從云數(shù)據(jù)庫自身角度出發(fā),二是從云服務(wù)角度出發(fā)。這里以華為云關(guān)系數(shù)據(jù)庫服務(wù)為例進(jìn)行介紹,下圖所示為華為云關(guān)系數(shù)據(jù)庫的安全框架。8.2.3 云數(shù)據(jù)庫服務(wù)安全云數(shù)據(jù)庫具備傳統(tǒng)數(shù)據(jù)庫自身所帶的全部安全措施,包括數(shù)據(jù)庫用戶權(quán)限管理、SSL訪問認(rèn)證、賬戶密碼策略等。此外,它還有一些新的安全防護(hù)措施:從云數(shù)據(jù)庫自身角度出發(fā)ACB訪問控制權(quán)限細(xì)分策略DAS安全審計數(shù)據(jù)庫上云以后,連接數(shù)據(jù)庫的方式從原來的本地或局域網(wǎng)內(nèi)的IP連接轉(zhuǎn)變?yōu)橐怨W(wǎng)IP的方式進(jìn)行連接。此外,用戶還可以通過云服務(wù)廠商進(jìn)行內(nèi)網(wǎng)連接,或者通過數(shù)據(jù)庫管理服務(wù)(華為云上為DAS)進(jìn)行數(shù)據(jù)庫連接。上云以后,除數(shù)據(jù)庫本身以外,還會涉及數(shù)據(jù)庫實例(承載數(shù)據(jù)庫服務(wù)的對象)。需要為云用戶設(shè)定針對數(shù)據(jù)庫實例的操作權(quán)限,這些權(quán)限包括但不限于創(chuàng)建數(shù)據(jù)庫實例、刪除數(shù)據(jù)庫實例、查詢數(shù)據(jù)庫實例等。通過權(quán)限細(xì)分策略的擴(kuò)充,可以避免因數(shù)據(jù)庫上云后,對云用戶權(quán)限管理的缺漏。華為云DAS可提供全量SQL洞察(審計)功能,不僅支持全量SQL記錄的查詢能力,還提供了對訪問最頻繁、更新最頻繁的表和鎖等待時間最長的SQL等內(nèi)容的多維度分析、搜索、過濾服務(wù),幫助用戶全面對SQL進(jìn)行洞察和審計,快速找出異常,保障云數(shù)據(jù)庫穩(wěn)定運(yùn)行。8.2.3 云數(shù)據(jù)庫服務(wù)安全華為云上有許多衍生的華為云服務(wù)用于輔助云數(shù)據(jù)庫服務(wù)安全,包括:從云服務(wù)角度出發(fā)數(shù)據(jù)庫安全服務(wù)01OPTION數(shù)據(jù)庫安全服務(wù)(DatabaseSecurityService,DBSS)是一種智能的數(shù)據(jù)庫安全服務(wù),基于機(jī)器學(xué)習(xí)機(jī)制和大數(shù)據(jù)分析技術(shù),提供數(shù)據(jù)庫安全審計、SQL注入攻擊檢測、風(fēng)險操作識別等功能,保障云上數(shù)據(jù)庫的安全。數(shù)據(jù)庫安全審計是指通過在旁路模式下安裝數(shù)據(jù)庫客戶端,讓用戶通過該客戶端進(jìn)行數(shù)據(jù)庫操作,這個客戶端可以對數(shù)據(jù)庫的操作進(jìn)行風(fēng)險行為實時告警,并對攻擊行為進(jìn)行阻斷;同時還可以生成數(shù)據(jù)庫安全標(biāo)準(zhǔn)的合規(guī)報告數(shù)據(jù)庫安全審計架構(gòu)8.2.3 云數(shù)據(jù)庫服務(wù)安全云審計服務(wù)02OPTION云審計服務(wù)(CloudTraceService,CTS)是華為云安全解決方案中專業(yè)的日志審計服務(wù),提供對各種云資源操作記錄的收集、存儲和查詢功能,可用于支撐安全分析、合規(guī)審計、資源跟蹤和問題定位等常見應(yīng)用場景。CTS介紹企業(yè)數(shù)據(jù)上云以后,為了有效地管理企業(yè)數(shù)據(jù)資源,一般通過華為云賬戶進(jìn)行統(tǒng)一的操作,而CTS就是針對華為云賬戶而設(shè)立的審計服務(wù)。它可以有效地監(jiān)聽用戶的各種針對資源的操作,識別高風(fēng)險操作并記錄,從而進(jìn)行資源跟蹤和合規(guī)審計等工作。8.2.3 云數(shù)據(jù)庫服務(wù)安全VPC網(wǎng)絡(luò)安全03OPTION數(shù)據(jù)庫上云后,如何避免數(shù)據(jù)庫因網(wǎng)絡(luò)攻擊導(dǎo)致數(shù)據(jù)丟失造成數(shù)據(jù)安全隱患,是企業(yè)必須要考慮的問題。華為云服務(wù)提供了隔離的虛擬私有網(wǎng)絡(luò)環(huán)境(VPC),用戶的資源和應(yīng)用與云中的其他用戶是完全隔離的,安全性更高。VPC網(wǎng)絡(luò)環(huán)境8.2.3 云數(shù)據(jù)庫服務(wù)安全統(tǒng)一身份認(rèn)證服務(wù)04OPTION數(shù)據(jù)庫上云后,操作數(shù)據(jù)庫的方式從直接的命令端訪問變?yōu)橥ㄟ^云賬號進(jìn)行的上云操作。由于云賬號是一種主要的操作數(shù)據(jù)庫的方式,因此用戶需要對其進(jìn)行權(quán)限管控。統(tǒng)一身份認(rèn)證服務(wù)(IdentityandAccessManagement,IAM)提供了適合企業(yè)級組織結(jié)構(gòu)的用戶賬號管理服務(wù),可為企業(yè)用戶分配不同的資源及操作權(quán)限。用戶通過使用訪問密鑰獲得基于IAM的認(rèn)證和鑒權(quán)后,以調(diào)用API的方式訪問云資源。IAM按層次和細(xì)粒度授權(quán),保證同一企業(yè)租戶的不同用戶在使用云資源上得到有效管控,避免單個用戶因為誤操作等導(dǎo)致整個云服務(wù)的不可用,確保租戶業(yè)務(wù)的持續(xù)性。IAM賬號精細(xì)化訪問控制8.1傳統(tǒng)數(shù)據(jù)庫8.2云數(shù)據(jù)庫服務(wù)8.3華為云數(shù)據(jù)庫服務(wù)學(xué)習(xí)要點8.4華為云數(shù)據(jù)庫實踐8.3 華為云數(shù)據(jù)庫服務(wù)該架構(gòu)一方面能夠盡量減少跨核內(nèi)存訪問的時延問題,另一方面能夠充分發(fā)揮華為芯片的多核算力優(yōu)勢,所提供的關(guān)鍵技術(shù)包括重做日志批插、熱點數(shù)據(jù)NUMA分布、CLog分區(qū)等,可以大幅提升系統(tǒng)的處理性能?;谌A為芯片所使用的ARMv8.1架構(gòu),利用LSE擴(kuò)展指令集來實現(xiàn)高效的原子操作,可以有效提升CPU利用率,從而提升多線程間同步性能、XLog持久化記錄數(shù)據(jù)庫中的變更信息寫入性能等。華為芯片支持NUMA架構(gòu),能夠很好地解決同時多線程(SMT)技術(shù)對CPU核數(shù)的制約。華為芯片的NUMA架構(gòu)華為芯片非統(tǒng)一內(nèi)存訪問架構(gòu)優(yōu)化GaussDB(foropenGauss)基于華為處理器的多核非統(tǒng)一內(nèi)存訪問(NUMA)架構(gòu),進(jìn)行一系列針對NUMA架構(gòu)的相關(guān)優(yōu)化。8.3 華為云數(shù)據(jù)庫服務(wù)SMP并行執(zhí)行技術(shù)華為云數(shù)據(jù)庫服務(wù)GaussDB(foropenGauss)基于SMP并行執(zhí)行技術(shù)實現(xiàn)算子級的并行,能夠有效減少查詢的執(zhí)行時間,提升查詢性能及資源利用率。SMP并行執(zhí)行技術(shù)的整體實現(xiàn)思想是對于能夠并行的查詢算子,將數(shù)據(jù)分片并啟動若干個工作線程分別計算,最后將結(jié)果匯總并返回前端。SMP并行執(zhí)行可以增加數(shù)據(jù)交互算子(Stream),實現(xiàn)多個工作線程之間的數(shù)據(jù)交互,以確保查詢的正確性,完成整體的查詢。SMP并行執(zhí)行是在線程級別上完成的,理論上可以使并行執(zhí)行的子任務(wù)數(shù)達(dá)到物理服務(wù)器核數(shù)的上限。SMP并行線程是在同一個進(jìn)程內(nèi)的,可以直接通過內(nèi)存進(jìn)行數(shù)據(jù)交換,不需要占用網(wǎng)絡(luò)連接與帶寬,降低了限制MPP系統(tǒng)性能提升的網(wǎng)絡(luò)因素的影響。由于并行子任務(wù)啟動后不需要附帶其他后臺工作線程,可以提高系統(tǒng)計算資源的有效利用率。8.3 華為云數(shù)據(jù)庫服務(wù)SwitchTurbo技術(shù)GaussDB(foropenGauss)提供了多種高可用方案,包括同城AZ內(nèi)高可用、跨AZ高可用、異地跨區(qū)域的“兩地三中心”容災(zāi)方案,滿足金融級監(jiān)管要求。GaussDB(foropenGauss)通過獨有的SwitchTurbo技術(shù),保障了同城AZ內(nèi)出現(xiàn)單點故障時能夠快速切換,RPO為0,RTO小于10s。SwitchTurbo技術(shù)支持大并發(fā)、大數(shù)據(jù)量、以聯(lián)機(jī)事務(wù)處理為主的交易型應(yīng)用,并且具備PB級數(shù)據(jù)負(fù)載能力,通過內(nèi)存分析技術(shù)滿足海量數(shù)據(jù)邊入庫邊查詢要求,適用于安全、電信、金融、物聯(lián)網(wǎng)等行業(yè)的詳單查詢業(yè)務(wù)。8.3 華為云數(shù)據(jù)庫服務(wù)底層虛擬機(jī)動態(tài)編譯技術(shù)在CPU內(nèi)存計算上,傳統(tǒng)數(shù)據(jù)處理引擎面臨著諸多短板,具體如下。這些短板制約了數(shù)據(jù)庫執(zhí)行性能的提升,無法構(gòu)建數(shù)據(jù)庫產(chǎn)品核心競爭力。條件邏輯冗余頻繁虛函數(shù)調(diào)用數(shù)據(jù)局域化程度低難以發(fā)揮新硬件擴(kuò)展指令集性能GaussDB(foropenGauss)借助LLVM提供的庫函數(shù),依據(jù)查詢執(zhí)行計劃樹,將原本在執(zhí)行器階段才會確定查詢實際執(zhí)行路徑的過程提前到執(zhí)行初始化階段,從而規(guī)避原本查詢執(zhí)行時候伴隨的函數(shù)調(diào)用、邏輯條件分支判斷及大量的數(shù)據(jù)讀取等問題,以達(dá)到提升查詢性能的目的。底層虛擬機(jī)(LowLevelVirtualMachine,LLVM)技術(shù)提供了完整編譯系統(tǒng)的中間層,它會將中間表示(IntermediateRepresentation,IR)從編譯器取出與優(yōu)化,優(yōu)化后的IR接著被轉(zhuǎn)換及鏈接到目標(biāo)平臺的匯編語言。LLVM也可以在編譯時期、鏈接時期,甚至是運(yùn)行時期產(chǎn)生可重新定位的代碼(RelocatableCode)。8.3 華為云數(shù)據(jù)庫服務(wù)行級訪問控制ACB傳統(tǒng)的數(shù)據(jù)庫在數(shù)據(jù)庫安全層面只能做到最小為表級的權(quán)限訪問控制。GaussDB(foropenGauss)的行級訪問控制特性將數(shù)據(jù)庫訪問粒度控制到數(shù)據(jù)行級別,使數(shù)據(jù)庫擁有行級訪問控制的能力。這使得不同用戶執(zhí)行相同的SQL查詢操作,讀取到的結(jié)果可能是不同的。用戶可以在數(shù)據(jù)表創(chuàng)建行級安全策略,該策略是指針對特定數(shù)據(jù)庫用戶、特定SQL操作生效的表達(dá)式。當(dāng)數(shù)據(jù)庫用戶對數(shù)據(jù)表進(jìn)行訪問時,若SQL滿足數(shù)據(jù)表特定的行級安全策略,則在查詢優(yōu)化階段將滿足條件的表達(dá)式按照屬性類型,通過AND或OR方式拼接,應(yīng)用到執(zhí)行計劃上。行級訪問控制旨在控制表中行級數(shù)據(jù)可見性,通過在數(shù)據(jù)表上預(yù)定義Filter,在查詢優(yōu)化階段將滿足條件的表達(dá)式應(yīng)用到執(zhí)行計劃上,影響最終的執(zhí)行結(jié)果。當(dāng)前行級訪問控制支持的SQL語句包括SELECT、UPDATE、DELETE等。8.3 華為云數(shù)據(jù)庫服務(wù)支持HyperLogLogHLL在計算速度和所占存儲空間上都占優(yōu)勢。在時間復(fù)雜度上,Sort算法進(jìn)行排序至少需要O(nlogn);Hash算法和HLL均為掃描一次全表O(n)的時間就可以得出結(jié)果。在存儲空間上,Sort算法和Hash算法都需要先保存原始數(shù)據(jù)再進(jìn)行統(tǒng)計,導(dǎo)致存儲空間消耗巨大;而對HLL來說,它不需要保存原始數(shù)據(jù),只需要維護(hù)HLL數(shù)據(jù)結(jié)構(gòu),故其占用的空間始終是1280字節(jié)。GaussDB(foropenGauss)采用分布式HLL架構(gòu)。數(shù)據(jù)節(jié)點承擔(dān)計算HLL的任務(wù),使其結(jié)果在CN(CoordinatorNode)匯總,避免了CN計算瓶頸。HyperLogLog(HLL)是統(tǒng)計數(shù)據(jù)集中唯一值個數(shù)的高效近似算法。它有著計算速度快、節(jié)省空間的特點,不需要直接存儲集合本身,而是存儲一種名為HLL的數(shù)據(jù)結(jié)構(gòu)。每當(dāng)有新數(shù)據(jù)加入統(tǒng)計時,只需將數(shù)據(jù)經(jīng)過Hash計算插入HLL中,最后根據(jù)HLL就可以得到結(jié)果。010203在GaussDB的AI全景圖中,主要有AI4DB和DB4AI兩個部分。其中AI4DB是指用人工智能技術(shù)優(yōu)化數(shù)據(jù)庫的性能,從而獲得更好的執(zhí)行表現(xiàn),也可以通過人工智能的手段實現(xiàn)自治、免運(yùn)維等功能。DB4AI指的是打通數(shù)據(jù)庫到人工智能應(yīng)用的端到端流程,統(tǒng)一人工智能技術(shù)棧,達(dá)到開箱即用、高性能、節(jié)約成本等目的。8.3 華為云數(shù)據(jù)庫服務(wù)為更好地滿足時下數(shù)據(jù)庫日益增長的性能需求,GaussDB(foropenGauss)提前做好規(guī)劃,引入AI能力,打造智能數(shù)據(jù)庫。GaussDB的AI全景AI能力8.1傳統(tǒng)數(shù)據(jù)庫8.2云數(shù)據(jù)庫服務(wù)8.3華為云數(shù)據(jù)庫服務(wù)學(xué)習(xí)要點8.4華為云數(shù)據(jù)庫實踐8.4 華為云數(shù)據(jù)庫實踐操作流程本實踐使用DRS的實時同步功能將本地Oracle數(shù)據(jù)庫實時遷移至華為云GaussDB。通過全量+增量同步,實現(xiàn)源數(shù)據(jù)庫Oracle和目標(biāo)數(shù)據(jù)庫GaussDB的數(shù)據(jù)長期同步。8.4.1 創(chuàng)建VPC單擊

按鈕,在右側(cè)選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項,根據(jù)界面提示填寫基本信息。單擊“創(chuàng)建虛擬私有云”按鈕,購買VPC。單擊“立即創(chuàng)建”按鈕,返回VPC列表,查看創(chuàng)建VPC是否創(chuàng)建完成。(1)(2)(3)登錄華為云控制臺,單擊控制臺左上角的

按鈕,選擇地區(qū)。選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項虛擬私有云信息界面8.4.2 創(chuàng)建安全組單擊“創(chuàng)建安全組”按鈕,根據(jù)界面提示,填寫安全組名稱等信息,單擊“確定”按鈕。(1)(2)(3)登錄華為云控制臺,選擇地區(qū),單擊

按鈕,選擇“網(wǎng)絡(luò)>虛擬私有云VPC”選項,再選擇“訪問控制>安全組”選項?!皠?chuàng)建安全組”界面配置入方向規(guī)則返回安全組列表,單擊安全組名稱“sg-01”,選擇“入方向規(guī)則”選項,單擊“添加規(guī)則”按鈕,配置入方向規(guī)則,添加源庫的IP地址等信息。

添加規(guī)則8.4.3 創(chuàng)建GaussDB實例單擊“購買數(shù)據(jù)庫實例”按鈕,配置實例名稱和實例基本信息(1)(2)(3)登錄華為云控制臺,選擇地區(qū),單擊

按鈕,,選擇“數(shù)據(jù)庫>云數(shù)據(jù)庫GaussDB”選項,在左側(cè)導(dǎo)航欄選擇“GaussDB>實例管理”選項。配置實例名稱和實例基本信息配置實例規(guī)格根據(jù)界面提示,配置實例規(guī)格,需要注意的是,本實例為測試實例,因此應(yīng)選擇較小的測試規(guī)格,在實際情況中,用戶可選規(guī)格以界面為準(zhǔn)。8.4.3 創(chuàng)建GaussDB實例配置實例密碼等信息,單擊“立即購買”按鈕,確認(rèn)信息并提交。(4)(5)(6)選擇實例所屬的VPC(創(chuàng)建VPC)和安全組(創(chuàng)建安全組),配置數(shù)據(jù)庫端口。創(chuàng)建VPC和安全組配置實例密碼返回實例列表。當(dāng)實例運(yùn)行狀態(tài)為“正常”時,表示實例創(chuàng)建完成。8.4.4 構(gòu)造遷移前數(shù)據(jù)遷移前需要在源庫構(gòu)造一些數(shù)據(jù)類型,供遷移完成后驗證數(shù)據(jù)使用。用戶可通過執(zhí)行如下步驟在源庫構(gòu)造數(shù)據(jù)。①執(zhí)行以下命令,創(chuàng)建一個用戶供實踐測試使用。createusertest_infoidentifiedbyxxx;其中,test_info為本次實踐創(chuàng)建的用戶,xxx為用戶的密碼,用戶可根據(jù)實際情況自行替換。②執(zhí)行以下命令,給用戶賦權(quán)。grantdbatotest_info;③在當(dāng)前用戶下創(chuàng)建一個數(shù)據(jù)表,具體命令及數(shù)據(jù)表元素類型如下所示。CREATETABLEtest_info.DATATYPELIST(IDINT,COL_01_CHAR______ECHAR(100),(1)根據(jù)本地的Oracle數(shù)據(jù)庫的IP地址,通過數(shù)據(jù)庫連接工具(如DBeaver、Navicat、SQLDeveloper和DataGrip等)連接數(shù)據(jù)庫。根據(jù)DRS支持的數(shù)據(jù)類型,在源庫執(zhí)行語句構(gòu)造數(shù)據(jù),具體步驟如下。(2)8.4.4 構(gòu)造遷移前數(shù)據(jù)COL_02_NCHAR_____ENCHAR(100),COL_03_VARCHAR___EVARCHAR(1000),COL_04_VARCHAR2__EVARCHAR2(1000),COL_05_NVARCHAR2_ENVARCHAR2(1000),COL_06_NUMBER____ENUMBER(38,0),COL_07_FLOAT_____EFLOAT(126),COL_08_BFLOAT____EBINARY_FLOAT,COL_09_BDOUBLE___EBINARY_DOUBLE,COL_10_DATE______EDATEDEFAULTSYSTIMESTAMP,COL_11_TS________ETIMESTAMP(6),COL_12_TSTZ______ETIMESTAMP(6)WITHTIMEZONE,COL_13_TSLTZ_____ETIMESTAMP(6)WITHLOCALTIMEZONE,COL_14_CLOB______ECLOBDEFAULTEMPTY

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論