#安装与卸载

# 解压

上传YMP安装包至/home/ymp目录下然后解压:

# 切换至YMP安装目录
$ cd /home/ymp/
$ unzip yashan-migrate-platform-vxx.x.x.x-linux-xxx.zip
Copied!

# 安装参数调整

依据实际需要对默认内置库安装及YMP启动参数进行调整。

默认内置库安装配置文件

# db.properties
YASDB_PASSWORD=3uplbtbnyZ5XFRtpg5F5JQ== # 默认内置库sys用户默认密码密文
YASDB_PORT=8091 # 默认内置库默认端口号
YASDB_CHARACTER_SET=UTF8 # 默认内置库字符集,还可选择ASCII, ISO88591, GBK
Copied!

YMP配置文件

# YMP服务端口
server.port=8090

# 用户登录后空闲过期时间,单位秒(s),默认15分钟
shiro.session.timeout=900
# YMP使用的最大堆内存,支持按绝对内存指定(如:4G)和按物理机实际内存的百分比指定(如:50%),当迁移达梦数据库时,此值可以适当调大(建议≥16G)
ymp_memory=4G
# YMP使用的堆外内存,单位: GB
ymp_direct_memory=2
# YMP使用的时区ID
time_zone_id=GMT+8:00

# ========================================YMP内置数据库=============================================
# YMP内置数据库连接信息,若想自定义内置数据库则可以提前修改以下配置信息后再部署即可
spring.datasource.url=jdbc:yasdb://127.0.0.1:8091/yashan
spring.datasource.username=YMP_DEFAULT
spring.datasource.password=BPZ0VmrxlFoUgfm1UOS2pg==
spring.datasource.largePoolSize=64M
spring.datasource.cursorPoolSize=64M

# 默认内置库表类型,默认HEAP,可选HEAP,TAC,LSC
spring.datasource.defaultTableType=HEAP
spring.datasource.openCursors=3000
spring.datasource.sharePoolSize=2G
spring.datasource.dateFormat=yyyy-mm-dd hh24:mi:ss
spring.datasource.ddlLockTimeout=2

# ========================================评估=============================================

# YMP的最大并行任务数
task.parallel.max-num=500
# 预计数据迁移速度,KB/s。修改会影响评估结果预计迁移时间的大小
commons.dataMigrateSpeed=51200
# 预计对象迁移速度,number/s。修改会影响评估结果预计迁移时间的大小
commons.objMigrateSpeed=200
# 评估任务单个会话获取DDL的数量,如果Oracle性能较差,则需要降低该值
assessment.ddlCount=50
# 评估任务最多同时拥有的会话数,如果Oracle性能较差,则需要降低该值
assessment.maxThreadCount=20
# 评估内置库表类型是否为LSC,默认为false
isLscTable=false
# 拦截的Oracle数据源db/schema黑名单
schemaBlackList.oracle=ANONYMOUS,APEX_030200,APEX_PUBLIC_USER,APPQOSSYS,BI,CTXSYS,DBSNMP,DIP,EXFSYS,FLOWS_FILES,HR,IX,MDDATA,MDSYS,MGMT_VIEW,OE,OLAPSYS,ORACLE_OCM,ORDDATA,ORDPLUGINS,ORDSYS,OUTLN,OWBSYS,OWBSYS_AUDIT,PM,SCOTT,SH,SI_INFORMTN_SCHEMA,SPATIAL_CSW_ADMIN_USR,SPATIAL_WFS_ADMIN_USR,SYS,SYSMAN,SYSTEM,WMSYS,XDB,XS$NULL
# 拦截的MySQL数据源db/schema黑名单
schemaBlackList.mysql=information_schema,mysql,performance_schema,sys
# 拦截的dm数据源db/schema黑名单
schemaBlackList.dm=SYS,SYSDBA,SYSSSO,SYSAUDITOR,CTISYS

# ========================================迁移=============================================

