上一章: DTS概覽頁 | 《DTS控制台入門一本通》第二章 下一章: DTS資料遷移 | 《DTS控制台入門一本通》第三章(下篇) 點選免費下載下傳 《DTS控制台入門一本通》>>>
下載下傳
資料遷移可以把源端資料庫的資料遷移到目标端(遷移不會影響源端資料庫的資料,也不會導緻源端資料庫的資料丢失),資料遷移隻支援後付費(按量付費),該頁面展示了目前賬戶下各個地域的資料遷移執行個體的運作狀态,如圖 3-1。您還可以在這個頁面建立新的遷移任務以及檢視目前遷移任務的詳細資訊。
3.1地域
圖 2-1 标記①處為地域資訊,此處可以切換各個地域檢視不同地域的執行個體資訊。
推薦從概覽頁進入。
3.2檔案導入
圖 3-1 标記②的“檔案導入”功能,是使用 DTS 提供的一個用戶端工具,将工具部署在本地,使用該工具将本地資料庫導出的檔案,然後上傳,實作導入功能,相當于我們自己導出檔案然後導入一樣,如圖 3-2,該功能已經不再支援使用,請勿使用。
3.3建立遷移任務頁面
圖 3-1 标記②的“建立遷移任務”,可以進行資料遷移的任務配置,點選後,會 進入 DTS 遷移任務的配置界面,如圖 3-3,需要注意:
● DTS 目前的實作是邏輯遷移。
● 邏輯遷移的意思是指 DTS 會借助 SELECT 的方式抽取源庫已存在的資料, 然後再通過 INSERT 的方式寫入到目标庫。
● 目前還不支援實體檔案層面的遷移。
DTS 遷移任務主要分為 2 部分進行配置,即源庫資訊和目标庫資訊,源庫是指 要使用 DTS 遷移的源端的資料庫,目标庫是指待遷入資料的資料庫。比如我們要把 MySQL A 資料庫的資料遷移到 MySQL B 資料庫,這裡,MySQL A 資料庫 A 就是 源庫。目标庫就是 MySQL B 資料庫。下面對源庫以及目标庫配置過程的具體項目進 行讨論。
3.3.1 執行個體類型
如圖 3-3,顧名思義,就是 DTS 支援遷移的源端資料庫接入的類型,并且 DTS 對不同的接入類型的執行個體,有不同的支援粒度,主要分為如下幾種。無論是哪一種, 最終實作的核心目的是能讓 DTS 的伺服器叢集連接配接到源端或者目标端的資料庫。
3.3.1.1 有公網 IP 自建的資料庫
這是最簡單的一種接入類型,就是指您的源端的資料庫有公網 IP 位址,這個地 址允許其他程式 ( 這裡特指 DTS) 可以通過您的公網 IP 連接配接到您的源端資料庫 , 這種 執行個體類型配置比較靈活,但是容易受到公網網絡環境的影響,進而影響遷移的速率。 當我們選擇這個類型時,頁面的資訊也會按照“有公網 IP 自建的資料庫”進行展示, 如圖 3-4。您需要把源端資料庫的公網連接配接位址填寫到“主機名或者 IP 位址”裡, 這個需要再次強調,這個 IP 位址必須能夠讓 DTS 伺服器通路到,即連通性必須正 常。如果連通性有問題,在“測試連接配接”時會出錯。我們會在“測試連接配接”部分詳細 讨論。這裡有 4 點需要說明:
● 雖然這裡特指的是“自建資料庫”,但是隻要是公網可達的 ( 比如 RDS 的公網 位址 ),都可以使用這個方式進行傳輸。
● 這裡指的 IP 并不是隻可以填寫 IP, 也可以填寫域名 ( 比如 RDS 的公網連接配接字 符串 )。
● 自建 MySQL 資料庫一般都有一個參數 bind_address,這個是指 MySQL 接 受(監聽)來自于哪個 IPV4 或者 IPV6 位址的連接配接,為了避免出現 DTS 無法 連接配接的情況,建議設定成“*”或者“0.0.0.0”。
● 請一定確定,自建資料庫所在主機的防火牆沒有攔截 DTS 伺服器位址的入方
向的通路。伺服器位址我們會在“3.3.2 執行個體地區”讨論。
3.3.1.2 通過專線 /VPN 網關 / 智能接入網關接入的自建資料庫
相比公網的不安全而言。這個方式實作了非“公網”傳輸。但是這裡的非“公 網”傳輸需要借助其他的産品來實作,這些産品是:
高速通道專線、
智能接入網關 VPN 網關。它們最終實作的是把本地自建資料庫和阿裡雲的鍊路打通。通過非“公 網”的方式進行連接配接。最終隻要連通性正常。就可以進行傳輸。如下圖 3-5。這裡有 5 點需要特别說明:
● 雖然它們都可以實作非“公網”方式連接配接。但是實作方式是不一樣的。專線才 是真正意義上的内網傳輸。而智能接入網關和 VPN 網關都是依賴公網實作的。 隻是實作了非“公網”方式連接配接 ( 打通了本地與阿裡雲内網 )。
● 選擇這個方式,需要填寫 VPC ID(“已和源端資料庫聯通的 VPC”)。請注意, 這裡不是随便填寫一個 VPC ID 就可以了。這個 VPC ID 必須進行了高速通道 專線、智能接入網關、VPN 網關的相關配置打通了鍊路才可以。沒有做任何 配置的 VPC ID 即使填寫上也無法聯通 ( 測試連接配接會出錯 )。具體配置方式涉 及各個産品的較多内容,您如果需要可參考具體産品的幫助文檔。
● 雖然這裡特指的是“自建資料庫”,但是隻要是通過這三種方式實作網絡可達 的 ( 比如 VPC 下的 RDS),都可以使用這個方式進行傳輸。 ●“IP 位址”這部分,隻可以填寫 IP 位址。如何填寫域名或者字元會提示“請輸 入合法的 ip 位址”。 ● 配置好高速通道專線、智能接入網關、VPN 網關之後,還需要配置 DTS 與它們 之間路由,配置路由需要參考:
https://help.aliyun.com/document_detail/117525.html?spm=a2c4g.11186623.6.590.2d2f6487R0gxRt3.3.1.3 無公網 IP:Port 的資料庫 ( 通過資料庫網關 DG 接入 )
如下圖 3-6,選擇
這個接入方式,也可以實作非“公網”接入。它的實作方式 是要在源端資料庫所在的主機上安裝一個資料庫網關。這個資料庫網關與智能接入網 關、VPN 網關相似,依賴于公網。但是免去了複雜的配置步驟與較高的成本。這種 接入方式的使用量較少。使用時需要注意如下 1 點:
● 這裡配置時需要選擇“資料庫網關 ID”,這裡不是選擇了 ID 就可以了,還需 要對這個網關進行安裝和添加資料庫。也就是要保證網關“狀态”運作正常。
3.3.1.4 通過雲企業網 CEN 接入的自建資料庫
如下圖 3-7,
雲企業網簡稱 CEN(Cloud Enterprise Network),它不是一種具體 的接入方式,即它并不是專線、VPN 這種連接配接能力。它是一個能力提供者或者平台。 它提供一種組網的能力,可以實作專線、VPN 等的網絡互通與管理。選擇這個接入方 式後,需要選擇“雲企業網執行個體 ID”以及“已和源庫互聯的 VPC 網絡”。這裡特指 “自建資料庫”。但是無論是自建還是雲資料庫,隻要連接配接打通,都可以使用這種方式。
3.3.1.5 ECS 上的自建資料庫
顧名思義,就是指在阿裡雲 ECS 伺服器上搭建的自建資料庫,如下圖 3-8,選 擇這個接入方式非常适合 ECS 伺服器上的資料庫進行遷移。您隻需要選擇對應的 “ECS 執行個體 ID”,填寫相關資料庫資訊即可。此處需要注意 2 點:
● ECS 伺服器有安全組的限制。正常情況下,當選擇完 ECS 的執行個體 ID,填寫 完資料庫的連接配接資訊,然後點選 DTS 源端資料庫的“測試連接配接”後,DTS 會 自動把 DTS 伺服器的 IP 端添加到 ECS 的安全組裡面。如圖 3-9。如果您遇 到連通性問題,請先檢查這一點是否正常。
● 除了安全組,ECS 上部署的作業系統内還有防火牆,請確定防火牆也做了響 應的入方向放行規則。
3.3.1.6 RDS 執行個體
這裡特指您購買的阿裡雲的
RDS 資料庫執行個體,如下圖 3-10,選擇這個接入方式後,隻需要填寫對應的“RDS 執行個體 ID”以及賬密即可。DTS 背景會自動的通過執行個體 ID 查詢對應 RDS 的連接配接位址和端口。并且,DTS 還支援“其他阿裡雲賬号下的 RDS 執行個體”的遷移。您可以在阿裡雲 B 賬号下遷移阿裡雲 A 賬号的 RDS 數
據庫。跨賬号遷移的操作與配置比較複雜,可以參考該雲栖文檔:
https://yq.aliyun.com/articles/353204?spm=a2c4e.11155435.0.0.6ff363b5zVAhec此處注意如下 1 點:
● RDS 資料庫産品有一個安全限制,就是白名單。同“3.3.1.5 ECS 上的自建資料庫”的自動添加安全組行為類似,DTS 也會自動把 DTS 伺服器的位址段添加到 RDS 資料庫的白名單中。添加完後的白名單資訊您無法在雲 RDS白名單頁面看到。
3.3.1.7 雲 MONGODB 執行個體
MONGODB 資料庫執行個體,如下圖 3-11,選擇這個接入方式後,隻需要填寫對應的雲 MONGODB 的執行個體 ID、認正資料庫以及賬密即可。同“3.3.1.6 RDS 執行個體”的自動添加白名單行為一樣,DTS 也會自動把 DTS伺服器的位址段添加到雲 MONGODB 資料庫的白名單中。添加完後的白名單資訊您無法在雲 MONGODB 的白名單頁面看到。
3.3.1.8 PolarDB
PolarDB 資料庫執行個體,如下圖 3-12,選擇這個接入方式後,隻需要填寫對應的雲 PolarDB 的執行個體 ID 以及相關的連接配接資訊即可。同“3.3.1.6 RDS 執行個體”的自動添加白名單行為一樣,DTS 也會自動把 DTS 伺服器的位址段添加到雲 PolarDB 資料庫的白名單中。添加完後的白名單資訊您無法在雲PolarDB 的白名單頁面看到。
3.3.2執行個體地區
圖 3-3 中的“執行個體地區”選擇後也就意味着 DTS 會使用這個地區的伺服器(DTS 在很多地區都部署了伺服器)連接配接源端資料庫進行資料的抽取和傳輸(簡單說 就連接配接資料庫後執行 select 查詢擷取資料)。選擇不同的執行個體類型,在執行個體地區選擇 上有 2 點不同,主要如下:
● 如果執行個體類型選擇的是“有公網 IP 自建的資料庫”,執行個體地區這裡理論上選 擇任何一個都可以(因為公網 IP 任何地方都可達),建議選擇與資料庫所在 地域實體距離相近的地區。比如自建資料庫的機房在北京,則建議選擇華北 2 地區。
● 除“有公網 IP 自建的資料庫”外的其他執行個體類型在選擇執行個體地區時,則需 要按照執行個體所在的地域進行選擇。比如 RDS 執行個體在華東 1,則地域必須 選擇華東 1。這樣的話,DTS 的華東 1 伺服器叢集才可以正常連接配接華東 1 的 RDS。
重點再說明一下執行個體類型部分說明的問題,因為 DTS 的伺服器非常多,為了能 夠讓 DTS 順利的連結上源端的資料庫,假設您源端資料庫做了防火牆 ( 自建 )、安全 組 (ECS)、白名單 (RDS) 等安全設定,您還需要把 DTS 這個地區的所有伺服器(有 的客戶不想放行所有伺服器,這個暫時無法滿足)的位址進行放行。需要放行的 DTS 伺服器的網段點選圖 3-3 的“擷取 DTS IP 段”檢視,如下圖 3-13。
3.3.3端口
圖 3-3 的“端口”部分用來指定需要 DTS 通路的資料庫端口,隻有某些執行個體類型才需要填寫該項目。指定了 IP 隻能說明您的資料庫運作在這台主機上,但是這台主機上可能運作了很多的應用程式。端口就用來說明要通路哪個應用程式。請注意您的網絡防火牆或者安全組 ( 特指 ECS) 配置。對對應端口的通路進行放行。
3.3.4資料庫類型
圖 3-3 的“資料庫類型”部分用來選擇遷移的資料庫類型,目前阿裡雲 DTS 支 持的源端資料庫類型有:Oracle、MySQL、SQLServer、PostgreSQL、Mongodb、 DB2、TIDB。這裡需要正确的選擇源端資料庫的類型,如果您源端是 MySQL 則需 要選擇 MySQL。您選擇什麼樣的資料庫類型意味着 DTS 的應用程式使用哪種資料 庫驅動進行連接配接您的源端資料庫,是以請務必選擇正确。這裡有 3 個注意點:
● 源庫的資料庫類型與目标庫的資料庫類型建議一緻,因為相容性最好。以下 圖 3-14 為例,當選擇執行個體類型為 RDS,執行個體 ID 是一台 MySQL 執行個體時, 目标端資料庫類型或者執行個體類型時會展示出 SQLServer、Postgresql。目 前 DTS 除 了 支 持 MySQL->Oracle、Mysql->Postgresql、MySQL-> MySQL、MySQL-> PolarDB MySQL、MySQL-> AnalyticDB MySQL、 MySQL-> DRDS 外,其他的資料庫類型暫不支援,是以如果此時目标選擇 SQLserver 執行個體,遷移會出現異常。其他的執行個體類型和資料庫類型同理。
● 若源端資料庫為 Sqlsever 時,當開啟增量遷移時,一個 DTS 任務隻允許一 個資料庫進行增量遷移(這取決于其事務日志)。全量遷移支援多個資料庫。
● 若源端資料庫為 PostgreSQL 時,無論是否開啟增量遷移,一個 DTS 任務隻 允許遷移一個資料庫(這取決于其 XLOG)。
3.3.5資料庫賬号
圖 3-3 的“資料庫賬号”指的是您需要 DTS 使用哪個賬号連接配接您的源端的資料 庫。這裡出現問題最多的是 MySQL 資料庫的賬号問題以及 MONGODB 資料庫的 賬号問題。主要有如下 4 點:
● MySQL 的資料庫賬号組成是 user 和 host 兩個元素,即:user@host 這種 格式。這也就意味着,如果 user 相同而 host 不同,這不是相同的賬号。比如 如下 2 個賬戶:alitest@'%' 與 alitest@'10.0.0.1'。 當 您 使 用“alitest” 賬 戶 在 IP 為 10.0.0.1 的用戶端主機通路您的資料庫的時候,鑒權時賬戶用的是 alitest@'10.0.0.1'。當您使用“alitest”賬戶在 IP 為 10.0.0.2 的用戶端主機訪 問您的資料庫的時候,由于“alitest”的 host 隻有 % 和 10.0.0.1。而 10.0.0.1 并不符合,是以鑒權時賬戶用的是 alitest@'%'。了解這點非常重要。
● 是以,我非常建議您建立一個獨立的賬号進行 DTS 的遷移,并且賬号的 host 建議是 '%'。因為 DTS 伺服器的網段非常多,并且沒有規律(請參考圖 3-5)。% 可以有效的避免賬戶連接配接多問題。
● MySQL 遇到最多的資料庫賬号連接配接類問題是這個錯誤 : Access denied for user 'xxxx'@'xxxx' (using password: YES) 這個錯誤在連接配接時産生的原因有 2 個:賬戶錯誤或者密碼錯誤。您如果遇到, 請參考這裡排查:
https://yq.aliyun.com/articles/158321?spm=a2c4e.11155435.0.0.6ff363b5cXNuax● MONGODB 的賬戶連結時,還需要填寫一個“資料庫名稱”項,如下圖 3-15。這個是指 MONGODB 賬戶的
authentication database。 authentication database 是指建立 MONGODB 賬戶的時候所在的資料庫。比如一 個 MONGODB 資料庫為 alitest。我們執行 use alitest 切換到 alitest 資料庫 下,然後執行 db.createUser() 建立一個 test 賬戶,密碼是 123。當我們使 用 test 賬戶登陸 mongodb 的時候,資料庫名稱 (authentication database) 就是 alitest。
3.3.6資料庫密碼
圖 3-3 的“資料庫密碼”指的是使用的“資料庫賬号”的連接配接密碼。資料庫密碼遇到的問題較少。請重點關注“資料庫賬号”章節的相關問題。
3.3.7連接配接方式
當執行個體類型選擇“ECS 上的自建資料庫”,資料庫類型選擇“MySQL”時, DTS 支援連接配接方式的選擇,即支援 SSL 加密的連接配接方式。當勾選“SSL 安全連接配接” 時,需要上傳 SSL 的證數等檔案,如下圖 3-16。其中 CA 根證數是必傳的。另外, DTS 目前隻支援 SSL 加密。請注意如下 2 點:
● 如您要使用 SSL 安全連接配接,請確定您的源端資料庫以及目标端資料庫做了相 應的 SSL 配置,關于如何配置資料庫的 SSL 非本書的重點。不在此贅述。
● 并非所有的執行個體類型以及資料庫類型 DTS 都支援 SSL 通路。
3.3.8測試連接配接
重點中的重點,圖 3-3 的“測試連接配接”點選後,會使用我們配置的這些連接配接信 息去連接配接源端或者目标端的資料庫,針對 ECS、RDS、雲 MONGODB、雲 REDIS 等雲資料庫,還會進行安全組、白名單的檢查和添加操作,檢查對應的雲 ECS 執行個體 和雲資料庫執行個體的安全組、白名單裡是否有 DTS 的安全組或者白名單,沒有則添加。 測試分為 ping、telnet、資料庫協定 ( 比如 MySql JDBC Connect ) 三個層面,測 試結果如下圖 3-17。需要注意如下 4 點:
● 如果測試連接配接失敗。分為 ping 失敗,telnet 失敗以及資料庫協定 ( 比如 MySql JDBC Connect) 失敗。我們隻需要關注 telnet 和資料庫協定即可。因為 ping 現在的測試結果并不能說明問題,可以忽略它的測試結果。
● telnet 如果成功,說明 DTS 可以正常通過您配置的位址與端口通路到對應的應 用程式。如果失敗,則說明 DTS 無法通過您配置的位址與端口通路到您的應用 程式。此時則需要進行網絡防火牆或者安全組的排查或者抓取網絡封包排查。
● 資料庫協定 ( 比如 MySql JDBC Connect ) 如果成功,則說明 DTS 可以通 過您配置的位址、端口、資料庫賬号、資料庫密碼等資訊,成功通路到您的數 據庫。如果失敗,一般會有錯誤提示,對 MySQL 來說,最常見的是 Access denied for user 'xxxx'@'xxxx' (using password: YES), 這 點, 我 們 在 “3.3.5 資料庫賬号”讨論過。其他的連接配接問題,可以參考這個雲栖文檔 :
https://yq.aliyun.com/articles/158321?spm=a2c4e.11155435.0.0.6ff363b5aL5jmA● 有時點選測試連接配接後,會一直轉圈,沒有任何結果。遇到這個情況。可以忽略 測試連接配接,直接點選“授權白名單并進入下一步”。換句話說,測試連接配接并不 是必須要點選的。如果配置的源庫連接配接有問題,我們點選“授權白名單并進入 下一步”跳轉到新頁面時會出錯 ( 因為此時會真正的去源庫取資料庫的對象信 息,如下圖 3-18)。如果配置的目标庫連接配接有問題,我們在“預檢查”時會 出錯 ( 因為預檢查會檢查目标庫連接配接 )。是以測試連接配接一般情況下可點可不點。 大多數情況下不需要執着于這一步。
3.3.9授權白名單并進入下一步
圖 3-3 的“授權白名單并進入下一步”點選後,會和測試連接配接一樣,也會進
行安全組與白名單的檢查和添加,然後會進入資料庫遷移對象選擇頁面,如下圖3-19。這是一個庫級别 ( 資料庫級别的同步,DTS 還支援表級别和列級别同步 ) 同步的任務截圖。這個頁面的左側顯示的是源端資料庫的對象資訊 ( 如圖例裡的 dtstest、mysqltest 資料庫 )。右側顯示的是要遷移到目标資料庫的對象資訊 ( 如 圖例裡的 dtstestdata 資料庫 ),如果您要更改遷移到目标資料庫的對象的名字, 可以把滑鼠放到“dtstestdata”上,然後點選右側的編輯,更改庫名 ( 除了更改庫 名外,表級别同步還支援修改表名以及列名 )。該功能為 DTS 的
庫表列映射,如下 圖 3-20。
3.3.10遷移類型
3.3.10.1結構遷移
圖 3-19 裡的“結構遷移”是指是否遷移源端資料庫的對象結構資訊。這些結構 包括表結構、索引、視圖、存儲過程等。DTS 會通過 Select 的方式,擷取源庫的數 據對象的結構。為什麼要進行結構遷移?什麼時候需要結構遷移?原因分别如下:
● 結構遷移針對的是關系型資料庫,非關系型資料庫不需要 ( 比如 MONGODB),對關系型資料庫來說,資料要存儲,必須先建表。是以 DTS 需要先 進行結構遷移,建立表結構才能進行後面的資料遷移。
● 當目标資料庫裡面沒有對應的表對象時,才需要選擇結構遷移。如果目标資料 庫裡面已經有了對應的資料庫的表對象,不需要選擇結構遷移 ( 比如目标庫已 經有表 A,此時選擇結構遷移,DTS 會在目标庫建立表 A,因為表 A 已經存 在,DTS 建立會出錯,提示 1050 - Table xxxx already exists)。
結構遷移遇到的最常見的問題是 :
● 源端或者目标端的資料庫的資料庫對象非常非常多,因為 DTS 要以 Select 的 方式查詢這些資訊。資料庫對象過多,容易造成查詢逾時,這類問題比較難解決。
如果您遇到這種問題,請回報阿裡雲售後。 如果要檢視 DTS 在源端或者目标端的程序狀态,大多數資料庫都可以在源 端或者目标端的執行資料庫的相關查詢指令,以 MySQL 為例,可以執行 :show processlist 确認會話資訊。
3.3.10.2全量資料遷移
圖 3-19 裡的“全量資料遷移”是指是否遷移源端資料庫的資料 ( 表的記錄 )。 這是真正的資料的遷移,它遷移的是源端資料庫表裡已經存在的資料(這些資料可 能是曆史資料,早已經寫入,也可能剛剛寫入不久的資料,非未來新增的資料),簡 單的說,DTS 會通過 Select 擷取源端資料庫裡的表的資料。然後通過 Insert、 Replace into、Update、Delete 的方式,寫入到目标端。DTS 使用 Select 查詢對 應表的資料,不是一次性全部查詢的。一般是對的資料進行分片 ( 常見的是使用主鍵進行分割 ),然後并行查詢各個分片的資料。DTS 寫入目标端資料也是并行寫入的。 這也就導緻有 2 個問題:
● DTS 遷移完成後,目标資料庫的資料空間大小比源端資料庫的資料空間大小 大,這是因為并行寫入産生資料空洞導緻。如果您遇到這種問題,可以在業務 允許的期間執行 Optimize table xxx 對表的空間進行收縮 (Optimize table 有 産生 MDL 阻塞的可能 , 執行時請評估執行時間和業務影響 )。
● Optimize table 大多數情況下,都能夠成功的對表的空間進行收縮。極少的情況 下無法對表的空間進行收縮。如果遇到無法收縮的情況,可以回報阿裡雲售後。 如果要檢視 DTS 在源端或者目标端的程序狀态,大多數資料庫都可以在源 端或者目标端的執行資料庫的相關查詢指令,以 MySQL 為例,可以執行 :show processlist 确認會話資訊。
3.3.10.3增量資料遷移
圖 3-19 裡的“增量資料遷移”是指 DTS 通過解析源端資料庫的相關資料庫日 志 ( 比 如 MySQL 的 Binlog、SQLserver 的 Transaction Log、MONGODB 的 oplog 等 ),把全量遷移開始之後的增量資料,實時的同步到目标端。即源端有一條 Insert,DTS 會解析這些日志,生成一個同樣的 Insert 發送到目标端,實作增量數 據遷移,增量遷移目前不支援觸發器的遷移。
很多客戶在問,DTS 是如何保證資料完整性的? DTS 通過全量 + 增量的方式 保證資料完整性,但是在如下 2 個情況下,DTS 無法保證資料的完整性:
● 遷移的對象裡,沒有主鍵或者唯一鍵的資料庫對象,無法保證完整性。因為 DTS 是分批次抽取和并發寫入資料,沒有主鍵時會造成資料重複或者資料缺 失的情況。請確定遷移對象有主鍵或者唯一鍵。
● 多對一的相同資料庫對象的資料遷移,無法保證資料完整性。多對一是指多個 源庫通過多個任務,把源端多個資料庫對象的資料遷移到目标庫的同一個資料 庫對象裡。 如果要檢視 DTS 在源端或者目标端的程序狀态,大多數資料庫都可以在源端或者目标端的執行資料庫的相關查詢指令,以 MySQL 為例,可以執行 :show processlist 确認會話資訊。DTS 的增量會在源端的 MySQL 資料庫啟動一個 binlog dump 程序(如果您搭建過 MySQL 主從,MySQL 本身的主從也是會起動一個 binlog dump 程序)。 DTS 的增量資料遷移延遲是無法保證的,正常情況下 DTS 的增量遷移是秒級延 遲,但是當遇到一些 DDL、大量更新時或者 DTS 規格達到瓶頸等情況時,增量資料 遷移延遲會增高。如果您遇到大的延遲(比如超過 1000S),可與阿裡雲售後回報。
3.3.11預檢查并啟動
當遷移對象以及遷移類型配置好後,點選“預檢查并啟動”将會進行下面的檢 查環節,檢查環節順利通過後,會啟動 DTS 任務開始遷移資料。檢查的目的是避免 一些已知的問題導緻 DTS 遷移異常,常見的檢查項目如下圖 3-21。預檢查失敗後, 無法進行下一步,需要您針對出錯的檢查項進行處理,當您處理了預檢查失敗的檢查 項後。可以點選啟動任務(啟動方式為圖 3-1 中任務清單的“啟動任務”按鈕。)重 新啟動預檢查。
3.3.11.1源庫連接配接性檢查
檢查預檢查的 DTS 伺服器是否可以通過遷移任務頁面的相關配置正常連接配接源端 資料庫。需注意如下 2 點:
● DTS 的伺服器有很多,這些伺服器有的部署了預檢查程式,有的部署了“測 試連接配接”程式,有的部署了結構遷移的程式,有的部署了全量遷移的程式,有 的部署了增量遷移的程式。這也就意味着,任何一個環節的連接配接正常都不能保 證下一個或者其他環節連接配接也正常 ( 比如資料庫等防火牆做了限制 )。您可能 會遇到預檢查正常但是後續的結構遷移連接配接異常,也可能遇到結構遷移任務正 常但是後續的全量遷移連接配接異常的情況。這些都是有可能的。
● 遇到連接配接異常的情況,首先要有一個判斷,這個異常是網絡本身 (TCP/IP) 不通還是應用層面的問題。如果是網絡層面的,則需要查防火牆以及鍊路 配置。如果網絡沒問題隻是在應用層出現的異常,則需要查造成這個應用異 常的原因。舉一個例子,前面提到過的這個錯誤 : Access denied for user 'xxxx'@'xxxx' (using password: YES)。這個錯誤意味着,網絡可達,隻是 在對資料庫進行賬密認證的時候出錯了 ( 應用層 )。如果網絡不可達,我們甚 至無法進行資料庫應用層面的這些認證。了解這點非常重要。
3.3.11.2源庫權限檢查
要使 DTS 通過您在建立遷移任務頁面填寫的賬戶資訊擷取源端資料庫的資料, 就需要對這個賬戶進行一寫資料庫對象的授權。不同的資料庫類型以及遷移類型需要 不同的資料庫權限。以 MySQL 為例,結構、全量遷移隻需要 SELECT 權限即可。 而增量遷移則需要 REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW 和 SELECT 權限。
3.3.11.3目的庫連接配接性檢查
檢查預檢查的 DTS 伺服器是否可以通過遷移任務頁面的相關配置正常連接配接目标端資料庫。注意點與“3.3.11.1 源庫連接配接性檢查”相同。
3.3.11.4 目的庫權限檢查
要使 DTS 把從源端擷取到的資料寫入目标端資料庫,也需要對應的寫入權限。 同樣以 MySQL 為例,結構、全量和增量需要 SELECT 和 INSERT、UPDATE、 DELETE、CREATE 等等讀寫的權限。
3.3.11.5 存儲引擎檢查
這個一般是針對 MySQL 資料庫的遷移,因為 MySQL 有很多資料庫引擎。 DTS 不支援 FEDERATED、MRG_MyISAM 或 TokuDB 存儲引擎的遷移。
3.3.11.6 源庫版本檢查
檢查源庫的版本是否符合 DTS 産品的要求,以 MySQL 為例,DTS 隻支援如 下幾個版本:5.1、5.5、5.6、5.7、8.0。其他資料庫類型的版本限制可以參考這裡:
https://help.aliyun.com/document_detail/26618.html?spm=a2c4g.11186623.2.7.3a392a8770k06x#concept-26618-zh3.3.11.7 同名對象存在性檢查
目的是檢查目标資料庫中是否存在和待遷移對象同名的對象。當我們選擇結構遷 移的時候,DTS 會在目标建立對象結構,如果目标資料庫已經有同名的對象結構了, 就會建立失敗。
這點我們在“3.3.10.1 結構遷移”讨論過。
3.3.11.8 資料庫可用性檢查
檢查目标執行個體是否已經有了對應的資料庫,比如我們要把源端 alitest 的資料庫 遷移到目标端。我們需要先在目标端手動建立 alitest 執行個體。避免預檢查失敗,請注 意如下 1 點:
● 很多情況下,DTS 會自動的在目标端建立資料庫,DTS 自動建立資料庫的 前提是賬戶的權限正常。不過也有例外(比如字元集問題,資料庫名稱不合法 等),如果遇到 DTS 無法自動建立資料庫的情況,請手動建立後重新開機預檢查。
3.3.11.9 源庫 binlog 開啟檢查
當遷移類型勾選增量遷移時,才會檢查該項,在“3.3.10.3 增量資料遷移”我們 讨論過,增量遷移是通過一些日志來實作的。這個檢查項是為了檢查資料庫這方面的 日志是否開啟。如果源端是 MySQL 資料庫,則檢查 binlog。
3.3.11.10 源庫 binlog 模式檢查
開啟了相關日志後,要檢查源資料庫的 Binlog 模式是否為 ROW。建議更 改 .cnf 配置檔案,改完配置檔案的參數後,請對源端資料庫進行一次重新開機。
3.3.11.11 源庫 binlog_row_image 是否為 FULL
如果您源端是 MySQL5.6 及以上的 資料庫版本時,開啟增量遷移後,會檢查 binlog_row_image 參數。建議更改 .cnf 配置檔案,改完配置檔案的參數後,請對 源端資料庫進行一次重新開機。
3.3.11.12 源庫 server_id 檢查
如果您源端是 MySQL 資料庫,則開啟增量遷移後,會檢查源端資料庫的 server id 參數。server_id 值需要是大于 2 的整數。請注意如下 1 點:
● 建議更改 .cnf 配置檔案,更改完配置檔案參數後,請對源端資料庫進行一次重新開機
3.3.11.13 源庫 binlog 存在性檢查
這個檢查項目主要檢查 show binary logs 列出來的的檔案是否存儲,檢查這個 的目的是因為很多情況下,我們删除 MySQL 的 binlog 時,是直接從作業系統目錄 remove 掉的,并沒有通過 MySQL 的 purge 進行删除。這也就導緻資料庫裡還存 在着 binlog 檔案的記錄,而作業系統目錄裡已經沒有了。遇到這種情況出現,您可 以通過執行 purge 來清理 MySQL 資料庫記錄的 binlog 檔案。使之與作業系統目錄 的檔案數量和編号對應。
3.3.11.14 MySQL 密碼格式檢查
檢查源庫使用資料庫密碼格式是否為老版。主要檢查資料庫的參數 old_ passwords 是否為 1。如果您的 old_passwords 為 1,建議修改為 0。修改密碼格 式可能會影響業務的正常運作,請謹慎操作。
3.3.11.15 複雜拓撲存在性檢查
DTS 支援的遷移拓撲一般有如下 5 種:一對一、一對多、級聯、多對一、雙向 遷移(非雙向同步),其中雙向遷移是不支援的拓撲結構,如果背景檢測到這種拓撲結 構,會出錯。如果這個檢查項您出現預檢查失敗,一般可以聯系和授權阿裡雲售後跳 過概檢查項(預檢查檢測環節可以手動跳過的前提是雙向遷移的資料對象以及資料不 沖突,避免造成資料混亂)。
3.3.11.16 補充
如果預檢查出現這種錯誤檢查項“unexpected error”,請與阿裡雲售後回報确認。
3.3.12 立即購買并啟動
預檢查通過後,點選下一步,進入購買頁面,如下圖 3-22。選擇規格後,點選 “立即購買并啟動”正式運作 DTS 任務。這裡需要注意如下 3 點:
● 對 DTS 遷移來說,隻進行結構遷移和全量遷移,目前是免費的
● 選擇增量遷移後,才會收費,暫停同樣收費。
● DTS 遷移隻支援後付費(按量計費),不支援包年包月。