使用技巧(需要人為配合)
如果您使用的是全量遷移模式(離線遷移),確保源和目標數據庫無業務寫入,保證遷移前后數據一致。
如果您使用的是全量+增量遷移模式(在線遷移),支持在源數據庫有業務數據寫入的情況下進行遷移,推薦提前2-3天啟動任務,并配合如下使用技巧和對應場景的操作要求,以確保順利遷移。
全量遷移
基于以下原因,建議您結合定時啟動功能,選擇業務低峰期開始運行遷移任務,相對靜態的數據,遷移時復雜度將會降低。
全量遷移會對源數據庫有一定的訪問壓力。
遷移無主鍵表時,為了確保數據一致性,會存在3s以內的單表級鎖定。
正在遷移的數據被其他事務長時間鎖死,可能導致讀數據超時。
由于MySQL固有特點限制,CPU資源緊張時,存儲引擎為Tokudb的表,讀取速度可能下降至10%。
數據對比
建議您結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
操作要求
針對一些無法預知或人為因素及環境突變導致遷移失敗的情況,數據庫復制服務提供以下常見的操作限制,供您在遷移過程中參考。
類型名稱
操作限制(需要人為配合)
注意事項
環境要求均不允許在遷移過程中修改,直至遷移結束。
若專屬計算集群不支持4vCPU/8G或以上規格實例,則無法創建遷移任務。
數據類型不兼容時,可能引起遷移失敗。
操作須知
遷移過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
遷移過程中,不允許對源庫需要遷移的表結構進行修改。
增量遷移場景下,不支持源數據庫進行恢復操作。
選擇表級對象遷移時,增量遷移過程中不建議對表進行重命名操作。
在任務啟動、任務全量遷移階段,不建議對源數據庫做刪除類型的DDL操作,這樣可能會引起任務遷移失敗。
建議將expire_log_day參數設置在合理的范圍,確保恢復時斷點處的binlog尚未過期,以保證服務中斷后的順利恢復。
如果源數據庫為自建庫,并且安裝了Percona Server for MySQL 5.6.x或Percona ? Server for MySQL 5.7.x時,內存管理器必須使用Jemalloc庫,以避免因系統表頻繁查詢帶來的內存回收不及時,并最終導致數據庫Out of Memory問題。
類型名稱
使用限制(DRS自動檢查)
數據庫權限設置
全量遷移最小權限要求:
源物理分片數據庫帳戶需要具備如下權限:SELECT、SHOW VIEW、EVENT。
目標中間件帳戶需要具備以下基本權限:CREATE、DROP、ALTER、 ? ? ? ? INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同時必須具備擴展權限:全表Select權限。
目標中間件帳戶必須具備對所遷移數據庫的權限。
全量+增量遷移最小權限要求:
源物理分片數據庫帳戶需要具備如下權限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
目標中間件帳戶需要具備以下基本權限:CREATE、DROP、ALTER、 ? ? ? ? INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同時必須具備擴展權限::全表Select權限。
目標中間件帳戶必須具備對所遷移數據庫的權限。
遷移對象約束
目前只支持遷移源庫的數據,不支持遷移源庫表結構及其他數據庫對象。
用戶需要在目標庫根據源端邏輯庫的表結構,自行在目標庫創建對應的表結構及索引。未在目標庫創建的對象,視為用戶不選擇這個對象進行遷移。
源庫在目標庫創建的表結構, 必須與源庫的表結構完全一致。
源庫為DRDS時,則不允許存在拆分鍵為timestamp類型的表。
不支持非MyISAM和非InnoDB表的遷移。
源數據庫要求
增量遷移時,MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
增量遷移時,在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為3天。
源數據庫expire_logs_days參數值為0,可能會導致遷移失敗。
增量遷移時,必須設置MySQL源數據庫的server-id。如果源數據庫版本小于或等于MySQL5.6,server-id的取值范圍在2-4294967296之間;如果源數據庫版本大于或等于MySQL5.7,server-id的取值范圍在1-4294967296之間。
源分庫分表中間件中的庫名、表名不能包含:'<>/\以及非ASCII字符。
MySQL源數據庫建議開啟skip-name-resolve,減少連接超時的可能性。
源數據庫GTID狀態建議為開啟狀態。
目標數據庫要求
目標庫若已存在數據,DRS在增量遷移過程中源庫相同主鍵的數據將覆蓋目標庫已存在的數據,因此在遷移前需要用戶自行判斷數據是否需要清除,建議用戶在遷移前自行清空目標庫。
目標實例及關聯RDS實例的運行狀態必須正常,若關聯RDS實例是主備實例,復制狀態也必須正常。
目標庫關聯RDS實例必須有足夠的磁盤空間。
目標庫關聯RDS數據庫的字符集必須與源數據庫一致。
目標庫實例若選擇將時間戳類型(TIMESTAMP,DATETIME)的列作為分片鍵,則源庫數據在遷移到目標庫之后,作為分片鍵的該時間戳類型列的秒精度將被丟棄。
目標數據庫存在表的AUTO_INCREMENT值至少不能小于源庫表的AUTO_INCREMENT值。