# 元数据迁移过程中源端、目标端查询视图连接数。在元数据迁移过程中会有分批量的查询的动作, 需要开启多个查询连接并行查询。该参数配置元数据迁移的源端、目标端查询的并行线程数,决定了对数据库的查询最大连接数,不设置默认20
migration.parallel.query=20
# 元数据迁移过程中目标端执行创建连接数。在元数据迁移过程中会并行把对象在目标端的执行,以提升迁移效率。该参数配置元数据迁移的目标端DDL执行的并行线程数,决定了连接数据库的执行最大连接数,不设置默认20。migration.parallel.query和migration.parallel.execute的连接总和,是最终迁移过程中所有的目标端数据库连接数。
migration.parallel.execute=20
# 创建索引是否使用并行参数,true/TRUE:使用,false/FALSE:不使用
migration.parallel.createIndexUseParallel=true
# 索引创建的并行度,需要考虑migration.parallel.execute。例:migration.parallel.execute:10,migration.parallel.index: 5,表示,同时10个连接在并行建索引,每个索引的并行度是5(CREATE INDEX XXX PARALLEL 5)。不填默认CPU核数。
migration.parallel.index=5
# 数据迁移前是否将表设为nologging,默认为false
setNoLogging=false
# 导出方式,支持 [dts, jdbc] 两种方式
export.tool=jdbc
# 导出时每个csv文件的行数
export.csv.exportRowsEveryFile=2000000
# 迁移成功时候是否删除csv文件
export.csv.isRemoveCsvFileInSuccess=true
# csv文件存储路径包含对schema和table的拼接,schema名或table名中包含以上字符时,将会被替换,以避免被操作系统识别错误导致迁移失败;不过这可能会使某些表(比如AA$与AA.)在替换后使用的csv文件存储路径相同,导致迁移失败(No such file or directory),可以通过重新迁移失败表来解决
export.csv.path.replacement.from=\ /'."*$
# 发生csv文件存储路径字符替换时(详见export.csv.path.replacement.from),指定替换的目标字符或字符串
export.csv.path.replacement.to=_
# 导出时大表拆分的个数
export.table.splitCount=5
# 导出时触发大表拆分的行数
export.table.splitConditionCount=10000000
# 导出时触发大表拆分的表大小(G)
export.table.splitConditionSize=5
# 导出时带lob字段大表拆分的个数
export.lobTable.splitCount=5
# 导出时触发带lob字段大表拆分的行数
export.lobTable.splitConditionCount=1000000
# 导出时触发带lob字段大表拆分的表大小(G)
export.lobTable.splitConditionSize=5
# 使用jdbc导出时每个csv文件的最大行数
export.jdbc.thresholdForSplittingFileLines=5000000
# 使用jdbc导出时每个csv文件的最大大小(M)
export.jdbc.thresholdForSplittingFileSize=3072
# 一行数据中所有lob字段小于指定字节长度时会优化为行内导入
export.jdbc.lob.headSize=8192
# 在数据迁移阶段,源端数据类型是char、nchar、character时,移除数据右侧空格
export.jdbc.charRightTrim=true
# 在数据迁移阶段,源端数据类型是varchar、nvarchar时,移除数据右侧空格
export.jdbc.varcharRightTrim=false
# #yasldr More References: http://doc.yashandb.com/yashandb/22.2/zh/%E5%B7%A5%E5%85%B7%E6%89%8B%E5%86%8C/yasldr/yasldr%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC.html
# yasldr导入时的并行度
import.degree_of_parallelism=16
# yasldr导入时每批次的CSV数据行数
import.batch_size=2048
# yasldr导入方式,包括BASIC方式和BATCH方式
import.mode=BATCH
import.SENDERS=7
import.CSV_CHUNK_SIZE=128

# ========================================校验=============================================

# 校验任务限制每个数据源支持的最大连接数
checkTask.datasource.max-connection=500
# 校验任务获取连接超时时间,单位:ms
checkTask.datasource.connection-timeout=10000
# 校验任务获取的连接池中维持的最小连接数
checkTask.datasource.minimum-idle=0
# 校验任务的最大并行任务数
checkTask.task.parallel.max-num=20
# 校验任务的子任务的最大并行任务数,即一个任务多少个表在同时校验
checkTask.subTask.parallel.max-num=200
# 校验任务的全量校验对YashanDB的FLOAT数据类型的校验精度
checkTask.checkFloatPrecision=6
# 校验任务的全量校验对YashanDB的Double数据类型的校验精度
checkTask.checkDoublePrecision=15
# 校验任务的数据类型映射源端是char数据类型就移除源端和目标端的数据右侧空格进行对比
checkTask.charRightTrim=true
# 校验任务的数据类型映射源端是varchar数据类型就移除源端和目标端的数据右侧空格进行对比
checkTask.varcharRightTrim=false
# MySQL和DM的“”转换成NULL值进行校验
checkTask.emptyStringConvertToNull=true
# MySQL的数据类型YEAR、TIME、DATE、DATETIME、TIMESTAMP都是0值转换成NULL进行校验
checkTask.zeroDateConvertToNull=true
# LOB类型一次获取大小(数组长度)
checkTask.lobBufferSize=1024
# LOB类型差异展示长度,确保小于bufferSize(数组长度)
checkTask.lobPerformSize=200
# CLOB类型一次获取大小(数组长度)
checkTask.clobBufferSize=1080
Copied!

