「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗

「YashanDB遷移體驗官」Mysql生產環境遷移至YashanDB數據庫深度體驗

  • 1. 前言
    • 1.1 產品介紹
    • 1.2 產品架構
    • 1.3 產品規格
      • 1.3.1 數據庫版本支持
      • 1.3.2 數據類型支持
  • 2. YMP安裝
    • 2.1 環境說明
    • 2.2 執行安裝
    • 2.3 訪問YMP
      • 2.3.1 YMP登錄界面
      • 2.3.2 YMP遷移流程
  • 3. YMP數據遷移
    • 3.1 創建數據源
    • 3.2 創建任務
    • 3.3 遷移評估
    • 3.4 遷移配置
    • 3.5 離線遷移
    • 3.6 校驗初始化
    • 3.7 一致性校驗
  • 4. YMP遷移問題記錄
    • 4.1 YMP使用注意點
      • 4.1.1 多個遷移任務中不能有同名的schema
      • 4.1.2 遷移評估需要完全兼容才能進行下一步
      • 4.1.3 遷移評估不兼容的對象僅支持在線修改
      • 4.1.5 YMP內置庫版本必須大于或等于目標端數據庫版本
      • 4.1.6 數據遷移失敗不支持手動修復狀態
    • 4.2 YMP遷移兼容問題
      • 4.2.1 auto_increment替換問題
      • 4.2.2 varchar字符類型單位問題
      • 4.2.3 數據庫保留字問題
      • 4.2.4 字面量查詢問題
      • 4.2.5 索引鍵長度超過上限
      • 4.2.6 純數字的字段名轉換報錯
      • 4.2.7 GIS數據類型暫不支持轉換
      • 4.2.8 空格字符遷移遇到NULL問題
      • 4.2.9 字段重復索引問題
  • 5.遷移小結

1. 前言

作為崖山數據庫產品發布的第一批體驗體驗官,有幸被邀請參與崖山遷移平臺(YashanDB Migration Platform,YMP)產品的體驗活動,所以有了今天的這篇文章。

本次遷移計劃將Mysql數據遷移到YashanDB數據庫中,并在遷移過程中遇到的問題及其對產品的體驗輸出自己的使用感受和產品建議,也希望國產數據庫能做得越來越棒!

1.1 產品介紹

崖山遷移平臺(YashanDB Migration Platform,下文以YMP代稱)是YashanDB提供的數據庫遷移產品,支持異構RDBMS與YashanDB之間進行遷移評估、離線遷移、數據校驗的能力。 YMP提供可視化服務,用戶只需通過簡單的界面操作,即可完成從評估到遷移整個流程的執行與監控,實現低門檻、低成本、高效率的異構數據庫遷移。

YMP是一款具備【精準評估】、【SQL自動轉換】、【評估遷移無縫對接】、【對象一鍵遷移】、【數據高i性能遷移】、【數據校驗】、【一站式服務】這7個核心特性的工具,能夠解決遷移兼容性與工作量評估、異構數據庫元數據遷移以及數據快速遷移的問題。

1.2 產品架構

YMP的總體架構如下:
image.png

1.3 產品規格

1.3.1 數據庫版本支持

image.png

1.3.2 數據類型支持

image.png

2. YMP安裝

YMP工具官方提供的部署文檔如下:
https://doc.yashandb.com/ymp/23.2/zh/%E5%AE%89%E8%A3%85%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E4%B8%8E%E5%8D%B8%E8%BD%BD.html

YMP工具部署的步驟簡單,需要關注的是YMP工具的業務存儲庫選擇問題。
目前YMP支持默認內置庫和自定義內置庫兩種接入方式:
默認內置庫:安裝YMP工具時默認安裝YashanDB作為內置庫;
自定義內置庫:使用外部的YashanDB數據庫作為YMP的業務庫使用。

2.1 環境說明

類型系統版本數據庫數據庫版本地址遷移數據量
源端rhel7.6Mysql5.7.44xx.xx.xx.xx115.1G
目標端rhel7.6YashanDB23.2.1.100xx.xx.xx.xx
YMP工具rhel7.623.2.1.0xx.xx.xx.xx

2.2 執行安裝

下載連接:https://download.yashandb.com/download
上傳軟件包Yashan Migration Platform 23.2.1(Linux X86)到/tmp下邊

