什么是數據傳輸服務DTS?
數據傳輸服務(Data Transmission Service,簡稱DTS)是天翼云提供的一種集數據遷移和數據實時同步于一體的數據傳輸服務。DTS作為數據流通的底座,集數據遷移、數據實時同步于一體,適用于幫助用戶實現數據庫不停業務快速穩定地遷移上云、構建數據實時同步通道實現數據庫災備/雙活。DTS具備支持多數據源實時同步和遷移、企業級加密和脫敏等特性,其采用自研的DTS同步引擎,數據同步性能達數據庫原生同步的四倍以上。
什么是區域和可用區?
區域
DTS的區域指DTS服務所在的物理位置。
同一區域內可用區之間內網互通,不同區域之間內網不互通。
公有云在不同地區有數據中心,與此相應,DTS服務可用于不同地區。通過在不同地區開通數據傳輸服務DTS,可以將應用程序設計的更接近特定客戶的要求,或滿足不同地區的法律或其他要求。
可用區
每個區域包含許多不同的稱為“可用區”的位置,即在同一區域下,電力、網絡隔離的物理區域,可用區之間內網互通,不同可用區之間物理隔離。每個可用區都被設計成不受其他可用區故障的影響,并提供低價、低延遲的網絡連接,以連接到同一地區其他可用區。通過使用獨立可用區內的DTS服務,可以保護您的應用程序不受單一位置故障的影響。當前階段,DTS只支持單可用區部署,待轉商后將提供跨可用區部署能力、實現跨可用區容災。
數據傳輸服務DTS是否支持關系型數據庫的HA實例遷移?
對于源數據庫實例為MySQL的情況,DTS支持HA遷移。以下是一些條件和說明:
- GTID:源數據庫實例需要開啟GTID(Global Transaction Identifier)模式。GTID 為全局事務ID,用于保證提交的事務在主從復制中有唯一的ID。
- HA實例的VIP:HA實例需要提供虛擬IP(VIP),以便在故障切換時可以自動切換到備用實例。
在滿足上述條件的情況下,DTS可以實現MySQL數據庫的HA實例遷移。當遷移過程中源數據庫實例短暫斷開連接時,DTS會嘗試自動重連,并從斷開連接前的位點接續之前的遷移任務。從而確保數據的連續性和一致性。
數據傳輸服務DTS對源數據庫有什么要求?
目前數據傳輸服務支持MySQL到MySQL、PostgreSQL到PostgreSQL、SQL Server到SQL Server的數據遷移和數據同步。支持DDS/MongoDB->DDS/MongoDB的數據遷移。對源數據庫的要求如下:
- MySQL到MySQL的數據遷移/數據同步:支持RDS for MySQL或自建 MySQL 5.6部分版本/5.7/8.0,且自建數據庫的源數據庫版本不得高于目標數據庫版本。
- PostgreSQL到PostgreSQL的數據遷移/數據同步:支持RDS for PostgreSQL或自建PostgreSQL 9.4/9.5/9.6/10/11/12/13/14/15,且源數據庫版本不得高于目標數據庫版本。
- DDS/MongoDB到DDS/MongoDB的數據遷移:支持DDS 3.0/4.0(副本集)或自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(副本集),目標庫大版本號建議不低于源庫。
- SQL Server到SQL Server的數據遷移/數據同步:支持RDS for SQL Server 2016 標準版/2016 企業版或自建SQL Server 2016 標準版/2016 企業版,且源數據庫版本不得高于目標數據庫版本。
數據傳輸服務DTS對目標數據庫有什么要求?
目前數據傳輸服務支持MySQL到MySQL、PostgreSQL到PostgreSQL、SQL Server到SQL Server的數據遷移和數據同步,支持DDS/MongoDB->DDS/MongoDB的數據遷移。對目標數據庫的要求如下:
- MySQL到MySQL的數據遷移/數據同步:支持RDS for MYSQL,且自建數據庫的源數據庫版本不得高于目標數據庫版本。
- PostgreSQL到PostgreSQL的數據遷移/數據同步:支持RDS for PostgreSQL,且源數據庫版本不得高于目標數據庫版本。
- DDS/MongoDB到DDS/MongoDB的數據遷移:支持DDS,且目標庫大版本號建議不低于源庫。
- SQL Server到SQL Server的數據遷移/數據同步:支持RDS for SQL Server,且源數據庫版本不得高于目標數據庫版本。
數據傳輸服務是否采用了并發技術?
數據傳輸服務DTS的全量遷移采用了并發技術,包括:
- 多表并發遷移,根據配置支持多張表的數據同時進行遷移。
- 單表寫入目標庫并發,針對每個表的遷移,在寫入目標庫時,啟用多線程并發寫入多批數據,以解決讀寫速度不均衡問題。
數據傳輸服務是否支持公有云和專屬云間的數據庫遷移?
當前支持專屬云的數據遷移至天翼云(入云場景),不支持天翼云數據遷移至專屬云(出云場景)。
數據傳輸服務DTS支持的遷移場景請參見用戶指南-數據遷移-遷移方案概覽,具體操作方法請參見用戶指南-數據遷移-入云。
數據傳輸服務支持將MySQL遷移到PostgreSQL嗎?
暫不支持,目前開放支持的鏈路有:
- 數據遷移:MySQL->MySQL,PostgreSQL->PostgreSQL,DDS/MongoDB->DDS/MongoDB,SQL Server->SQL Server。
- 數據同步:MySQL->MySQL,PostgreSQL->PostgreSQL,SQL Server->SQL Server。
數據傳輸服務DTS是否支持某個時間段的數據遷移?
暫不支持。
數據傳輸服務DTS目前只支持結構遷移、全量遷移、增量遷移幾種遷移類型,具體請參見用戶指南-數據遷移-遷移方案概覽。
數據傳輸服務支持斷點續傳嗎?
支持。
DTS全量遷移支持表級和指定條件下的行級斷點續傳,當任務暫停或任務異常重啟后,已經完成遷移的表不會重復遷移,如果滿足相關條件,默認會從斷點行開始遷移。
DTS增量遷移通過記錄位點的方式支持斷點續傳,當任務暫停或任務異常重啟后,會從上次完成的位點開始增量遷移。
數據遷移和數據同步有什么區別?
數據遷移:主要用于上云遷移,例如將本地數據庫、ECS上的自建數據庫或第三方云數據庫遷移至天翼云數據庫。它屬于一次性任務,遷移完成后即可釋放實例。
數據同步:主要用于兩個數據源之間的數據實時同步,適用于異地多活、數據災備實時數據倉庫等場景。它屬于持續性任務,任務創建后會一直同步數據,保持數據源和數據目標的數據一致性。
數據傳輸服務出現數據膨脹怎么辦?
數據庫在寫操作時,會出現實際寫入磁盤的數據比要遷移的數據量大的現象,即寫放大。這是由于現代數據庫系統中使用的寫時復制和日志等技術所引起的,解決的辦法就是目標數據庫關聯RDS實例必須有足夠的磁盤空間,建議如下:
- 將MySQL遷移/同步到MySQL時,目標庫服務器預留的磁盤空間為源庫數據占用磁盤空間的2.5倍。
- 將PostgreSQL遷移到PostgreSQL時,磁盤大小建議取以下兩種中的最小值:
- 源庫待遷移數據量大小的1.5倍。
- 源庫待遷移數據量大小加200GB。
數據傳輸服務怎樣選擇RDS只讀實例作為源庫來完成數據傳輸?
數據傳輸服務支持選擇天翼云RDS-MySQL只讀實例作為源庫來完成數據傳輸。天翼云RDS-MySQL只讀實例為單個物理節點的架構(沒有備節點),采用MySQL的原生復制功能,主實例和只讀實例之間的數據同步不受網絡延時的影響。
當前DTS提供公網EIP和內網VPC兩種網絡傳輸方式,選擇天翼云RDS-MySQL只讀實例作為源庫時,根據網絡連接方式的不同,操作略有不同:
- 如果是公網EIP傳輸,用戶可以在確保MySQL只讀實例綁定了EIP的前提下,手工輸入只讀實例的EIP/PORT信息,完成源庫的選擇。
- 如果是采用內網VPC傳輸,受限于DTS產品設計約束,用戶默認只能選取只讀實例對應的主實例作為源庫。
具體操作請參見用戶指南-數據遷移-實例配置和實例編輯-配置遷移實例具體步驟部分內容。
他云只讀實例是否可以作為DTS數據傳輸任務的源庫,取決于他云的設計和使用規范。在配置之前,用戶需明確這一點。
數據傳輸服務對源數據庫和目標數據庫有什么影響?
在進行全量遷移時,數據傳輸服務會對源數據庫和目標數據庫產生一定影響。這主要體現在數據庫所在服務器的磁盤IO和網絡帶寬方面。在全量遷移階段,數據傳輸服務需要快速讀取源數據庫中大量的存量數據,并將其傳輸到目標數據庫,這會給源數據庫和目標數據庫的服務器帶來較大的讀/寫IO和網絡帶寬壓力。因此,建議在業務低峰期進行全量遷移,以確保業務正常運行。如果必須在正常業務期間進行全量遷移,可以通過限制傳輸速率的方式,以保障業務的使用體驗。
對于增量遷移,它通過讀取源數據庫的增量日志來捕捉數據變化。增量遷移對源數據庫的影響較小,而對目標數據庫的影響則取決于增量數據的產生速率和傳輸速率。通常情況下,增量遷移對目標數據庫的影響較小。
數據傳輸服務需要源數據庫停止業務嗎?
不需要。
DTS通過全量遷移+增量遷移結合的方式提供熱遷移功能,最大程度保證了業務的連續性,對業務影響最小化。數據傳輸的過程中,源數據庫不需要停止業務,但需注意全量和增量不同階段對數據庫產生的影響。
影響DTS任務速度的因素以及如何預估任務耗時?
遷移速度的影響因素
- 源庫的讀取吞吐能力越高,遷移速度越快,耗時越少。
- 目標庫的寫入吞吐能力越高,遷移速度越快,耗時越少。
- 可用的網絡帶寬越高,遷移速度越快,耗時越少。
- 網絡延遲越小、網絡質量越好,遷移速度越快,耗時越少。
- DTS實例規格越大,遷移速度越快,耗時越少。
- 源庫增量數據產生的速度越快,DTS任務追平增量數據的耗時越長。
- 按表拆分為多個DTS任務,可以提升總體的遷移性能。
遷移時間的評估
影響遷移速度的因素有很多,因此沒有通用方式能夠評估遷移時間。
DTS任務是否可以修改遷移/同步對象?
數據遷移任務:已創建成功但未啟動的狀態下,可以修改遷移對象,任務啟動后,不再支持修改對象。具體操作請參見遷移對象管理。
數據同步任務:已創建成功但未啟動的狀態下,可以修改同步對象,任務啟動后,不再支持修改對象。具體操作請參見同步對象管理。
DTS是否支持同步同一實例下的不同庫?
DTS實時同步任務具有對象名映射功能,通過修改目標數據庫對象名稱,使數據庫對象在源數據庫和目標數據庫中的命名不同,從而實現同一實例不同庫之間的同步。
修改數據同步對象的操作請參見同步對象管理章節的對象名映射部分的內容。
DTS的任務狀態會受到源或目標數據庫哪些操作的影響?
以天翼云關系數據庫MySQL版舉例說明,以下操作可能會影響DTS任務狀態:
- 數據庫實例異常:DTS會自動重試建立連接。若重試不成功,待數據庫實例正常后,可重啟任務,繼續遷移。
- 數據庫實例升級:數據庫內核升級會重啟實例導致DTS連接短暫中斷。在此期間,DTS會自動重試。若重試仍無法恢復連接,待數據庫實例狀態正常后,可重啟任務,繼續遷移。
- 數據庫實例重啟:重啟數據庫實例將導致DTS連接暫時中斷,在此期間,DTS會自動重試。若重試仍無法恢復連接,待數據庫實例狀態正常后,可重啟任務,繼續遷移。
- 數據庫實例規格變更:規格變更會重啟數據庫導致DTS連接暫時中斷,在此期間,DTS會自動重試。若重試仍無法恢復連接,待數據庫實例狀態正常后,可重啟任務,繼續遷移。
- 會話連接數限制:DTS任務需要一定數量的源和目標端會話數,當數據庫連接數不足時,可能會導致DTS任務失敗,用戶可在調整數據庫連接數后,可重啟任務,繼續遷移。
- 數據庫實例用戶密碼修改:修改數據庫用戶密碼可能會導致DTS連接失敗,可在暫停任務后編輯任務的數據庫密碼為正確密碼,重啟任務,繼續遷移。
- 數據庫實例用戶權限修改:修改數據庫用戶權限可能會導致DTS權限不足,導致任務失敗。重新為遷移用戶賦權后,重啟任務,繼續遷移。
- 源庫日志清理:當源庫binlog日志被清理時,DTS無法從源庫獲取到當前同步位點后的日志,導致任務失敗(例如增量階段失敗)。用戶可以重新創建同步任務在新的日志位點上進行同步。
- 數據庫參數修改:DTS任務在啟動前的預檢查階段會對源數據庫和目標數據庫的必要參數進行檢查,在預檢查完成后到任務結束前,不建議對數據庫參數進行修改,避免因為修改參數導致任務失敗。如果參數修改導致任務失敗,用戶可以嘗試在恢復參數后,重啟任務,繼續遷移。
- 網絡抖動:網絡抖動造成DTS無法連接數據庫,DTS會自動重試建立連接,若重試不成功,DTS任務狀態會變為異常。待網絡正常后,可重啟任務,繼續遷移。