MySQL5.6遷移到DM8的實(shí)現(xiàn)示例
注意: MySQL 5.7 與 MySQL 8.0 的語(yǔ)法有所區(qū)別,本文檔是將MySQL5.6遷移到DM8。
遷移前準(zhǔn)備
源庫(kù)
數(shù)據(jù)庫(kù)信息
統(tǒng)計(jì)源端業(yè)務(wù)庫(kù)要遷移的數(shù)據(jù)量、字符編碼、歸檔保留等信息。
內(nèi)容 | 說(shuō)明 | 備注 |
數(shù)據(jù)庫(kù)架構(gòu) | 單機(jī) | |
節(jié)點(diǎn)數(shù) | 1 | |
數(shù)據(jù)庫(kù)版本 | MySQL 5.6.45 | select version(); |
待遷移庫(kù) | xzkptest | |
IP 地址/端口 | 192.168.3.218/3306 | |
服務(wù)器運(yùn)維用戶名(密碼) | root:xxxxx | |
數(shù)據(jù)庫(kù)用戶名(密碼) | root:xxxxx | |
字符集編碼 | UTF-8 | show variables like '%character%'; |
大小寫敏感 | 不敏感 | 默認(rèn)是不區(qū)分大小寫 SHOW VARIABLES LIKE 'lower_case_%'; |
是否以字節(jié)為單位 | 否 | varchar類型是以字符為單位進(jìn)行存儲(chǔ) |
歸檔保留策略 | / |
遷移對(duì)象統(tǒng)計(jì)
遷移前統(tǒng)計(jì)出需要遷移的庫(kù)中的對(duì)象,提前了解遷移數(shù)據(jù)量、遷移數(shù)據(jù)對(duì)象、遷移數(shù)據(jù)類型為考慮遷移時(shí)長(zhǎng)、停機(jī)窗口提供依據(jù),統(tǒng)計(jì)庫(kù)中的對(duì)象方法如下:
統(tǒng)計(jì)指定庫(kù)中表的數(shù)目
SELECT COUNT(*) TABLES, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'xzkptest' GROUP BY TABLE_SCHEMA; 參數(shù)說(shuō)明: TABLE_SCHEMA:數(shù)據(jù)庫(kù)名稱
輸出如下:
統(tǒng)計(jì)指定庫(kù)中視圖的數(shù)目
SELECT TABLE_SCHEMA,COUNT(*) VIEWS FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'xzkptest' GROUP BY TABLE_SCHEMA; 參數(shù)說(shuō)明: TABLE_SCHEMA:數(shù)據(jù)庫(kù)名稱
輸出為空
統(tǒng)計(jì)指定庫(kù)中所有的存儲(chǔ)過(guò)程
SELECT `NAME` FROM MYSQL.PROC WHERE DB = 'xzkptest' AND `TYPE` = 'FUNCTION'; 參數(shù)說(shuō)明: DB:數(shù)據(jù)庫(kù)名稱
輸出為空
統(tǒng)計(jì)指定庫(kù)中所有的函數(shù)
SELECT `NAME` FROM MYSQL.PROC WHERE DB = 'xzkptest' AND `TYPE` = 'FUNCTION'; 參數(shù)說(shuō)明: DB:數(shù)據(jù)庫(kù)名稱
輸出為空
統(tǒng)計(jì)指定庫(kù)中所有的觸發(fā)器
SELECT TRIGGER_SCHEMA ,TRIGGER_NAME FROM MYSQL.TRIGGERS WHERE TRIGGER_SCHEMA= 'xzkptest'; 參數(shù)說(shuō)明: TRIGGER_SCHEMA:數(shù)據(jù)庫(kù)名稱
輸出為空
將指定庫(kù)中所有表數(shù)據(jù)量記錄到輔助表
SELECT TRIGGER_SCHEMA ,TRIGGER_NAME FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA= 'xzkptest'; 參數(shù)說(shuō)明: TABLE_SCHEMA:數(shù)據(jù)庫(kù)名稱
輸出為空
目標(biāo)庫(kù)
DM 目的端信息
調(diào)研項(xiàng) | 調(diào)研命令 |
服務(wù)器品牌/型號(hào) | dmidecode |
服務(wù)器操作系統(tǒng) | cat /etc/os-release |
內(nèi)存容量 | cat /proc/meminfo |
CPU 型號(hào)/核數(shù) | cat /proc/cpuinfo |
端口策略 | 是否與目的端網(wǎng)絡(luò)、端口互通 |
安全策略 | 是否有軟件、硬件相關(guān)安全限制(比如堡壘機(jī)、網(wǎng)閘、文件擺渡) |
是否具備可視化界面 | 可視化提供的方式(直連、Xmanager、VNC、BMC 等) |
其他 | / |
初始化參數(shù)設(shè)置
在安裝好達(dá)夢(mèng)數(shù)據(jù)庫(kù)后還需要初始實(shí)例用于對(duì)數(shù)據(jù)的管理,在初始實(shí)例時(shí)初始化參數(shù)尤為重要。
數(shù)據(jù)庫(kù)參數(shù) | 參數(shù)值 |
DB_NAME(數(shù)據(jù)庫(kù)名) | xzspkp |
INSTANCE_NAME(實(shí)例名) | xzspkp |
PORT_NUM(端口) | 5555 |
管理員、審計(jì)員、安全員密碼(安全版本特有) | 不推薦使用默認(rèn)密碼 |
EXTENT_SIZE(簇大小) | 16 |
PAGE_SIZE(頁(yè)大?。?/p> | 32 需要特別注意,如果設(shè)置過(guò)小遷移過(guò)程中會(huì)提示長(zhǎng)度不夠的報(bào)錯(cuò) |
LOG_SIZE (日志大小) | 2048M |
CHARSET(字符集) | UTF-8(一般是 UTF8,根據(jù)實(shí)際要求設(shè)置) |
CASE_SENSITIVE(大小寫敏感) | 不敏感(一般是不敏感,根據(jù)實(shí)際要求設(shè)置) |
BLANK_PAD_MODE(尾部空格填充) | 否 |
其中頁(yè)大小(page_size)、簇大?。╡xtent_size)、大小寫敏感(case_sensitive)、字符集(charset)、結(jié)尾空格填充(BLANK_PAD_MODE)一旦確定無(wú)法修改,需謹(jǐn)慎設(shè)置。
(1)CASE_SENSITIVE 大小寫是否敏感設(shè)置。CASE_SENSITIVE=1 大小寫敏感,包含 2 層意思:
① 表中數(shù)據(jù):區(qū)分大小寫。
② 對(duì)象名:對(duì)象名區(qū)分大小寫。
注意
通過(guò)管理工具建表時(shí),創(chuàng)建對(duì)象時(shí)不對(duì)對(duì)象名加雙引號(hào),工具會(huì)自動(dòng)將其轉(zhuǎn)為大寫。
MYSQL 建表默認(rèn)的字符編碼是 UTF8_GENERAL_CI,所以建議在 MYSQL 遷移到 DM 時(shí),在達(dá)夢(mèng)端設(shè)置成大小寫不敏感 CASE_SENSITIVE=0。如果 MYSQL 系統(tǒng)中使用的字符編碼是 UTF8_GENERAL_CS,那么建議達(dá)夢(mèng)端設(shè)置成大小寫敏感 CASE_SENSITIVE=1。MYSQL 設(shè)置大小寫敏感的細(xì)粒度可到字段級(jí)別,達(dá)夢(mèng)是實(shí)例級(jí)別的,一旦設(shè)置,后續(xù)不可修改,最終還需根據(jù)實(shí)際情況進(jìn)行權(quán)衡后再設(shè)置。
(2) MYSQL 中字符集編碼含義:
① UTF8_GENERA_CI:不區(qū)分大小寫,CI 為 CASE INSENSITIVE 的縮寫,即大小寫不敏感。
② UTF8_GENERAL_CS:區(qū)分大小寫,CS 為 CASE SENSITIVE 的縮寫,即大小寫敏感。
更多初始化參數(shù)的詳細(xì)說(shuō)明可參考達(dá)夢(mèng)數(shù)據(jù)庫(kù)安裝目錄下 doc 目錄中的《 DM8_dminit 使用手冊(cè)》或在數(shù)據(jù)庫(kù)運(yùn)行目錄 bin 目錄下執(zhí)行以下命令查看部分初始化參數(shù)說(shuō)明。
./dminit help
兼容性參數(shù)設(shè)置
參數(shù) | 備注 | |
COMPATIBLE_MODE | 是否兼容其他數(shù)據(jù)庫(kù)模式。0:不兼容,1:兼容 SQL92 標(biāo)準(zhǔn) 2:兼容 ORACLE 3:兼容 MS SQL SERVER 4:兼容 MYSQL 5:兼容 DM6 6:兼容 TERADATA。 | SELECT * FROM v$parameter WHERE name like '%COMPATIBLE_MODE%'; 默認(rèn)值0,0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata, 7:PG |
ORDER_BY_NULLS_FLAG | 控制排序時(shí) NULL 值返回的位置,取值 0、 1、2。 0 表示 NULL 值始終在最前面返回; 1 表示 ASC 升序排序時(shí) NULL 值在最后返回, DESC 降序排序時(shí) NULL 值在最前面返回, 在參數(shù)等于 1 的情況下, NULL 值的返回與 ORACLE 保持一致; 2 表示 ASC 升序排序時(shí) NULL 值在最前面返回, DESC 降序排序時(shí) NULL 值在最后返回,在參數(shù)等于 2 的情況下, NULL 值的返回與 MYSQL 保持一致。 | 2(兼容 MYSQL)。 |
MY_STRICT_TABLES | 是否開啟 STRICT 模式(嚴(yán)格模式),僅在 COMPATIBLE_MODE=4 時(shí)有效。0:不開啟,數(shù)據(jù)超長(zhǎng)時(shí)自動(dòng)截?cái)?;字符類型轉(zhuǎn)換數(shù)值類型(包括 INT、SMALLINT、TINYINT、BIGINT、DEC、FLOAT、DOUBLE)失敗時(shí),轉(zhuǎn)換為 0;1:開啟,數(shù)據(jù)超長(zhǎng)或計(jì)算錯(cuò)誤時(shí)報(bào)錯(cuò)。 | 建議值:1。 |
BLANK_PAD_MODE(尾部空格填充) | 否 |
創(chuàng)建實(shí)例
--df -h查看磁盤,在剩余空間大的目錄下創(chuàng)建實(shí)例數(shù)據(jù)目錄 mkdir -p /data/dmdb/xzspkp5555 chown -R dmdba:dinstall /data/dmdb/xzspkp5555 --圖形化創(chuàng)建實(shí)例 /data/dmdbms/tool ./dbca.sh --更改兼容模式為mysql vi /opt/dmdb/xzspkp5555/xzspkp/dm.ini COMPATIBLE_MODE = 4 #Server compatible mode, 0:none, 1:SQL92, 2:Oracle, 3:MS SQL Server, 4:MySQL, 5:DM6, 6:Teradata, 7:PG --重啟庫(kù) systemctl restart DmServicexzspkp.service --創(chuàng)建表空間dbtest,數(shù)據(jù)文件為DBTEST.DBF。 create tablespace "xzspkp" datafile '/opt/dmdb/xzspkp5555/xzspkp/xzspkp.DBF' size 2048 ; --更改密碼策略 sp_set_para_value(1,'PWD_POLICY',0); --創(chuàng)建用戶指定默認(rèn)表空間 授予常規(guī)權(quán)限 create user "xzspkp" identified by "xzspkp" default tablespace "xzspkp" default index tablespace "xzspkp"; grant "PUBLIC","RESOURCE","SOI","SVI","VTI" to "xzspkp";
遷移過(guò)程
創(chuàng)建遷移
- 打開 DMDTS 遷移工具點(diǎn)擊左上方的 3 色小圖標(biāo)新建遷移工程。
- 打開剛剛創(chuàng)建的工程,右鍵點(diǎn)擊“遷移”,選擇“新建遷移”,并自定義遷移名稱。
- 新建遷移完成后點(diǎn)擊下一步。
- 在“其它數(shù)據(jù)庫(kù)遷移到達(dá)夢(mèng)”選項(xiàng)中選擇遷移方式為 “MySQL ==> DM”。
連接數(shù)據(jù)庫(kù)
連接源端 MySQL 數(shù)據(jù)庫(kù)
輸入源端 MySQL 數(shù)據(jù)庫(kù)相關(guān)登錄信息,在“數(shù)據(jù)庫(kù)名”選項(xiàng)中選擇需要遷移的數(shù)據(jù)庫(kù)。
在創(chuàng)建連接 MySQL 數(shù)據(jù)庫(kù)時(shí)建議通過(guò)指定驅(qū)動(dòng)的方式來(lái)連接數(shù)據(jù)庫(kù),避免因?yàn)轵?qū)動(dòng)版本不適配等問(wèn)題導(dǎo)致遷移失敗。驅(qū)動(dòng)可以在 MySQL 官網(wǎng)獲取與 MySQL 遷移版本相對(duì)應(yīng)的驅(qū)動(dòng)。
連接目的端 DM 數(shù)據(jù)庫(kù)
輸入目的端 DM 數(shù)據(jù)庫(kù)相關(guān)登錄信息,選擇與源端對(duì)應(yīng)的遷移用戶連接數(shù)據(jù)庫(kù)。
配置遷移對(duì)象及策略
對(duì)象名大小寫
遷移對(duì)象方式及遷移策略中勾選“保持對(duì)象名大小寫”。
數(shù)據(jù)類型映射
本文檔采用場(chǎng)景2:自定義數(shù)據(jù)類型映射,因?yàn)殚_發(fā)要求如下:
根據(jù)開發(fā)反饋, 遷移過(guò)程中必須對(duì)部分類型MySQL轉(zhuǎn)換達(dá)夢(mèng)DM的對(duì)應(yīng)關(guān)系做出映射的:
MySQL類型 達(dá)夢(mèng)DM類型
decimal numeric
longtext CLOB
datetime TIMESTAMP
varchar varchar2
場(chǎng)景1:默認(rèn)數(shù)據(jù)類型映射
當(dāng)勾選了“使用默認(rèn)數(shù)據(jù)類型映射關(guān)系”后在遷移時(shí) DTS 會(huì)將源端 MySQL 數(shù)據(jù)庫(kù)中相應(yīng)的數(shù)據(jù)類型采用默認(rèn)的映射關(guān)系映射到目的端 DM 數(shù)據(jù)庫(kù)中。如果在這里勾選了“使用默認(rèn)數(shù)據(jù)類型映射關(guān)系”,后面又自定義了數(shù)據(jù)類型映射關(guān)系,DTS 會(huì)優(yōu)先選擇使用自定義的數(shù)據(jù)映射關(guān)系。
在“遷移策略”中點(diǎn)擊“查看數(shù)據(jù)類型映射關(guān)系”可以查看源端 MySQL 到目的端 DM 的數(shù)據(jù)類型映射關(guān)系,包括“源數(shù)據(jù)類型名”、“源精度”、“源標(biāo)度”、“目的數(shù)據(jù)類型名”、“目的精度”等等。
場(chǎng)景2:自定義數(shù)據(jù)類型映射
勾選源端待遷移的數(shù)據(jù)庫(kù)
這里需要勾選源端待遷移的數(shù)據(jù)庫(kù),由于 MySQL 端沒有模式所以這里模式顯示空,并不影響遷移。在 MySQL 數(shù)據(jù)庫(kù)連接階段指定了連接的數(shù)據(jù)庫(kù),所以這里只顯示了一條信息。
在指定模式階段,用戶可以通過(guò)“源模式”選擇源端要遷移的庫(kù),通過(guò)“目的模式”來(lái)指定源端要遷移到 DM 的模式,通過(guò)是否勾選“創(chuàng)建模式”、“表”、“視圖”、“存儲(chǔ)過(guò)程/函數(shù)”、“觸發(fā)器”來(lái)指定目的端 DM 是否要遷入源端 MySQL 中的這些對(duì)象。由于在 DM 數(shù)據(jù)庫(kù)準(zhǔn)備階段已經(jīng)提前將 XZSPKP 模式創(chuàng)建好了,所以這里就不勾選“創(chuàng)建模式”。
勾選源端數(shù)據(jù)庫(kù)中需要遷移的對(duì)象。
這里可以看到源端待遷移庫(kù)中所有的對(duì)象,用戶可以自定義選擇 MySQL 需要遷移的具體對(duì)象。
注意
在 SQL 評(píng)估階段不兼容的對(duì)象不需要勾選,待其它對(duì)象遷移完成后,再手動(dòng)修改和導(dǎo)入這些不兼容的對(duì)象。
用戶可以通過(guò)點(diǎn)擊右上方的“分析源對(duì)象”統(tǒng)計(jì)選中的源端待遷移對(duì)象。用戶可以通過(guò)該功能對(duì)源端遷移對(duì)象進(jìn)行統(tǒng)計(jì)分析,包括“源對(duì)象統(tǒng)計(jì)”、“源表統(tǒng)計(jì)”、“源表詳細(xì)”。
自定義對(duì)象遷移策略
待遷移具體對(duì)象勾選完畢后可以通過(guò)點(diǎn)擊轉(zhuǎn)換進(jìn)行自定義對(duì)象遷移策略。
- 自定義對(duì)象遷移策略。點(diǎn)擊轉(zhuǎn)換后可以設(shè)置表的映射關(guān)系,包括遷移策略和列映射選項(xiàng)。
(1)遷移策略
在遷移策略中可根據(jù)需要設(shè)置表及數(shù)據(jù)遷移的策略。在左側(cè)選項(xiàng)中可以選擇“表定義”、“主鍵”、“約束”、“索引”等的遷移策略;在右側(cè)選項(xiàng)中可以配置與遷移數(shù)據(jù)相關(guān)的策略。
完成映射關(guān)系的配置后,需要勾選“應(yīng)用當(dāng)前選擇項(xiàng)到其他同類對(duì)象”,選擇該選項(xiàng)后,將彈出對(duì)話框,選擇其他同類對(duì)象,將此策略應(yīng)用到相同對(duì)象上。如果不勾選“應(yīng)用當(dāng)前選擇項(xiàng)到其他同類對(duì)象”,那么配置的遷移策略只會(huì)對(duì)當(dāng)前選中的表生效。
本文檔不涉及。
開始遷移
檢查遷移任務(wù)
檢查遷移任務(wù),確認(rèn)遷移對(duì)象是否正確。檢查確認(rèn)后點(diǎn)擊“完成”即可開始遷移。
查看遷移進(jìn)度
遷移完成
到此這篇關(guān)于MySQL5.6遷移到DM8的文章就介紹到這了,更多相關(guān)MySQL5.6遷移到DM8內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL數(shù)據(jù)庫(kù)遷移實(shí)戰(zhàn)
- MySQL遷移到Oracle數(shù)據(jù)庫(kù)的超詳細(xì)步驟和方法總結(jié)
- 遷移Docker中MySQL容器的全過(guò)程
- MySQL根據(jù)條件遷移數(shù)據(jù)的幾種方法實(shí)現(xiàn)
- MySQL 和 SQL Server之間的數(shù)據(jù)遷移方法小結(jié)
- MySQL數(shù)據(jù)庫(kù)跨版本遷移的實(shí)現(xiàn)三種方式
- MySQL存儲(chǔ)路徑遷移的詳細(xì)步驟
- mysql數(shù)據(jù)庫(kù)遷移數(shù)據(jù)目錄至另一臺(tái)服務(wù)器詳細(xì)步驟
- MySQL億級(jí)數(shù)據(jù)平滑遷移雙寫方案實(shí)戰(zhàn)
相關(guān)文章
mysql通過(guò)binlog定時(shí)備份數(shù)據(jù)庫(kù)與恢復(fù)的方法
這篇文章主要介紹了mysql通過(guò)binlog定時(shí)備份數(shù)據(jù)庫(kù)與恢復(fù)的方法,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-12-12idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟
在IDE開發(fā)工具中也是可以使用mysql的,本文主要介紹了idea 設(shè)置MySql主鍵的實(shí)現(xiàn)步驟,文中通過(guò)圖文的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03Mysql計(jì)算字段長(zhǎng)度函數(shù)之CHAR_LENGTH函數(shù)
mysql中計(jì)算字符串長(zhǎng)度有兩個(gè)函數(shù)分別為char_length和length,char_length函數(shù)可以計(jì)算unicode字符,下面這篇文章主要給大家介紹了關(guān)于Mysql計(jì)算字段長(zhǎng)度函數(shù)之CHAR_LENGTH函數(shù)的相關(guān)資料,需要的朋友可以參考下2023-05-05