## 1. 創建安裝用戶
useradd ymp
echo "ymp" | passwd --stdin ymp## 2. 創建安裝目錄并解壓安裝包
$ mkdir -p /home/ymp/soft
$ unzip /tmp/yashan-migrate-platform-v23.2.1.2-linux-x86-64.zip -d /home/ymp/soft
$ cd /home/ymp/soft/yashan-migrate-platform## 3. 安裝參數調整
### 3.1 配置內置庫的密碼和端口(注意不要與本機的其他端口重疊)
$ cat /home/ymp/soft/yashan-migrate-platform/conf/db.properties
YASDB_PASSWORD=ymppw602.
YASDB_PORT=8091
YASDB_CHARACTER_SET=UTF8### 3.2 配置YMP配置文件,注意服務端口不要重疊,內置庫連接信息注意填寫正確
### 注意:這里只列出YMP服務端口和內置庫連接信息配置,其他優化項根據實際情況進行調整
$ cat /home/ymp/soft/yashan-migrate-platform/conf/application.properties
server.port=8080
spring.datasource.url=jdbc:yasdb://127.0.0.1:8091/yashan
spring.datasource.username=YMP_DEFAULT
spring.datasource.password=ymppw602.
spring.datasource.largePoolSize=64M
spring.datasource.cursorPoolSize=64M
...### 4. 執行安裝
$ cd /home/ymp/soft/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz### 5. 檢查安裝情況
$ cd /home/ymp/soft/yashan-migrate-platform/
$ sh bin/ymp.sh status

2.3 訪問YMP

瀏覽器訪問:http://xx.xx.xx.xx/#/login,初始化用戶名密碼:admin/admin

2.3.1 YMP登錄界面

image.png

2.3.2 YMP遷移流程

YMP遷移流程如下圖所示,主要包含創建任務、遷移評估、遷移配置、離線遷移、數據初始化和一致性校驗這6個流程。

image.png

3. YMP數據遷移

注: 由于本次遷移采用的是正式環境數據,所以下列內容關于正式數據的用戶名和表名等都做了打碼和脫敏。

3.1 創建數據源

1715701534481.jpg

3.2 創建任務

image.png

3.3 遷移評估

image.png

3.4 遷移配置

image.png

3.5 離線遷移

image.png

3.6 校驗初始化

image.png

3.7 一致性校驗

image.png

4. YMP遷移問題記錄

本章記錄YMP實際遷移中遇到的問題,部分問題由于數據保密要求不做展示,故提供問題復現測試用例供參考。

4.1 YMP使用注意點

4.1.1 多個遷移任務中不能有同名的schema

問題現象: 新建遷移任務提示被XX遷移任務評估占用。

image.png

原因分析: 新建的遷移任務與YMP平臺現有的遷移任務中存在同名的schema。

## 登錄YMP內置庫查詢用戶情況,發現新建的遷移任務中遷移的schema名與內置庫中的schema重疊了
$ yasql sys/ymppw602.@xx.xx.xx.xx:8091
SQL> select username, created from dba_users order by 2;

解決方案: 刪除原有的已經完成的遷移任務,再新建新的遷移任務。

4.1.2 遷移評估需要完全兼容才能進行下一步

問題現象:【遷移評估】流程執行后,存在部分不兼容對象,無法進行下一步操作。

image.png

原因分析: YMP設定的邏輯是兼容達到100%,才能進行下一步操作。

解決方案: 根據實際情況進行不兼容對象處理,可以在線改造SQL或者忽略該不兼容對象后,完成后執行【刷新報告】,兼容度達到100%后可以進行下一步操作。

4.1.3 遷移評估不兼容的對象僅支持在線修改

問題現象: 不兼容SQL提示表不存在,改造SQL后在YMP內置庫執行創建表操作,【刷新報告】之后還是提示表不存在。

image.png

image.png

image.png

原因分析: 【遷移評估】中不兼容的對象,不支持直接在內置庫中進行直接修改后跳過不兼容錯誤。在“刷新報告”之后,手動新增的內置庫內容會自動被刪除掉。

解決方案: YMP平臺上在線更新不兼容對象的SQL語句后,執行【驗證并保存】操作。

image.png

4.1.5 YMP內置庫版本必須大于或等于目標端數據庫版本

image.png

4.1.6 數據遷移失敗不支持手動修復狀態

問題現象: 【離線遷移】流程中針對部分數據遷移失敗的數據,無法手動修復狀態。

image.png

原因分析: YMP暫不支持手動修復數據遷移失敗的狀態。