# 执行安装命令

您可通过以下命令查看脚本参数及其使用方法:

# 进入安装目录查看帮助
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh -h
Copied!

# 默认内置库安装YMP(推荐方案)

YMP安装时按默认方式自行安装YashanDB作为内置库。默认内置库相关信息:

  • 部署形态:单机
  • 集群名称:ymp
  • 安装目录:/home/ymp/yashan-migrate-platform/db

# 更改内置库SYS用户默认密码(可选)

# 进入安装目录执行更改密码命令,以yasdb_123为例:
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh password --sys yasdb_123
Copied!

Note:

仅在安装部署前执行前生效。

# 执行安装

方式一:安装内置库并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh install --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz
Copied!

方式二(Oracle做数据源的推荐方案):安装内置库和OCI客户端并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh install --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz --path /home/ymp/instantclient_xxx
Copied!

# 查看运行状态

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh status
 YMP is running, pid is 7747.
 Built-in database is used, pid is 7617.
Copied!

# 自定义内置库安装YMP

使用自定义内置库指使用外部的YashanDB数据库作为YMP的业务库使用,YMP安装时不再安装YashanDB数据库。

不能使用迁移的目标库作为自定义内置库。

修改配置文件

# 修改yashan-migration-platform/conf/application.properties文件

# 进入安装目录
$ cd /home/ymp/yashan-migrate-platform/

# 执行更改连接信息指令,指定自定义内置库的url,格式为 IP:PORT;默认可不指定username与password,即为默认的"YMP_DEFAULT"与"ymppw602"
$ sh bin/ymp.sh connection --url 192.168.x.x:xxxx

# 若需要在指定自定义数据库的时候修改用户信息(以用户YMP_NEW的密码为ymp_new为例),则可参考如下命令:
$ sh bin/ymp.sh connection --url 192.168.x.x:xxxx --username YMP_NEW --password ymp_new
Copied!

# 执行安装

方式一:安装yasldr依赖库并启动YMP

如无需使用Oracle到YashanDB的数据迁移功能,可通过这种方式部署。

# 进入安装目录执行卸载命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz
Copied!

方式二:(Oracle做数据源的推荐方案)安装yasldr依赖库和OCI客户端并启动YMP

# 进入安装目录执行安装命令
$ cd /home/ymp/yashan-migrate-platform/
$ sh bin/ymp.sh installnodb --db /home/ymp/yashandb-23.2.1.0-linux-x86_64.tar.gz --path /home/ymp/instantclient_xxx
Copied!

# 查看运行状态

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh status
 YMP is running, pid is 24116.
 Built-in database is not used!
Copied!

# 查看版本

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh -v
 Yashan-migrate-platform version: Release v23.2.1.0
 YashanDB SQL Enterprise Edition Release v23.2.1.0 x86_64
 YashanDB Loader Enterprise Edition Release v23.2.1.0 x86_64 faec879
Copied!

# 访问YMP

访问方式:http://IP:PORT/,PORT默认8090,初始账户名和密码是(admin/admin)。

测试访问页面

# 卸载YMP

 $ cd /home/ymp/yashan-migrate-platform/
 $ sh bin/ymp.sh uninstall
 
 # 使用uninstall功能时可携带-f参数,强制清理环境
 $ sh bin/ymp.sh uninstall -f
  
 # 验证
 $ ps -ef | grep yas
 ymp       20840  6322  0 10:02 pts/14   00:00:00 grep --color=auto yas
Copied!
  1. 卸载YMP时,会删除默认内置库(自定义内置库不受影响)并清空db和yashan_client文件夹,若想替换数据库版本,请在卸载后重新部署。
  2. 强制清理功能会使用kill -9强制清理当前用户下YMP启动的所有进程,并删除内置库及yasldr文件夹下所有内容,请谨慎使用,建议在专用的YMP用户下使用。
  3. 最后还需要手动删除~/.bashrc中与YashanDB有关的环境变量。