解決方案: 查看遷移失敗問題詳情后,在內置庫處理對應失敗問題,執行【遷移重試】后完成遷移。

image.png
image.png
image.png
image.png

4.2 YMP遷移兼容問題

4.2.1 auto_increment替換問題

問題現象: YashanDB建表語句中使用auto_increment關鍵字執行失敗。
image.png

原因分析: YashanDB不支持auto_increment自增語法。

解決方案: YashanDB創建SEQUENCE的方式來兼容MYSQL的auto_increment語法。

問題復現:

## Mysql源端建表:
mysql> CREATE TABLE `T1` (`id` bigint(20) NOT NULL AUTO_INCREMENT);## YashanDB目標端建表:
SQL> CREATE TABLE T1 ("ID" bigint NOT NULL AUTO_INCREMENT);
[1:39]YAS-04209 unexpected word AUTO_INCREMENT## YashanDB目標端改造兼容
SQL> CREATE SEQUENCE T1_ID_SEQ;
SQL> CREATE TABLE T1 ("ID" bigint NOT NULL DEFAULT T1_ID_SEQ.NEXTVAL);

4.2.2 varchar字符類型單位問題

問題現象: YMP工具遷移過程中出現字符長度超出。
image.png

原因分析: YashanDB的varchar數據類型單位默認是byte

解決方案: 使用varchar(N char)的方式來兼容MYSQL varchar語法。

問題復現:

## Mysql源端建表和插數據:
mysql> CREATE TABLE `T2`(`record` varchar(2));
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO T2 VALUES ('記錄');
Query OK, 1 row affected (0.02 sec)## YashanDB目標端建表和插數據:
SQL> CREATE TABLE T2 (RECORD VARCHAR(2));
Succeed.
SQL> INSERT INTO T2 VALUES('記錄');
YAS-04008 RECORD size exceeding limit 2## YashanDB目標端改造:
SQL> ALTER TABLE T2 MODIFY RECORD VARCHAR(2 CHAR);
SQL> INSERT INTO T3 VALUES('記錄');
1 row affected.

4.2.3 數據庫保留字問題

問題現象: 不兼容SQL改造過程中,執行建表語句遇到關鍵字沖突問題。
image.png

原因分析: 建表過程中有個字段名為LEVEL,是YashanDB的保留字,所以報錯了。

解決方案: 將該字段名用雙引號引起來可以規避。

問題復現:

-- YashanDB目標端創建表:
SQL> create table t4 (LEVEL varchar(10));
[1:18]YAS-04110 invalid variant name-- YashanDB目標端改造:
SQL> create table t4 ("LEVEL" varchar(10));
Succeed.

4.2.4 字面量查詢問題

問題現象: YMP遷移過程中不兼容語句提示“implict table"報錯。
image.png

原因分析: MYSQL數據庫支持簡寫的字面量查詢方式,YashanDB數據庫需要使用DUAL偽表做查詢。

解決方案: 使用DUAL做偽表即可規避。
image.png

4.2.5 索引鍵長度超過上限

問題現象: YMP遷移評估不兼容對象提示索引字符長度超出。
image.png

原因分析: 查看組合索引的3個字段長度,(500CHAR+500CHAR+500CHAR)*4=6000bytes,剛好等于6000bytes的上限。

解決方案: 根據實際情況調整組合索引字段長度。

image.png

SQL> alter table table_name modify column_name varchar (N CHAR);

image.png

4.2.6 純數字的字段名轉換報錯

問題現象: YMP元數據遷移過程中出現純數字的字段名無法設置非空約束報錯。
image.png

原因分析: YMP針對這種特殊字段名無法直接做轉換。

解決方案: 將純數字的字段名加上雙引號后,執行【驗證并保存】可規避。
image.png

4.2.7 GIS數據類型暫不支持轉換

問題現象: YMP元數據遷移過程中空間數據類型的表無法正常轉換。
image.png

原因分析: YMP暫不支持自動轉換空間數據類型。

解決方案: YashanDB具備GIS能力,可以用ST_GEOMETRY類型進行兼容。
image.png

4.2.8 空格字符遷移遇到NULL問題

問題現象: YashanDB數據庫非空約束插入空字符會出現報錯。
image.png

原因分析: Mysql非空約束允許插入空字符,但是YashanDB不支持,因此會出現報錯。

解決方案: 先刪除表的非空約束,把數據導入完成。

image.png

4.2.9 字段重復索引問題

問題現象: YMP元數據遷移過程中提示字段重復索引問題。
image.png

原因分析: MYSQL支持在主鍵索引列再創建普通索引。YashanDB不支持該功能。

解決方案: 暫時先忽略該索引,觀察遷移到YashanDB后的SQL執行計劃和效率,再根據實際情況創建索引。

5.遷移小結

  1. YMP遷移工具部署簡單,操作界面簡潔美觀,操作流程清晰明了,小白也可以輕松上手;
  2. 遷移過程透明化,從評估到遷移整個流程都提供了詳細的報告供下載;
  3. 產品功能上還存在優化空間,地理空間類型遷移能力也較薄弱;
  4. YMP目前僅支持全量遷移,暫不支持在線遷移或實時同步等功能;
  5. 總體而言,YMP的遷移體驗還是蠻不錯的。優秀的產品總是在各式各樣的應用場景不斷迭代后誕生,希望YMP產品能夠不斷優化迭代,做的越來越好!YashanDB加油!國產數據庫加油!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13679.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13679.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13679.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

離線模式下載安裝gcc-4.8.5

目錄 一,下載gcc離線安裝包 二,下載gcc依賴包 三,安裝gcc 1, 解壓 2, 將依賴庫放置環境 3, 安裝 3.1自動安裝 3.1.1 執行依賴庫的編譯 3.1.2 新建編譯目錄 3.1.3 配置編譯環境 3.1.4 編譯 3.1.5 安裝 3.2 手動安裝 3.2.1 安裝GMP-4.3.2 3.2.2 安裝mpf…

【pytorch】 Win11下cuda,cudnn以及pytorch環境安裝

Win11下cuda,cudnn以及pytorch環境安裝 CUDA環境安裝1. 查看CUDA版本1.1 打開NVIDIA控制面板,可以點右下角的NVIDIA設置1.2 點擊系統信息,選擇組件查看CUDA版本 2. 下載對應的CUDA版本3. 安裝3.1 啟動exe文件安裝 4. 驗證安裝結果 CUDNN 環境…

【MySQL精通之路】InnoDB-啟動選項和系統變量

系統變量可以在服務器啟動時設置TRUE或FALSE啟用禁用,也可以通過使用--skip前綴來禁用 例如: 要啟用或禁用InnoDB自適應哈希索引,可以在命令行中使用--skip-innodb-adaptive-hash-index或--innodb-adaptive-hash-index,或者在配置…

JavaSE : 注解 Annotation

注解 Java中的注解(Annotation)是一種元數據形式,用于向編譯器或JVM提供有關程序元素(如類、方法、變量、參數和包)的附加信息。注解不會直接影響程序的行為或結構,但它們可以被編譯器、開發工具或運行時環…

Apache CXF Aegis databinding SSRF 高危漏洞修復

一、漏洞修復 Apache CXF Aegis databinding SSRF漏洞 Spring Web UriComponentsBuilder URL解析不當漏洞 二、修復步驟 1、Apache CXF Aegis databinding SSRF漏洞修復 步驟: 進入服務器搜索 databinding find -name *databinding* 發現版本是3.1.6 果斷…

數據結構~~帶環鏈表的環開始的節點位置**兩種方法

1.帶環鏈表環開始的位置 (1)上面的這個測試用例使用的是包含了4個節點的帶環鏈表,我們要找的就是鏈表里面的環開始的節點的位置,拿這個測試用例而言,就是2這個節點,從這個節點開始,我們的鏈表就…

【第16章】MyBatis-Spring之SqlSession

文章目錄 前言一、SqlSessionTemplate1. 創建2. 使用3. 批量操作3.1 創建SqlSessionTemplate3.2 service3.3 controller 二、SqlSessionDaoSupport總結 前言 在 MyBatis 中,你可以使用 SqlSessionFactory 來創建 SqlSession。 一旦你獲得一個 session 之后&#xf…

源碼部署EFK

目錄 資源列表 基礎環境 關閉防護墻 關閉內核安全機制 修改主機名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 單節點 集群(3臺節點集群為例) 啟動 二、部署filebeat 部署filebeat 添加配置文件 啟動 三、部署kiban…

單點登錄【demo】

前言 2023-07-29 15:44:56 公開發布于 2024-5-22 00:04:56 單點登錄【demo】 以下是 Java 實現單點登錄的示例代碼: 單點登錄(Single Sign-On,SSO)是一種身份認證和授權機制,可以使用戶在多個應用程序或系統之間使…

SQL常用基礎語句(一)-- FGHIJ開頭

GROUP BY GROUP BY語法可以根據給定數據列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。在GROUP BY子句后面包含了一個HAVING子句,HAVING類似于WHERE,(唯一的差別是WHERE過濾行,HAVING過濾組&#xff0…

【C/C++筆試練習】TCP、IP廣播、ARP協議、IP路由器、MAC協議、三次握手、TCP/IP、子網劃分年、會抽獎、抄送列表

文章目錄 C/C筆試練習選擇部分(1)TCP(2)IP廣播(3)ARP協議(4)IP路由器(5)MAC協議(6)三次握手(7)TCP/IP&#xf…

PHP在線制作表白網源碼

PHP在線制作表白網源碼,送女友個驚喜吧,無數據庫,上傳就能用,后臺/admin,賬號密碼都是admin 百度網盤:https://pan.baidu.com/s/1rbD2_8IsP9UPLK-cdgEXfA?pwdre59

AWS安全性身份和合規性之Secrets Manager

AWS Secrets Manager是一項AWS托管的服務,用于安全地存儲、管理和輪轉敏感信息,如數據庫密碼、API密鑰、OAuth令牌等。AWS Secrets Manager助您在整個生命周期內輕松管理、檢索和輪換數據庫憑證、API密鑰和其他密鑰。 關鍵詞:集中管理、加密…

sql使用加和進行合并去重并提升速率

背景 有三張表ltd1 、ltd0051和、ltd0011ltd1作為主表,左關聯 ltd0051和ltd0011如果ltd0051有兩條重復數據、td0011有兩條重復數據,左關聯之后就會得到4條,同時ltd0051和ltd0011這兩條數據都是正確,基于主鍵我們需要將兩個相同主鍵…

【全開源】AJAX家政上門服務系統小程序自營+多商家(高級授權)+獨立端

基于FastAdmin和原生微信小程序開發的一款同城預約、上門服務、到店核銷家政系統,用戶端、服務端(高級授權)、門店端(高級授權)各端相互依賴又相互獨立,支持選擇項目、選擇服務人員、選擇門店多種下單方式,支持上門服務和到店核銷兩種服務方式…

深入理解數倉開發(一)數據技術篇之日志采集

前言 今天開始重新回顧電商數倉項目,結合《阿里巴巴大數據之路》和尚硅谷的《劍指大數據——企業級電商數據倉庫項目實戰 精華版》來進行第二次深入理解學習。之前第一次學習數倉,雖然盡量放慢速度力求深入理解,但是不可能一遍掌握&#xff0…

我在去哪兒薅到了5塊錢火車票代金券,速薅

哈哈,親愛的薅羊毛小伙伴們! 剛剛在去哪兒大佬那兒發現了一個超級薅羊毛福利!我只花了短短兩分鐘,就搞到了一張5塊錢火車票代金券,簡直是天上掉餡餅的節奏啊! 話不多說,薅羊毛的姿勢給你們擺好…

代碼隨想錄算法訓練營第十六天(py)| 二叉樹 | 104.二叉樹的最大深度、111.二叉樹的最小深度、222.完全二叉樹的節點個數

104.二叉樹的最大深度 給定一個二叉樹 root ,返回其最大深度。 二叉樹的 最大深度 是指從根節點到最遠葉子節點的最長路徑上的節點數。 思路1 迭代法 層序遍歷 層序遍歷的思路很簡單,其結果本來就是按層數記錄的,只需返回結果的長度皆可。…

【C語言回顧】聯合和枚舉

前言1. 聯合體1.1 聯合體的聲明1.2 聯合體的特點1.3 聯合體的使用 2. 枚舉2.1 枚舉的聲明2.2 枚舉的特點2.3 枚舉的使用 結語 #include<GUIQU.h> int main { 上期回顧: 【C語言回顧】結構體 個人主頁&#xff1a;C_GUIQU 專欄&#xff1a;【C語言學習】 return 一鍵三連;…

解決法律條文的錄入前判斷發條沖突的需求;怎么選擇NLPModel?怎么使用模型?

要在NLPModel類中實現法律條文的沖突檢測功能&#xff0c;可以使用BERT模型來計算句子相似度。以下是詳細的步驟&#xff0c;包括如何選擇模型、訓練模型以及使用模型。 選擇NLP模型 根據你的需求&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Tra…